推送通知自定义提示声音
2016-04-19 11:26
169 查看
在自定义推送通知声音的时候,推送如果不是使用自定义消息,而是应用平台默认的通知的话,一般可能没有办法设置自定义的声音。解决办法。
为了修改自定义声音可以使用自定义消息,但是为了不增加额外的工作量,可以在receiver接收到通知的时候自定义播放一段铃声。
播放铃声的代码片段:
为解决这个问题可以将Ringtone对象设置为成员变量,类中只保留一个该对象,如果对象不为null就不再创建该对象,如果铃声没有播放完之前不再次播放铃声。
修改代码片段:
通过调用isPlaying()方法就可以监听有铃声没有播放完。
这里面有一个问题就是:不用将Ringtone只简单的变为成员变量,为了使该类中只有一个改对象,应该将对象变为静态:
否则:在走该方法的时候mRingtone依然为null,每次依然都会创建该对象。因为mRingtone是新创建对象,所有isPlaying()返回的都是false,达不到想要的目标。(为什么会这样,内部原因还不是很清楚,仍在学习中。)
为了修改自定义声音可以使用自定义消息,但是为了不增加额外的工作量,可以在receiver接收到通知的时候自定义播放一段铃声。
播放铃声的代码片段:
public void playSound() { String uri = "android.resource://" + context.getPackageName() + "/"+R.raw.mysound; Uri no=Uri.parse(uri); Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), no); r.play(); }但是有的推送平台的推送会遇到一个问题就是:在app用户登录时,会有时一次收到n多个推送的情况,如果每次都简单的用以上片段播放一段铃声的话,声音一下子叠加在一起,很乱,用户体验很差。
为解决这个问题可以将Ringtone对象设置为成员变量,类中只保留一个该对象,如果对象不为null就不再创建该对象,如果铃声没有播放完之前不再次播放铃声。
修改代码片段:
//播放自定义的声音 public synchronized void playSound(Context context) { if (!allowMusic) { return; } if (mRingtone == null) { LogUtil.log("----------初始化铃声----------"); String uri = "android.resource://" + context.getPackageName() + "/" + R.raw.order_remind; Uri no = Uri.parse(uri); mRingtone = RingtoneManager.getRingtone(context.getApplicationContext(), no); } if (!mRingtone.isPlaying()) { LogUtil.log("--------------播放铃声---------------" + mRingtone.isPlaying()); mRingtone.play(); } }
通过调用isPlaying()方法就可以监听有铃声没有播放完。
这里面有一个问题就是:不用将Ringtone只简单的变为成员变量,为了使该类中只有一个改对象,应该将对象变为静态:
private static Ringtone mRingtone;
否则:在走该方法的时候mRingtone依然为null,每次依然都会创建该对象。因为mRingtone是新创建对象,所有isPlaying()返回的都是false,达不到想要的目标。(为什么会这样,内部原因还不是很清楚,仍在学习中。)
相关文章推荐
- App缓存管理
- 给数据库中的表造数据
- win7系统使用百度搜索资料时自动跳转到搜狗搜索的故障原因及解决方法
- java导出pdf
- puppet自定义fact
- [转]SpringMVC 中文件上传 MultipartResolver--经典
- 关于App版本判断 与 AppStore比对
- iOS的主要常用框架介绍
- OpenCV安装
- 【mysql】:mysql性能优化的21条经验
- Android 传感器hal层分析
- UVA_474_Heads / Tails Probability
- Oracle查看错误编码命令
- IT部门的职能转变
- PHP MYSQL 搜索周边坐标,并计算两个点之间的距离
- selenium结合sikuli实现百度的图片搜索功能
- CAS实现单点登录原理与实例解析
- 简易Fragement主界面导航
- 工厂方法模式
- 永不失联!如何实现微服务架构中的服务发现?