2010-08-21 33 views
11

Estoy intentando crear una forma de ajustar la configuración de volumen para cada una de las diferentes transmisiones (medios, notificaciones, tonos de llamada, etc.) y obtener una vista previa del nivel de sonido de salida de cada corriente. Creo que tengo la implementación correcta, pero cuando configuro el tipo de flujo de salida, no se reproduce ningún sonido.Cómo configurar correctamente el flujo de audio MediaPlayer tipo

Este es el código que se reproduce correctamente sonido de la alarma seleccionada del usuario:

Uri mediaUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
MediaPlayer mp=MediaPlayer.create(getApplicationContext(), mediaUri); 
//mp.setAudioStreamType(AudioManager.STREAM_ALARM); 
mp.start();` 

Eso comentó salida de línea es lo que me está causando problemas. Me gustaría escuchar la alarma sonar a los niveles de volumen de las diferentes secuencias de audio, pero cuando incluyo esa línea para STREAM_ALARM o cualquier otra transmisión de audio, no se reproduce ningún sonido. ¿Alguna idea de lo que podría estar pasando aquí?

Respuesta

23

Bien, encontré la solución después de un poco más de prueba y se ve así, en caso de que alguien más se encuentre con el mismo problema que estaba teniendo. El permiso MODIFY_AUDIO_SETTINGS es necesario en el Manifiesto para que esto funcione.

AudioManager am=(AudioManager)getSystemService(Context.AUDIO_SERVICE); 
am.setMode(AudioManager.MODE_NORMAL); 
MediaPlayer mp=new MediaPlayer(); 
Uri ringtoneUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
try 
{ 
    mp.setDataSource(getApplicationContext(), ringtoneUri); 
    mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); 
    mp.prepare(); 
    mp.start(); 
} 
catch(Exception e) 
{ 
    //exception caught in the end zone 
} 
Cuestiones relacionadas