Awareness Kit让你的音乐APP脱颖而出,更懂用户,也更动人心
让你的音乐APP脱颖而出,更懂用户,也更动人心、
场景
情景感知服务能带来什么?
作为音乐发烧友,闲下来的时候总想打开App,享受沉浸在音乐中的放松。然而,App推荐的歌单经常没法满足我的需要,如果App能根据我当前的情景状态,推送给我的歌曲恰好就是我当前最想听的,那该多好啊~
什么是情景感知服务?
情景感知服务(Awareness Kit)能感知用户当前的时间、地理位置、活动状态、耳机状态、天气状况、环境光、车载连接状态、信标连接状态等情景,并通过能常驻后台运行的围栏能力向APP进行提醒,使APP能第一时间给用户提供精准和贴心的服务。上述情景感知能力还在不断扩充中,而且您可以自由组合这些感知能力,构建组合围栏,从而让APP的服务能力更加智能,更加精准。
在情景感知服务的支持下,App能给用户带来如下体验
每次连接上耳机(有线耳机、蓝牙耳机),手机通知栏会弹出音乐App通知,提示用户时候是否要启动音乐播放,或者是否要自动播放音乐
点击通知,可以打开音乐APP,并展示用户当前情境下最恰当的歌单
跑步开始,推荐节奏轻快歌单;跑步结束,推荐节奏缓场歌单
清晨起床,连接耳机,来点清新音乐;夜深人静,连接耳机,让静心的音乐让我舒缓
发动汽车,手机连接蓝牙车载,音乐App自动切换成车载模式,并主动询问是否播放各场景的行车音乐(白天、夜晚、雨天、晴天,推荐各不同)
不同的节日,应该有特别的节日音乐
同时,用户还可以通过各种感知能力的组合围栏,设置排除场景,避免给用户过多打扰。
情景感知服务的优势
无需用户提前开启App,用户进入地理围栏范围后,即可后台激活App,触发通知。
无惧App进程被系统杀死,通过围栏服务,依然可接受到通知。
点击通知,即可前台激活APP,点击直接跳转App推荐界面。
通过组合围栏实现精准推送;也可避免在用户不需要的场景提供无效通知,避免频繁打扰。
开发前准备
Awareness Kit集成需要有如下3个关键步骤,可以参考华为开发者联盟的文档
- AppGallery Connect配置
- 集成HMS Awareness SDK
- 配置混淆脚本
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/awareness-preparation
代码开发关键步骤
- 创建耳机围栏
//创建一个感知耳机连接的围栏,当耳机处于连接状态时,此围栏的状态为true
AwarenessBarrier headsetBarrier = HeadsetBarrier.keeping(HeadsetStatus.CONNECTED);
//创建一个PendingIntent,当围栏状态改变的时候,会触发该PendingIntent,这里以发送广播为例
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
//创建围栏的标签,后续可以通过标签查询或者删除对应围栏
String headsetBarrierLabel = "headset keeping connected label";
- 注册围栏
//把刚刚创建好的耳机围栏和它对应的label,pendingIntent注册给Awareness kit
Awareness.getBarrierClient(context).updateBarriers(new BarrierUpdateRequest.Builder()
.addBarrier(headsetBarrierLabel,headsetBarrier,pendingIntent).build())
.addOnSuccessListener(aVoid -> {
//注册围栏成功
Log.i(TAG,"add barrier success");
})
.addOnFailureListener(e -> {
//注册围栏失败
Log.e(TAG,"add barrier failed");
e.printStackTrace();
});
- 创建广播接收器监听围栏事件
//本示例中我们耳机围栏的PendingIntent设置的是发送广播,所以需要定义对应的广播接收器来监听围栏的状态
public final class HeadsetBarrierReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//围栏的信息通过intent传递过来,我们通过Barrier.extract方法将其解析出来
BarrierStatus barrierState = BarrierStatus.extract(intent);
//通过BarrierStatus获取label和围栏的当前状态
String label = barrierState.getBarrierLabel();
int status = barrierState.getPresentStatus();
if (status == BarrierStatus.TRUE && label.equals(headsetBarrierLabel)) {
//当围栏状态为true时,代表耳机处于连接状态,这时就可以在通知栏推送相关消息
//send Notification....
}
}
}
定义完广播接收器后别忘记注册该广播接收器,如果需要APP被杀后依然推送,可以把该接收器设置为静态广播接收器。
- 通过Awareness快照接口获取当前情景状态
在用户点击通知打开app后,可以通过Awareness各个能力的快照接口来获取用户当前的情景状态以推荐不同歌单。
例如获取时间情景状态:
Awareness.getCaptureClient(context).getTimeCategories()
.addOnSuccessListener(timeIntervalsResponse -> {
TimeCategories categories = timeIntervalsResponse.getTimeCategories();
if (categories.isTimeCategory(TimeBarrier.TIME_CATEGORY_HOLIDAY)) {
//当天是节假日,可推荐节假日歌单
}
if (categories.isTimeCategory(TimeBarrier.TIME_CATEGORY_WEEKEND)) {
//当天是周末,可推荐周末歌单
}
if (categories.isTimeCategory(TimeBarrier.TIME_CATEGORY_NIGHT)) {
//当前是深夜,可推荐深夜歌单
}
})
.addOnFailureListener(e -> {
//获取时间信息失败
Log.e(TAG, "get Time Categories failed");
e.printStackTrace();
});
获取用户当前的活动状态以推荐歌单:
Awareness.getCaptureClient(context).getBehavior()
.addOnSuccessListener(behaviorResponse -> {
BehaviorStatus behaviorStatus = behaviorResponse.getBehaviorStatus();
DetectedBehavior mostLikelyBehavior = behaviorStatus.getMostLikelyBehavior();
String str = "Most likely behavior is " + mostLikelyBehavior.getType();
})
.addOnFailureListener(e -> {
//获取活动状态失败
Log.e(TAG, "Failed to get the behavior.", e);
});
获取当前是否是连接车载蓝牙:
int deviceType = 0; // 0 代表获取的设备类型为车载蓝牙
Awareness.getCaptureClient(this).getBluetoothStatus(deviceType)
.addOnSuccessListener(bluetoothStatusResponse -> {
BluetoothStatus bluetoothStatus = bluetoothStatusResponse.getBluetoothStatus();
int status = bluetoothStatus.getStatus();
if (status == BluetoothStatus.CONNECTED) {
//当前是连接车载蓝牙,可将app切换为车载模式
}
})
.addOnFailureListener(e -> {
//获取车载蓝牙状态失败
Log.e(TAG, "Failed to get Bluetooth status.", e);
});
往期链接:一文搞懂文本识别、银行卡识别、通用卡证识别、身份证识别
内容来源:https://developer.huawei.com/consumer/cn/forum/topicview?fid=18&tid=0201246052748810283&pid=0301246052748810253
原作者:Ascend
Awareness Kit让你的音乐APP脱颖而出,更懂用户,也更动人心的更多相关文章
- 华为Awareness kit,您旅途路上的超智能管家
前言 前段时间看了一部纪录片<中国游客在巴黎>,讲述了外国人眼中"中国式旅游":热衷景点打卡,沉迷拍照留念,无暇仔细欣赏:留足时间,买买买,不能枉此行.网友总结中国式旅 ...
- 从四大音乐APP首页设计对比分析产品方向
原帖:http://www.ui.cn/detail/63201.html 本文章中作者例举四个音乐APP应用:虾米.网易.百度.QQ首页 1. 推荐内容:作者将四个首页界面划分出官方推荐与个性化推荐 ...
- 网易云音乐APP分析
网易云音乐-感受音乐的力量 你选择的产品是? 网易云音乐 为什么选择该产品作为分析? 之前用的一直是QQ音乐,但是有一天一个朋友分享了一首网易云上的音乐(顺便分享一下歌名:Drop By Drop) ...
- 个人作业2:QQ音乐APP案例分析
APP案例分析 QQ音乐 选择理由:毕竟作为QQ音乐九年的资深老用户以及音乐爱好者 第一部分 调研 1.第一次上手的体验 我算是很早期的QQ音乐的用户,用QQ音乐七八年,除了体验各方面还不错之外 ...
- 音乐类产品——“网易云音乐”app交互原型模板(免费使用)
网易云音乐虽是一款音乐app,但有人说它也是社交界的一股清流以及一匹黑马.音乐带给人的感染,激发着很多人在这里表达着他们的情绪和心声.网易云音乐上的真实用户点评,不仅被印在地铁的广告牌上,还在朋友圈频 ...
- 如何下载网易云音乐APP里的MV和短视频?
本人:网易云音乐死粉,朋友圈大多都用的是云音乐,因为推荐功能牛逼 然后:发现云音乐APP里越来越多吸引我的短视频,经常看到好的就想保存到相册,然后微信发给朋友 但是:不知道怎么下载网易云音乐的短视频, ...
- html+css+js实现类似音乐app似的列表播放
最近做了一个类似于音乐app里面列表播放的功能,主要是音频播放和按钮状态的联动: 界面如下: 如上图所示 上面有一个播放按钮 下面有一个播放列表 上面还有一个歌曲长度的总时长 上面一个按钮能控制下面所 ...
- 【音乐App】—— Vue-music 项目学习笔记:项目准备
前言: 学习慕课网Vue高级实战课程后,在实践中总结一些这个项目带给自己的收获,希望可以再次巩固关于Vue开发的知识.这一篇主要梳理:项目概况.项目准备.页面骨架搭建.项目github地址:https ...
- 明令禁止下,哪些APP在违规获取用户信息?
2019年4月28日消息 移动互联网时代各大APP大行其道,用户为了更便捷地享受互联网服务,常常需要让渡部分个人信息.在信息获取不透明的情况下,不少APP运营企业出现过度获取乃至违规获取用户信息的情 ...
随机推荐
- python爬虫实例,一小时上手爬取淘宝评论(附代码)
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 1 明确目的 通过访问天猫的网站,先搜索对应的商品,然后爬取它的评论数据. ...
- Laravel中使用JWT
Laravel 版本: Laravel Framework 6.18.3 查看版本命令: php artisan -V 1.安装JWT扩展包: composer require tymon/jwt-a ...
- 2. node xlsx的使用
1. 使用xlsx模块 const xlsx = require('xlsx'); //excel async exportexcel() { let arrayData = [ ['姓名', '电话 ...
- jmeter事务控制器
jmeter事务控制器常用于压力测试时如果一个功能包括多个请求时,需要测试这个功能的压力情况,则需要把多个请求放到一个事务控制器里面
- python爬虫实战之爬取智联职位信息和博客文章信息
1.python爬取招聘信息 简单爬取智联招聘职位信息 # !/usr/bin/env python # -*-coding:utf-8-*- """ @Author ...
- 米特运输——(dfs)
米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储 存一直是一个大问题.D星上有N个城市,我们将其顺序编号为1到N,1号城市为首都.这N个城市由N- ...
- elementaryos5安装chrome,修复依赖
1.首先去下载个chrome:https://www.google.cn/chrome/ 2.尝试安装chrome:sudo dpkg -i google-chrome-stable_current_ ...
- 3.k均值的算法
一.课堂练习 # 课堂练习 from sklearn.datasets import load_iris # 导入鸢尾花数据 iris=load_iris() iris iris.keys() dat ...
- LVS DR模式实验
LVS DR模式实验 三台虚拟机,两个台节点机(Apache),一台DR实验调度机 一:关闭相关安全机制 systemctl stop firewalld iptables -F setenforce ...
- MutationObserver 监听 DOM 树变化
MutationObserver 是用于代替 MutationEvents 作为观察 DOM 树结构发生变化时,做出相应处理的 API .为什么要使用 MutationObserver 去代替 Mut ...