华为Awareness kit,您旅途路上的超智能管家
前言
前段时间看了一部纪录片《中国游客在巴黎》,讲述了外国人眼中“中国式旅游”:热衷景点打卡,沉迷拍照留念,无暇仔细欣赏;留足时间,买买买,不能枉此行。网友总结中国式旅游“上车睡觉,下车拍照,回到家啥也不知道”,可以说是小编本编了。我赶紧“反思”了下,觉得纯粹是因为我懒,不想做旅游攻略,只能跟团到“人从众”景点欣赏别人的后脑勺。每逢此刻,我就想有个可以推荐旅游行程、适时出行提示、推荐衣食住票信息等的全能“管家”。
重点来了,华为推出的Awareness Kit情景感知服务完全可以实现这些功能和服务,并且完全免费,这简直就是造福懒人旅游的必备神器啊!
旅游出行应用场景
华为情景感知服务(HUAWEI Awareness Kit)通过提供获取用户当前时间、位置、活动状态、音频设备状态、环境光、天气、信标等情景感知组合能力,并调用这些能力,帮助App更快速、高效的洞悉用户当前所处的情景,提供更加智慧、贴心的体验。
外出旅行时,在Awareness Kit支持下,天气感知能力提醒用户准备合适旅行衣服,位置感知能力推荐出行、餐饮、景点、票务等信息,时间和天气感知能力提醒日出/日落等信息,让用户获得超贴心的旅伴服务。

关键开发代码
开发准备
1、配置AppGallery Connect。
2、集成HMS Core SDK。
3、配置混淆脚本。
具体操作参考官网:配置AppGallery Connect
接口调用代码
1、指定权限
在调用位置、天气、时间等能力时,开发者需要先在Manifest中指定相应的权限。
2、导入接口类
开发者在使用各项感知能力时,需要导入情景感知服务的公共能力和与各项功能状态相关的类。比如:时间感知能力导入接口类
import com.huawei.hmf.tasks.OnFailureListener;
import com.huawei.hmf.tasks.OnSuccessListener;
import com.huawei.hms.kit.awareness.Awareness;
//导入时间快照相关类
import com.huawei.hms.kit.awareness.capture.TimeCategoriesResponse;
import com.huawei.hms.kit.awareness.status.TimeCategories;
//导入时间围栏相关类
import com.huawei.hms.kit.awareness.barrier.AwarenessBarrier;
import com.huawei.hms.kit.awareness.barrier.BarrierStatus;
import com.huawei.hms.kit.awareness.barrier.TimeBarrier;
import com.huawei.hms.kit.awareness.barrier.BarrierUpdateRequest;
3、Capture能力开发
Capture API允许app请求用户当前状态,如用户当前时间、位置、活动状态、设备状态等。
(1)获取Awareness kit的“Capture Client”。
(2)通过“Capture Client”调用时间状态查询能力接口查询情景状态。
(3)监听情景感知服务结果返回,进行应用的业务处理。
例如:天气感知能力
Awareness.getCaptureClient(this).getWeatherByDevice()
.addOnSuccessListener(new OnSuccessListener<WeatherStatusResponse>() {
@Override
public void onSuccess(WeatherStatusResponse weatherStatusResponse) {
WeatherStatus weatherStatus = weatherStatusResponse.getWeatherStatus();
WeatherSituation weatherSituation = weatherStatus.getWeatherSituation();
Situation situation = weatherSituation.getSituation();
// 更多返回的天气数据信息可参考华为开发者文档
String weatherInfoStr = "City:" + weatherSituation.getCity().getName() + "\n" +
"Weather id is " + situation.getWeatherId() + "\n" +
"CN Weather id is " + situation.getCnWeatherId() + "\n" +
"Temperature is " + situation.getTemperatureC() + "℃" +
"," + situation.getTemperatureF() + "℉" + "\n" +
"Wind speed is " + situation.getWindSpeed() + "km/h" + "\n" +
"Wind direction is " + situation.getWindDir() + "\n" +
"Humidity is " + situation.getHumidity() + "%";
Log.i(TAG, weatherInfoStr);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.e(TAG, "get weather failed");
}
});
```
**4、Barrier能力开发**
Barrier API可以为app设定情景状态的“围栏”,当用户状态达到预设情景状态时,情景感知服务会触发app发送通知。
以开发地理围栏“enter”的“Barrier“为例,进入设定的位置范围后触发Barrier。
(1)定义Barrier。
AwarenessBarrier enterBarrier = LocationBarrier.enter(latitude, longitude, radius);
(2)定义Barrier状态改变时触发的“PendingIntent”。
(3)定义Barrier对应的标签Label,然后添加Barrier。
String locationBarrierLabel = "location enter barrier";
BarrierUpdateRequest.Builder builder = new BarrierUpdateRequest.Builder();
BarrierUpdateRequest request = builder.addBarrier(locationBarrierLabel, enterBarrier,pendingIntent).build();
Awareness.getBarrierClient(context).updateBarriers(request)
.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(getApplicationContext(), "add barrier success", Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Toast.makeText(getApplicationContext(), "add barrier failed", Toast.LENGTH_SHORT).show();
Log.e(TAG, "add barrier failed", e);
}
});
```
(4)定义广播接收器,用于监听Barrier事件,收到事件后进行应用的业务处理。
class LocationBarrierReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
BarrierStatus barrierStatus = BarrierStatus.extract(intent);
String label = barrierStatus.getBarrierLabel();
switch(barrierStatus.getPresentStatus()) {
case BarrierStatus.TRUE:
Log.i(TAG, label + " status:true");
break;
case BarrierStatus.FALSE:
Log.i(TAG, label + " status:false");
break;
case BarrierStatus.UNKNOWN:
Log.i(TAG, label + " status:unknown");
break;
}
}
}
以上是部分功能的接口调用示例代码。
更详细的开发指南请参考华为开发者联盟-情景感知服务官网
结束语
华为情景感知服务通过调用时间、位置、天气、活动状态、设备状态等功能,广泛应用于旅游出行、运动健康、音乐、游戏、摄影等app,为用户提供更智慧、更贴心的体验。
【情景感知服务】精品开发案例介绍
【情景感知服务】让你的音乐APP脱颖而出,更懂用户,也更动人心
【情景感知服务】让“买买买”有了新的打开方式
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
华为Awareness kit,您旅途路上的超智能管家的更多相关文章
- Awareness Kit让你的音乐APP脱颖而出,更懂用户,也更动人心
让你的音乐APP脱颖而出,更懂用户,也更动人心. 场景 情景感知服务能带来什么? 作为音乐发烧友,闲下来的时候总想打开App,享受沉浸在音乐中的放松.然而,App推荐的歌单经常没法满足我的需要,如 ...
- 华为云ModelArts 2.0全面升级,革新传统AI开发模式
[中国,上海,9月20日] 在HUAWEI CONNECT 2019期间,华为云EI服务产品部总经理贾永利宣布--华为云AI重装升级,并重磅发布一站式AI开发管理平台ModelArts 2.0. 现场 ...
- 华为的快服务智慧平台是牛皮还是牛B?
华为快服务智慧平台是牛皮还是牛B? 来到快服务论坛专区的老铁们想必对快服务有一定的了解,那么作为华为快服务统一接入分发核心的华为快服务智慧平台是怎样的存在呢?想必带着眼睛阅读的小伙伴都已经看出来了 ...
- HMS Core Discovery直播预告 | AI画质增强 ,开启超清视界
[直播入口] B站华为开发者联盟:http://live.bilibili.com/22551651 4K.8K视频屡见不鲜,HD.FHD分辨率成小屏标配,当网络卡顿.视频自动切换到较低画质时,用户最 ...
- ModelArts 与HiLens Kit联合开发丨行人社交距离风险提示Demo
摘要:本Demo使用YOLOv3_Resnet18模型来检测的视频流中的行人,获取行人坐标(即图中蓝色方框),然后计算所有检测到的人之间的相互"距离". 前情提要 听到行人社交距离 ...
- 【HC资料合集】2019华为全联接大会主题资料一站式汇总,免费下载!
HUAWEI CONNECT 2019 大会主题演讲.峰会演讲精彩资料速递,欢迎下载查阅. 主题 资料下载(登录后可下载附件) 演讲者 [主题演讲资料]2019华为全联接大会day 2 共筑高品质 ...
- HMS Core华为分析丨受众细分,多场景促进精益运营
用户的偏好不同,对产品的需求也不一样,要想更好地培养用户粘性,就需要因人施策,精细化运营,而受众细分是精细化运营的重要方法之一.受众细分是根据用户属性和行为数据,将具有相同或类似特征的用户归为一个群组 ...
- 华为4D成像雷达、智能驾驶平台MDC 810
华为4D成像雷达.智能驾驶平台MDC 810 2020年10月底,华为发布了HI品牌,在今年2021年上海国际车展前夕,华为以 "专新致智" 为主题,举办HI新品发布会,发布了包括 ...
- 华为MDC自动驾驶
华为MDC自动驾驶 智能驾驶汽车中,包含四个核心子系统:传感器.计算平台.执行器与应用算法,华为MDC( Mobile Data Center: 移动数据中心)定位为智能驾驶的计算平台.此平台集成了华 ...
随机推荐
- 我对数据库事务的理解(MYSQL中)
-- 设置数据库事务为手动的提交SET @@AUTOCOMMIT = 0;-- 查看是否被修改SELECT @@autocommit;-- 查看当前的编码格式SELECT @@character_se ...
- JDBC中的元数据——2.参数元数据
package metadata; import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql.Pre ...
- freeswitch简介
freeswitch简介 freeswitch是开源的,免费的. freeswitch是一款非常好用的电话软交换框架,支持跨平台,扩展性良好,配置灵活. freeswitch可以在很多平台上运行,包括 ...
- JobExecutionContext中的JobDataMapjob与Detail与Trigger中的JobDataMapjob
public static void main(String[] args) { //配置模式 build模式 //1.实例一个JOB JobDetail jobDetail = JobBuilder ...
- 《网页布局基础篇》HTML+CSS单列布局--水平居中,垂直居中,水平垂直居中
https://blog.csdn.net/panlu666_pl/article/details/66480433 一.水平居中 子元素在父元素中水平居中 1.使用 text-align和inlin ...
- minicom-linux下USB转串口配置
现在的笔记本越做越薄,好些电脑已经没有串口了,做硬件开发会非常头疼,不过有了USB转串口设备,PC机只需要有USB接口就可以了.在linux下我们使用minicom与目标设备通信,在此记录一下linu ...
- Win7/Win10+VS2017+OpenCV3.4.2安装、测试
安装VS2017 在微软官网https://www.microsoft.com,下载Visual Studio 2017安装包 用管理员权限运行vs2017 enterprise安装包,安装过程会持续 ...
- 使用junit进行最简单的单元测试
使用junit进行最简单的单元测试 使用工具: jdk IDEA Maven 第一步 创建一个Maven项目 第二步 导入junit依赖 <dependency> <groupId& ...
- blender Text on Curve Text on Sphere
Text on Curve Shift + A 添加一个 BezierCurve Shift + A 添加一个 Text,Tab 编辑,再次 Tab 退回 Object Mode 选中 Text,Ad ...
- uni-app 登录Abp VNexe并获取Token
uni.request方式登录abp关键代码如下,因abp获取token需要用formdata方式请求所以需要加上请求头 const baseUrl = 'http://127.0.0.1:44323 ...