簡體   English   中英

如何正確設置MediaPlayer音頻流類型

[英]How to correctly set MediaPlayer audio stream type

我正在嘗試創建一種方法來調整每個不同流(媒體,通知,鈴聲等)的音量設置,並有辦法預覽每個流的輸出聲級。 我相信我有正確的實現,但是當我設置輸出流類型時,沒有播放的聲音。

以下是正確播放用戶所選鬧鍾聲音的代碼:

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

注釋掉的是造成我問題的原因。 我想在不同音頻流的音量級別聽到警報聲,但是當我為STREAM_ALARM或任何其他音頻流包含該行時,根本沒有聲音播放。 有什么想法可以在這里發生什么?

好的,經過一些測試后我找到了解決方案,它看起來像這樣,以防其他人遇到我遇到的同樣問題。 Manifest中需要MODIFY_AUDIO_SETTINGS權限才能使用此權限。

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM