Android MediaPlayer – cómo jugar en el STREAM_ALARM?

He intentado ajustes la corriente audio del jugador de medios en mi uso usando el código siguiente pero cuando hago esto no oigo ningún sonido en el emulador. Si no configuro el flujo para el reproductor, el audio se reproducirá correctamente. Estoy seguro de que estoy usando este mal, pero no puede ejercer cómo, cualquier ayuda?

MediaPlayer player = MediaPlayer.create(getApplicationContext(), R.raw.test_audio); AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE); audioManager.getStreamVolume(AudioManager.STREAM_ALARM); audioManager.setStreamVolume(AudioManager.STREAM_ALARM, audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); player.setAudioStreamType(AudioManager.STREAM_ALARM); player.start(); 

Nota: He añadido el permiso MODIFY_AUDIO_SETTINGS a mi manifiesto ya.

¡Gracias!

No sé por qué sucedería esto, sin embargo el código abajo trabaja. Debe establecer el origen de datos con setDataSource() lugar de con create() .

Este código funciona:

 MediaPlayer mp = new MediaPlayer(); mp.setAudioStreamType(AudioManager.STREAM_ALARM); mp.setDataSource(this,Uri.parse("android.resource://PACKAGE_NAME/"+R.raw.soundfile)); mp.prepare(); mp.start(); 

Este código no funciona:

 MediaPlayer mp = MediaPlayer.create(this, R.raw.soundfile); mp.setAudioStreamType(AudioManager.STREAM_ALARM); mp.prepare(); mp.start(); 

El problema es que está utilizando MediaPlayer.create() para crear su MediaPlayer. Create función llama a la función prepare() que finaliza su medio y no le permite cambiar AudioStreamType .

La solución está usando setDataSource lugar de create :

 MediaPlayer mp = new MediaPlayer(); mp.setAudioStreamType(AudioManager.STREAM_ALARM); mp.setLooping(true); try { mp.setDataSource(getApplicationContext(), yourAudioUri); mp.prepare(); } catch (IOException e) { e.printStackTrace(); } mp.start(); 

Vea este enlace para más información.

1. setAudioStreamType (int streamtype)

Debe llamar a este método antes de preparar ();

2. MediaPlayer.create (Contexto contextual, int resid)

En caso de éxito, prepare () ya se ha llamado y no se debe volver a llamar.

Pruebe lo siguiente:

 player.setAudioStreamType(AudioManager.STREAM_ALARM); player.prepare(); player.start(); 

¿Y por qué llamas "audioManager.getStreamVolume (AudioManager.STREAM_ALARM);"? El valor no se almacena en una variable, por lo que es bastante inútil;)

Espero que ayudara

  • El sonido de los medios de comunicación de teléfono deja de reproducir después de 5 veces
  • Android Reproducción de archivos de película en un fondo de pantalla en vivo
  • Cómo transmitir contenido autenticado con MediaPlayer en Android
  • Subtítulos / Soporte de subtítulos en Android
  • Problemas con MediaPlayer para Android: "Error (-38, 0)" y "stop llamado en estado 1"
  • Android: Media Player Advertencia (1,44)
  • Error de preparación de MediaPlayer para Android: status = 0x1
  • Vitamio Media Player Licencias
  • Android MediaPlayer - error (1, -4) al reproducir una canción
  • El video no se reproduce en Android
  • ¿Cómo se incluyen los encabezados http con MediaPlayer setDataSource?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.