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

我自己的程序想直接调用系统设置的闹钟,具体点说就是,我的程序在某一时间要播放一段声音,这个声音是系统的闹钟的声音文件,播放的音量也是系统的闹钟设置的音量。
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();
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值