2010-08-21 14 views
11

Ich versuche, die Lautstärkeeinstellungen für jeden der verschiedenen Streams (Medien, Benachrichtigung, Klingelton usw.) anzupassen und eine Vorschau des Ausgangslautstärkepegels zu erhalten Strom. Ich glaube, dass ich die korrekte Implementierung habe, aber wenn ich den Ausgangsstromtyp einstelle, gibt es keinen Ton, der spielt.So stellen Sie den MediaPlayer-Audio-Stream-Typ richtig ein

Hier ist der Code, der richtig die ausgewählten Alarmton des Benutzers spielt:

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

, die aus Zeile kommentiert, was mir Probleme verursacht. Ich möchte den Alarmton bei den Lautstärkepegeln der verschiedenen Audiostreams hören, aber wenn ich diese Zeile für STREAM_ALARM oder einen anderen Audiostream verwende, wird überhaupt kein Ton wiedergegeben. Irgendwelche Ideen, was hier vor sich gehen könnte?

Antwort

23

Okay, ich fand die Lösung nach ein bisschen mehr Tests und es sieht so aus, für den Fall, dass jemand anderes in das gleiche Problem läuft, das ich hatte. Die MODIFY_AUDIO_SETTINGS-Berechtigung wird im Manifest benötigt, damit dies funktioniert.

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 
} 
Verwandte Themen