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

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

Android8.0 通知栏适配(播放器)_第1张图片

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

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


Android8.0 通知栏适配(播放器)_第2张图片

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


Android8.0 通知栏适配(播放器)_第3张图片

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

compileSdkVersion28

defaultConfig{

    applicationId"com.example.wuzhongcheng.notificationbar"

    minSdkVersion26

    targetSdkVersion28

    versionCode1

    versionName"1.0"

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

}

Android8.0 通知栏适配(播放器)_第4张图片

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


Android8.0 通知栏适配(播放器)_第5张图片

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

Channel是渠道

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


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


Android8.0 通知栏适配(播放器)_第6张图片

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

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


Android8.0 通知栏适配(播放器)_第7张图片

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


Android8.0 通知栏适配(播放器)_第8张图片

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

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


删除通知栏?


Android8.0 通知栏适配(播放器)_第9张图片

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

你可能感兴趣的:(Android8.0 通知栏适配(播放器))