我正在制作一个警报应用。我需要播放用户选择的音调,我通过RingtoneManager
设置。
当闹钟响起时,这就是我播放闹铃音的方式:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Uri alarmSound = prefs.getString("alarmSound", ""); //alarmSound is the Uri of alarm tone
MediaPlayer mp = MediaPlayer.create(NormalAlarm.this, alarmSound);
try
{
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setLooping(true);
mp.start();
}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
它工作正常,但它使用的音量当然是手机的Media Volume
。如何使其与Alarm Volume
手机配合使用?
我正在使用MediaPlayer
,因为我希望警报音重复,直到用户停止闹钟。
感谢您的帮助!
答案 0 :(得分:3)
MediaPlayer.setAudioStreamType()正是您所寻找的:
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setLooping(true);
mp.start();
答案 1 :(得分:0)
问题是您使用MediaPlayer.create()
来创建MediaPlayer。 Create
函数会调用最终确定媒体的prepare()
函数,但不允许您更改AudioStreamType
。
解决方案是使用setDataSource
而不是create():
MediaPlayer mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setLooping(true);
try {
mp.setDataSource(NormalAlarm.this, alarmSound);
mp.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mp.start();
有关详细信息,请参阅this link。