sezioni Audio su Android sta per essere abbastanza orribile per un po '. Le API sono piuttosto strane, scarsamente documentate e continuano a cambiare/deprecare/rompere tra le versioni. Anche il codice AudioManager
contiene FIXMEs.
In ogni caso, ci sono diversi tipi di streaming in Android (musica, notifiche, telefonate, ecc.) E le applicazioni hanno lo scopo di scegliere quello appropriato per la riproduzione. Immagino che la maggior parte delle app Android debbano utilizzare il tipo di musica/media (STREAM_TYPE_MUSIC
). Si imposta su MediaPlayer
utilizzando il metodo setAudioStreamType
.
L'SDK non consente di impostare un unico flusso tipo come solista — causando tutti gli altri corsi d'acqua per essere disattivato — ma io non credo che si possa identificare l'audio viene riprodotto da applicazioni particolari e in qualche modo mettere in pausa/Riattiva esso. Applicazioni musicali in generale, utilizzeranno il PhoneStateListener
per mettere in pausa se stessi quando arriva una chiamata.
Quindi nel tuo caso, si potrebbe "prendere in prestito" il flusso di chiamata per il vostro MediaPlayer
e utilizzare il metodo di chiamata AudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true)
quando la riproduzione inizia, quindi un -solo il flusso con false
quando la riproduzione o il tuo Activity
è fatto.
posso dirvi che questo funziona, ma non riesco a ricordare due piedi se è necessario impostare anche la modalità audio -MODE_IN_CALL
quando si utilizza il flusso di chiamata vocale (come questo: AudioManager.setMode(AudioManager.MODE_IN_CALL)
). Se ritieni che sia necessario, assicurati di restituire la modalità a MODE_NORMAL
al termine della riproduzione, altrimenti ogni volta che premi i tasti del volume, verrà indicato "Volume di chiamata"! Tuttavia, se e quando si desidera tornare a MODE_NORMAL
, è necessario verificare che non sia in corso una vera telefonata in quel momento ...
Forse potresti usare un altro tipo di flusso piuttosto che una chiamata vocale, ma sto solo parlando dall'esperienza di lavoro su un'app che potrebbe utilizzare sia il vivavoce che l'auricolare per la riproduzione audio, che richiede l'uso del flusso di chiamate vocali.
Come ho detto, la manipolazione audio non è particolarmente divertente ...;)
Grazie Christopher, il vostro consiglio era perfetto. Ho effettivamente dirottato, lo STREAM_ALARM, che si adatta al mio scopo, l'ho impostato su solo e questo ha l'effetto desiderato. Grazie ancora. –
Whoops, non è una buona idea, almeno non con le cuffie. Torna a VOICE_CALL. Non sembra aver bisogno di MODE_IN_CALL, almeno non così lontano. –