¿Cómo reproducir audio a través del altavoz incluso cuando el auricular está conectado?
El título de la pregunta puede parecer repetido, pero mi problema es a veces un problema y provoca fallas. He utilizado el siguiente código para reproducir a través del altavoz cuando el auricular está enchufado.
AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE); audioManager.setMode(AudioManager.STREAM_MUSIC); audioManager.setSpeakerphoneOn(true); if(! Globals.mediaPlayer.isPlaying()){ Globals.mediaPlayer.start(); }
El código anterior reproduce el audio de las siguientes maneras: 1. Muy pocas veces, se reproduce perfectamente. 2. La mayoría de las veces, se reproduce con un sonido de bucle en el fondo. 3. Pocas veces, no juega nada.
- Android - Cómo obtener la lista de parámetros de AudioManager / AudioSystem
- Android - ¿es posible saber qué aplicación tiene audiofocus?
- ¿Existe alguna función equivalente de requestAudioFocus en Android API nivel 7?
- Comprobar constantemente el cambio de volumen en los servicios de Android
- Android: Get Notified cuando el modo actual dentro de AudioManager se cambia
Parece que los sonidos del sistema se reproducen sin errores cuando el auricular está enchufado. Por ejemplo: al configurar el tono de llamada, se reproduce el tono de llamada correspondiente correctamente sin problemas. Por favor, ayúdame a entender cómo puedo reproducir un sonido correctamente a través del altavoz con el auricular enchufado.
- Cómo proporcionar vibraciones personalizadas en las llamadas entrantes específicas
- Detección de auriculares conectados - isWiredHeadsetOn () sólo funciona con auriculares
- AudioManager.isWiredHeadsetOn () no funciona en android
- Android 5.0+ AudioManager setMode no funciona
- Recuperación del nombre de la aplicación que tiene cambio de enfoque de audio
- Volumen de auriculares de enlace de Android al volumen principal
- Controlar las teclas de volumen
- No es capaz de lograr un loop de audio Gapless hasta ahora en Android
Tuve un problema similar que he resuelto, la creación de un reproductor de medios de nuevo si no está jugando y la configuración del reproductor multimedia tipo de corriente al mismo modo del administrador de audio, intente con algo como esto:
AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE); audioManager.setMode(AudioManager.STREAM_MUSIC); audioManager.setSpeakerphoneOn(true); if(! Globals.mediaPlayer.isPlaying()){ MediaPlayer mp = MediaPlayer.create(....); mp.setAudioStreamType(AudioManager.STREAM_MUSIC); mp.start(); }
En mi caso estaba usando AudioManager.MODE_IN_COMMUNICATION. También asegúrese de establecer el permiso
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
En el archivo AndroidManifest.xml
Después de trabajar en él un poco (quizás más que eso), encontré la solución para él.
En lugar de cambiar la configuración de AudioManager, debemos crear nuestra propia instancia de MediaPlayer y establecer el tipo de secuencia de audio para esa instancia. Podemos configurarlo en STREAM_RING para encaminar el audio al auricular y al altavoz.
player.reset(); player.setAudioStreamType(AudioManager.STREAM_RING); try { player.setDataSource(context, uri); player.prepareAsync();}
A continuación, puede escuchar onPreparedListener para iniciar el audio. Por favor, consulte el blog Ruta de audio a través de orador en Android para obtener una mejor imagen.