让 MediaStyle 的提醒功能在 Android O 上为你服务
简介
如果你在 API level 25 或以下的版本上用 MediaStyle
的提醒功能,这篇文章充当把这功能迁移到 Android O 上的指引。MediaStyle
的提醒功能通常是有限制的,并在后台开启那些允许音频回放的服务。
Android O 的一些主要的区别需要被考虑到。
- 后台要以
[startForegroundService(Intent)]( )
开头, 而且五秒内一定要出现个持续性的提醒。 - 如果要显示提醒就一定要用到提醒渠道。
整合到 Android O 的迁移需要以下几个小步骤。
第一步:改变导入的语句
记得把下面的代码加到你的导入语句中:
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.media.app.NotificationCompat.MediaStyle;
或许之前会有 v7 的导入语句,但现在已经不再需要:
import android.support.v7.app.NotificationCompat;
现在你的 build.gradle
文件里,只需要导入包含 MediaStyle
类的 media-compat
函数库。
implementation ‘com.android.support:support-media-compat:26.+’
MediaStyle
在 android.support.v4.media
这个包里因为它现在是 [media-compat]( )
依赖的一部分。特意不将它们放在 support-compat
库里的原因是保持支持库模块里的关注点分离。
第二步:用 NotificationCompat 和渠道
为了在 Android O 里用到提醒功能,你一定要用提醒渠道。v4 支持库现在有为了创建提醒的新构造器:
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(mContext, CHANNEL_ID);
老的构造器到了 26.0.0 版的支持库就不能用了,因而你在用 API 26 的时候提醒就不会显示(因为渠道在 API 26 里是提醒功能的先要条件):
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(mContext);
为了更好地理解 Android O 里的渠道,请在 developer.android.cn 上阅读所有相关信息。Google Play Music 可以让你自定义提醒消息。例如,如果你只关心”重放“相关的提醒,就可以只启用与之相关的提醒并禁用其他。
NotificationCompat
这个类并不帮你创建渠道,你依然要自己创建一个。这里有一个 Android O 的例子。
private static final String CHANNEL_ID = “media_playback_channel”;
@RequiresApi(Build.VERSION_CODES.O)
private void createChannel() {
NotificationManager
mNotificationManager =
(NotificationManager) mContext
.getSystemService(Context.NOTIFICATION_SERVICE);
// 渠道 ID
String id = CHANNEL_ID;
// 用户看到的渠道名字
CharSequence name = “Media playback”;
// 用户看到的渠道描述
String description = “Media playback controls”;
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
// 渠道的配置
mChannel.setDescription(description);
mChannel.setShowBadge(false);
mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
mNotificationManager.createNotificationChannel(mChannel);
}
这段代码利用 NotificationCompat
生成 MediaStyle
提醒。
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.media.app.NotificationCompat.MediaStyle;
//…
// 你只需要在 API 26 以上的版本创建渠道
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createChannel();
}
NotificationCompat.Builder notificationBuilder =
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://img-blog.csdnimg.cn/img_convert/ffc88f402a4aca2d26b15052cf07e321.jpeg)
最后
考虑到文章的篇幅问题,我把这些问题和答案以及我多年面试所遇到的问题和一些面试资料做成了PDF文档
喜欢的朋友可以关注、转发、点赞 感谢!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
喜欢的朋友可以关注、转发、点赞 感谢!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!