最近在适配android O,遇到个问题,应用中原本有设置界面通过RingtonePreference 选择铃声,set到notification中,弹出通知的时候notification播放该铃声,由于需要较明显的提醒用户,所以使用的是alarm类型的铃声(铃声时间长)。
然而到了O上,所有notification必须强制使用notification channel, 一旦使用了这个,notification的铃声就由系统设置同一管理了,而且供选择的铃声范围限制在了预置的notification类型铃声(短促)和用户自己的音乐等,原本想使用alarm类型的铃声这些没法选了。
于是稍微研究了一下这个notification channel,发现应用在创建的时候可以通过setSound() 方法来预置一个铃声,于是赶紧把期望的alarm铃声传进去。发现notification弹出时确实是播放的预期的铃声,可是到了notification channel 的设置界面一看,由于传入的铃声不在它选择铃声的范围内,所以界面上会显示勾选的是它的默认通知铃声,这是一个bug,还有,一旦你在这个设置里修改了铃声,你再也没法用回之前期望的alarm铃声了,无论是在代码里update channel 也好,删除channel再重新创建也好,都没法修改铃声了(参考官方文档,居然就是这么设计的!),除非应用卸载重装或者清除数据,真是坑爹!
所以凡是使用notification并且有自定义notification铃声的应用,到了android O上都会有这样的问题。
Google的本意其实挺好,应用自己不需要在维护通知铃声相关的设置,统一放在系统设置由用户去选,而且既然是notification,就应该用notification类型的铃声,原本就是android的设计规范。就是苦了国内无数自定义铃声的app了。
目前看来解决办法只有 1.改需求 2.应用自己用mediaplayer播放铃声,然而这又是一个巨深的坑,铃声得跟着notification的生命周期走,还有无数特殊情况需要考虑(来电,静音,录音中等等等等,曾经趟过,惨不忍睹)
作者:苍风忍
链接:https://www.jianshu.com/p/26ca4cc16fd8
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
分享到:
相关推荐
Android切图注意事项,非常实用,AndroidUI必看@
毕业论文文献关于Android开发技术的描述,中文5000字
本篇文章是对在Android开发中的一些注意事项,需要的朋友可以参考下
目录这里我们分步解题:第一步:判断API第二步:...并且,这个通知渠道(Notification Channels)在API26(Android 8.0)以下的Android设备上运行是会崩溃的,所以这里我再次踩坑在低版本Android设备上崩溃了…
Android抖动动画效果(上下抖和以角旋转)
不过Android_Lightblue.apk在android5.0以上的版本手机上运行不起来,我也没有该app的源码。看看后面会不会有更新。对应博客地址:http://blog.csdn.net/chenliqiang12345678/article/details/50504406
android关于listview之列表分组,像Q上一样显示列表项
首先需要一个NotificationManager对象来对通知进行管理。代码如下 NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 2.使用一个Builder构造器来创建一个Notification...
《Android框架揭秘》通过对Android系统源代码的分析,主要介绍Android框架的初始化过程及主要组件的工作原理。作者直接分析和整理了Android框架的主要源代码,并详细讲解了理解框架工作原理所需的各种基础知识和构成...
1.5 更上一层楼——加入Android开发社区 1.6 本章小结 第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 ...
本文是一篇关于Android开发的英文文献,对于做毕业设计的外文翻译很有帮助,字数3 4千左右
《Android Studio实战 快速、高效地构建Android应用 全面涵盖关于Android Studio及其庞大工具生态系统的内容,包括Git和Gradle:除了介绍Android Studio与Git(用于源代码管理)和Gradle(一款构建及测试工具)的无缝...
Android串口通信(Android Studio) serial Port 简单的demo 好久之前整的
这是Android开发要求及规范,不熟悉的童鞋可以看一看哦!
1.5 更上一层楼——加入Android开发社区 1.6 本章小结 第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 ...
android源码下载android源码下载android源码下载
第15章“Android应用程序的设计思想”,本章的内容是基于通用的应用程序和GUI程序的通用设计思想,结合Android系统自身的特点,提出一些值得注意的问题和设计方法。 本书读者 本书适应广大的读者群,力求在...
# mv /opt/android-sdk/platforms/android-25/android-7.1.1/* /opt/android-sdk/platforms/android-25/ # rm -rf /opt/android-sdk/platforms/android-25/android-7.1.1 官网下载地址:...
实现了地图上A-Z字母的图片创建工作,后期工作根据信息在地图上标注在进一步实现中
在android上实现仿窗帘拉动效果,图片自由上下拉伸显示。