我自己的程序想直接调用系统设置的闹钟,具体点说就是,我的程序在某一时间要播放一段声音,这个声音是系统的闹钟的声音文件,播放的音量也是系统的闹钟设置的音量。
mediaplayer默认播放的是STREAM_MUSIC,而我希望用的是STREAM_ALARM。
原因很简单,用户比如在听音乐看视频等操作时会经常通过音量键改变STREAM_MUSIC的音量大小,有时甚至会设为0。而我希望我的程序中的闹钟不受STREAM_MUSIC的音量设置的影响,那么最好的方法是使用STREAM_ALARM的音量,因为这个音量一旦设置好,用户很少会去碰它。(题外话,我的mi2机器中的闹钟在响起的时候音量键无效,怎么弄的呢)
现在问题是这样,我不知道什么原因,也许是我语句还差点什么,使用STREAM_ALARM后,闹铃不响,如下:
-----------------------------------------
MediaPlayer mp = MediaPlayer.create(this, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM));//调用系统设置的闹钟文件
mp.setAudioStreamType(AudioManager.STREAM_ALARM);//出问题的一句
mp.setLooping(true);
mp.start();
-----------------------------------------
上面的代码播放不出声音,而如果删除第二句或将其中的STREAM_ALARM改为STREAM_MUSIC即能正常播放。
请高手指点,谢谢。
以下为答案:
似乎用 MediaPlayer.create不行,可能create里面绑了很多默认设置?或许吧
MediaPlayer mp=new MediaPlayer();
try {
mp.setDataSource(this,RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM));//直接使用系统设置的闹钟文件。
mp.setAudioStreamType(AudioManager.STREAM_ALARM);//设置mp使用的声音模式,不然会用STREAM_MUSIC播放
mp.prepare();
mp.setLooping(true);//循环
mp.start();
} catch (Exception e) {
e.printStackTrace();
}
mediaplayer默认播放的是STREAM_MUSIC,而我希望用的是STREAM_ALARM。
原因很简单,用户比如在听音乐看视频等操作时会经常通过音量键改变STREAM_MUSIC的音量大小,有时甚至会设为0。而我希望我的程序中的闹钟不受STREAM_MUSIC的音量设置的影响,那么最好的方法是使用STREAM_ALARM的音量,因为这个音量一旦设置好,用户很少会去碰它。(题外话,我的mi2机器中的闹钟在响起的时候音量键无效,怎么弄的呢)
现在问题是这样,我不知道什么原因,也许是我语句还差点什么,使用STREAM_ALARM后,闹铃不响,如下:
-----------------------------------------
MediaPlayer mp = MediaPlayer.create(this, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM));//调用系统设置的闹钟文件
mp.setAudioStreamType(AudioManager.STREAM_ALARM);//出问题的一句
mp.setLooping(true);
mp.start();
-----------------------------------------
上面的代码播放不出声音,而如果删除第二句或将其中的STREAM_ALARM改为STREAM_MUSIC即能正常播放。
请高手指点,谢谢。
以下为答案:
似乎用 MediaPlayer.create不行,可能create里面绑了很多默认设置?或许吧
MediaPlayer mp=new MediaPlayer();
try {
mp.setDataSource(this,RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM));//直接使用系统设置的闹钟文件。
mp.setAudioStreamType(AudioManager.STREAM_ALARM);//设置mp使用的声音模式,不然会用STREAM_MUSIC播放
mp.prepare();
mp.setLooping(true);//循环
mp.start();
} catch (Exception e) {
e.printStackTrace();
}