Android8.0 通知栏适配(播放器)

附上源码地址 https://github.com/ZhongchengWu/NotificationBar

Android 8.0系统新增了通知栏渠道。

首先,如果你升级了appcompat库,那么所有使用appcompat库来构建通知的地方全部都会进行废弃方法提示,如下所示:


所以,一定要对通知栏进行适配。


创建好项目之后,打开app/build.gradle文件检查一下,确保targetSdkVersion已经指定到了26或者更高

compileSdkVersion28

defaultConfig{

    applicationId"com.example.wuzhongcheng.notificationbar"

    minSdkVersion26

    targetSdkVersion28

    versionCode1

    versionName"1.0"

    testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"

}

首先要确保的是当前手机的系统版本必须是Android 8.0系统或者更高,因为低版本的手机系统并没有通知渠道这个功能,我做了一个判断,从而创建了通知渠道。


NotificationCompat.Builder 用来设置一些通知栏的属性

Channel是渠道

Manager用来对通知栏进行一些更新或者删除


像播放器这种,如何对通知栏的按钮设置点击?


RemoteViews没有专门的setOnclickListener方法,但是我们可以通过setOnClickPendingIntent将控件的id和pendingIntent进行绑定

通过Intent发送信息给我们这个MediaNotificationService,Extra里面包含了指令(上一首,下一首),但这并不能实现效果,还需要将intent添加到pendingIntent中,通过mBuilder设置


通过重写onStartCommand方法来接受发送的信息


然后对接收的信息做一个判断,从而进行上一首亦或是下一首/暂停/播放

最后要记住一点,每次操作完之后要对通知栏的状态进行一个更新


删除通知栏?


这里同样有一个版本判断的问题,在8.0及以上版本需要调用deleteNotificationChannel来删除渠道,低版本直接stopForground停止前台显示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容