Nella documentazione, si dice:setStreamMute mai riattiva
Il comando di silenziamento è protetto contro la morte processo client: se un processo con una richiesta mute attiva su un flusso muore, questo flusso sarà riattivato automaticamente.
Le richieste di silenziamento per un determinato flusso sono cumulative: l'AudioManager può ricevere diverse richieste di silenziamento da uno o più client e lo streaming verrà riattivato solo quando viene ricevuto lo stesso numero di richieste di audio.
Bene, il primo paragrafo è vero; Ogni volta che il mio processo muore, tutti i flussi silenziati vengono automaticamente riattivati. Tuttavia, non importa quante volte chiamo setStreamMute(someStream, false)
, non si attiva MAI. L'ultima volta che ho provato a chiamarlo più di 1 milione di volte dopo aver disattivato solo ONCE e NOTHING!
Solo per citare - Se lo riattivo con lo stesso metodo, lo silenzio - rimane immutato. Ma alla prossima chiamata allo stesso metodo - non riattiva mai.
Sto muto in un metodo Ricevitore Broadcast su Ricevi, che inizio a utilizzare un gestore allarmi. Quindi forse perché la mia app è stata uccisa durante l'intervallo tra la chiamata di muting e quella di smorzamento? (Ma la mia applicazione rimane ancora in RAM)
Può essere questo problema perché io non sto tenendo un riferimento alle AlarmManager (Come istanze diverse di volta in volta?)
Qualcuno verificare questo problema?
Sto usando una versione di Android 4.0 e lo stesso problema qui, dai un'occhiata http://stackoverflow.com/questions/14899395/how-to-mute-and-unmute-it-on-the-onpause- and-onresume –
Mantieni un riferimento alla stessa istanza di 'AudioManager' (Preferibilmente come membro della tua classe di attività) – Jong