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.
- Android Streaming Wav Error de audio: Preparación de MediaPlayer: status = 0x1
- Android ExoPlayer: ¿Resuelve el problema de reproducción sin interrupciones / sin fisuras que está roto para el reproductor de medios Android
- Mediaplayer actualización de progreso a seekbar no suave?
- Reproductor de medios de Android: descargue a archivo y secuencia de archivo
- ¿Debería un MediaPlayer ejecutarse en hilos separados?
¡Gracias!
- Ecualizador - Biblioteca de efectos no cargada
- Cómo cambiar el User-agent por defecto en mediaplayer del android
- Error de MediaPlayer de Android: Error de MediaPlayer (1, -2147483648) en Stream de Internet
- Cámara no funciona?
- Uso de WakeLock para mantener una reproducción en secuencia
- ¿Cómo uso Android ProgressBar en modo determinado?
- Jugar dos sonidos Simutaneosly
- ¿Cómo resolver "reproductor multimedia Android detener automáticamente después de algún tiempo en streaming"?
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