2010-08-21 21 views
11

Farklı akışların (ortam, bildirim, zil sesi, vb.) Her biri için ses ayarlarını ayarlama yolu oluşturmaya çalışıyorum ve her birinin çıkış ses düzeyini önizlemenin bir yolunu bulmaya çalışıyorum. Akış. Doğru uygulamaya sahip olduğuma inanıyorum, ama çıkış akışı türünü ayarladığımda, çalınan bir ses yok. dışarı satır yorumMediaPlayer ses akışı türünü doğru olarak ayarlama

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

bana sorun nedeni budur: İşte

doğru kullanıcının seçilen alarm sesi çalar koddur. Alarm sesini farklı ses akışlarının ses seviyelerinde duymak isterim, fakat bu satırı STREAM_ALARM veya başka bir ses akışı için eklediğimde, hiç bir ses çalmıyor. Burada neler olabileceği hakkında bir fikrin var mı?

cevap

23

Tamam, çözümü biraz daha fazla test ettikten sonra buldum ve böyle görünüyor, başkalarının da karşılaştığım aynı probleme girmesi durumunda. Bunun çalışması için Manifest'te MODIFY_AUDIO_SETTINGS iznine ihtiyaç vardır.

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 
} 
İlgili konular