当前位置: 代码迷 >> Android >> 如何直接调用系统设置好的闹钟(自己解决了,来几个收分的)
  详细解决方案

如何直接调用系统设置好的闹钟(自己解决了,来几个收分的)

热度:36   发布时间:2016-04-28 03:39:39.0
怎么直接调用系统设置好的闹钟(自己解决了,来几个收分的)
本帖最后由 TheUnforgiven 于 2014-11-20 18:20:18 编辑
我自己的程序想直接调用系统设置的闹钟,具体点说就是,我的程序在某一时间要播放一段声音,这个声音是系统的闹钟的声音文件,播放的音量也是系统的闹钟设置的音量。
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();
 }
------解决思路----------------------
先谢过楼主了
------解决思路----------------------
楼主好人一生平安
------解决思路----------------------
楼主好人
------解决思路----------------------
楼主好人
------解决思路----------------------
谢谢楼主,我收
------解决思路----------------------
.laile
  相关解决方案