Android 如何正确设置MediaPlayer音频流类型

Android 如何正确设置MediaPlayer音频流类型,android,audio,Android,Audio,我正在尝试创建一种方法来调整每个不同流(媒体、通知、铃声等)的音量设置,并有一种方法来预览每个流的输出音量。我相信我有正确的实现,但是当我设置输出流类型时,没有声音播放 以下是正确播放用户所选报警声音的代码: Uri mediaUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); MediaPlayer mp=MediaPlayer.create(getApplicationContext(), mediaUri); //m

我正在尝试创建一种方法来调整每个不同流(媒体、通知、铃声等)的音量设置,并有一种方法来预览每个流的输出音量。我相信我有正确的实现,但是当我设置输出流类型时,没有声音播放

以下是正确播放用户所选报警声音的代码:

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

这句被注释掉的话正是给我带来问题的原因。我希望在不同音频流的音量级别听到警报声,但当我将该行包括在STREAM_alarm或任何其他音频流中时,根本没有声音播放。你知道这里会发生什么吗?

好的,我在经过一点测试后找到了解决方案,看起来是这样的,以防其他人遇到与我相同的问题。清单中需要“修改音频设置”权限才能使其工作

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
}

为什么你得到am却从不使用它?