¿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.

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.

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.

  • ¿Qué es el enfoque de audio en la clase Android AudioManager?
  • Buscando un ejemplo de la nueva API de Android setMediaButtonReceiver
  • SetStreamMute nunca interrumpe
  • ¿Cuál es la diferencia entre los tipos de flujo de AudioManager a bajo nivel?
  • La transmisión de audio se detiene después de 5 segundos
  • La pista de audio no funciona a través de Bluetooth en Samsung S6
  • ¿Por qué AudioManager.isStreamMuted no está disponible?
  • Android recibe difusión en el cambio de enfoque de audio
  • SetVolumeControlStream no funciona en ICS
  • Android AudioManager.setMode (MODE_NORMAL) falla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.