返回顶部
首页 > 资讯 > 精选 >Awareness Kit让你的音乐APP脱颖而出,更懂用户,也更动人心
  • 458
分享到

Awareness Kit让你的音乐APP脱颖而出,更懂用户,也更动人心

2023-06-04 22:06:46 458人浏览 安东尼
摘要

让你的音乐APP脱颖而出,更懂用户,也更动人心、场景情景感知服务能带来什么?  作为音乐发烧友,闲下来的时候总想打开App,享受沉浸在音乐中的放松。然而,App推荐的歌单经常没法满足我的需要,如果App能根据我当前的情景状态,推送给我的歌曲

让你的音乐APP脱颖而出,更懂用户,也更动人心

场景

情景感知服务能带来什么?

  作为音乐发烧友,闲下来的时候总想打开App,享受沉浸在音乐中的放松。然而,App推荐的歌单经常没法满足我的需要,如果App能根据我当前的情景状态,推送给我的歌曲恰好就是我当前最想听的,那该多好啊~

什么是情景感知服务?

  情景感知服务(Awareness Kit)能感知用户当前的时间、地理位置、活动状态、耳机状态、天气状况、环境光、车载连接状态、信标连接状态等情景,并通过能常驻后台运行的围栏能力向APP进行提醒,使APP能第一时间给用户提供精准和贴心的服务。上述情景感知能力还在不断扩充中,而且您可以自由组合这些感知能力,构建组合围栏,从而让APP的服务能力更加智能,更加精准。

在情景感知服务的支持下,App能给用户带来如下体验

  • 每次连接上耳机(有线耳机、蓝牙耳机),手机通知栏会弹出音乐App通知,提示用户时候是否要启动音乐播放,或者是否要自动播放音乐

  • 点击通知,可以打开音乐APP,并展示用户当前情境下最恰当的歌单

  • 跑步开始,推荐节奏轻快歌单;跑步结束,推荐节奏缓场歌单

  • 清晨起床,连接耳机,来点清新音乐;夜深人静,连接耳机,让静心的音乐让我舒缓

  • 发动汽车,手机连接蓝牙车载,音乐App自动切换成车载模式,并主动询问是否播放各场景的行车音乐(白天、夜晚、雨天、晴天,推荐各不同)

  • 不同的节日,应该有特别的节日音乐

同时,用户还可以通过各种感知能力的组合围栏,设置排除场景,避免给用户过多打扰。

情景感知服务的优势

  无需用户提前开启App,用户进入地理围栏范围后,即可后台激活App,触发通知。

  无惧App进程被系统杀死,通过围栏服务,依然可接受到通知。

  点击通知,即可前台激活APP,点击直接跳转App推荐界面。

  通过组合围栏实现精准推送;也可避免在用户不需要的场景提供无效通知,避免频繁打扰。


开发前准备

Awareness Kit集成需要有如下3个关键步骤,可以参考华为开发者联盟的文档

  1. AppGallery Connect配置
  2. 集成HMS Awareness SDK
  3. 配置混淆脚本
    https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/awareness-preparation

代码开发关键步骤

  1. 创建耳机围栏
    ```java
    //创建一个感知耳机连接的围栏,当耳机处于连接状态时,此围栏的状态为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”;

 2. 注册围栏```java//把刚刚创建好的耳机围栏和它对应的label,pendingIntent注册给Awareness kitAwareness.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();        });
  1. 创建广播接收器监听围栏事件
    //本示例中我们耳机围栏的PendingIntent设置的是发送广播,所以需要定义对应的广播接收器来监听围栏的状态public final class HeadsetBarrierReceiver extends BroadcastReceiver {@Overridepublic 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被杀后依然推送,可以把该接收器设置为静态广播接收器。
  1. 通过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

--结束END--

本文标题: Awareness Kit让你的音乐APP脱颖而出,更懂用户,也更动人心

本文链接: https://lsjlt.com/news/240027.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Awareness Kit让你的音乐APP脱颖而出,更懂用户,也更动人心
    让你的音乐APP脱颖而出,更懂用户,也更动人心、场景情景感知服务能带来什么  作为音乐发烧友,闲下来的时候总想打开App,享受沉浸在音乐中的放松。然而,App推荐的歌单经常没法满足我的需要,如果App能根据我当前的情景状态,推送给我的歌曲恰...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作