在 Android O 上用到 MediaStyle 的提醒功能

让 MediaStyle 的提醒功能在 Android O 上为你服务

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

简介

如果你在 API level 25 或以下的版本上用 MediaStyle 的提醒功能,这篇文章充当把这功能迁移到 Android O 上的指引。MediaStyle 的提醒功能通常是有限制的,并在后台开启那些允许音频回放的服务。

Android O 的一些主要的区别需要被考虑到。

  1. 后台要以 [startForegroundService(Intent)]( ) 开头, 而且五秒内一定要出现个持续性的提醒。
  2. 如果要显示提醒就一定要用到提醒渠道。

整合到 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.+’

MediaStyleandroid.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 =

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

上面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

【Android思维脑图(技能树)】

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

【Android高级架构视频学习资源】

Android部分精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
点击传送门,即可获取!

Android中高级、架构师对你更是如鱼得水,赶快领取吧!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值