la manipulación de audio en Android va a ser bastante horrible por un tiempo. Las API son bastante extrañas, están mal documentadas y siguen cambiando/desaprobando/rompiendo entre versiones. Incluso el código AudioManager
tiene FIXMEs en él.
De todos modos, hay varios tipos de secuencias en Android (música, notificaciones, llamadas telefónicas, etc.) y las aplicaciones están destinadas a elegir la adecuada para la reproducción. Me imagino que la mayoría de las aplicaciones de Android deberían usar el tipo de música/medios (STREAM_TYPE_MUSIC
). Usted configura esto en su MediaPlayer
usando el método setAudioStreamType
.
El SDK no le permiten establecer un único flujo tipo como solista — haciendo que todos los otros flujos que se silenciarán — pero no creo que pueda identificar el audio reproducido por aplicaciones particulares y de alguna manera hacer una pausa/Reanudar eso. aplicaciones de música en general utilizarán el PhoneStateListener
para hacer una pausa sí mismos cuando entra una llamada.
Así, en su caso, usted podría "tomar prestada" la corriente llamada telefónica para su MediaPlayer
y utilizar el método llamado AudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true)
cuando comience la reproducción, entonces la ONU -solo la secuencia con false
cuando la reproducción o su Activity
está hecho.
te puedo decir que esto funciona, pero no puedo recordar la ligera si es necesario configurar también el modo de audioa MODE_IN_CALL
cuando se utiliza el flujo de llamada de voz (como este: AudioManager.setMode(AudioManager.MODE_IN_CALL)
). Si considera que es necesario, debe asegurarse de regresar al modo MODE_NORMAL
una vez que finalice la reproducción; de lo contrario, cada vez que presione las teclas de acceso rápido de volumen, aparecerá el mensaje "Volumen durante la llamada". Sin embargo, si desea volver a cambiar al MODE_NORMAL
, debe verificar que no haya una llamada de teléfono genuina en ese momento ...
Quizás podría usar otro tipo de transmisión en lugar de la llamada de voz, pero estoy hablando por experiencia trabajando en una aplicación que podría usar el altavoz o el auricular para la reproducción de audio, que requiere el uso de la transmisión de llamadas de voz.
Como he dicho, la manipulación de audio no es especialmente divertido ...;)
Gracias Christopher, su consejo era perfecto. De hecho, he secuestrado, el STREAM_ALARM, que se adapta a mi propósito, lo configuré en solo y esto tiene el efecto deseado. Gracias de nuevo. –
Vaya, no es una buena idea, al menos no con auriculares. Volver a VOICE_CALL. No parece necesitar MODE_IN_CALL, al menos no hasta ahora. –