前言

前段时间看了一部纪录片《中国游客在巴黎》,讲述了外国人眼中“中国式旅游”:热衷景点打卡,沉迷拍照留念,无暇仔细欣赏;留足时间,买买买,不能枉此行。网友总结中国式旅游“上车睡觉,下车拍照,回到家啥也不知道”,可以说是小编本编了。我赶紧“反思”了下,觉得纯粹是因为我懒,不想做旅游攻略,只能跟团到“人从众”景点欣赏别人的后脑勺。每逢此刻,我就想有个可以推荐旅游行程、适时出行提示、推荐衣食住票信息等的全能“管家”。

重点来了,华为推出的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>() {@Overridepublic 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() {@Overridepublic 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 {@Overridepublic 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,您旅途路上的超智能管家相关推荐

  1. 华为鸿蒙系统腾讯首测,华为鸿蒙系统首测,速度超安卓60%?谷歌该咋想,咱也不敢问呐...

    原标题:华为鸿蒙系统首测,速度超安卓60%?谷歌该咋想,咱也不敢问呐 最近,有外媒TechNave对华为的鸿蒙系统进行了报道,根据外媒消息,华为腾讯展开合作,联手了OPPO.VIVO等手机厂家,对华为 ...

  2. 手把手教你集成华为Image Kit图像裁剪功能

    前言 在我们拍摄完一张照片后,为了让照片更好看.比例更完美经常会裁剪掉多余的部分.华为Image Kit图片裁剪功能给您提供设置裁剪比例.设置裁剪图形.图片旋转等一系列便捷的操作. 应用场景 我们最常 ...

  3. java中图片排版,教你轻松集成华为Image Kit图文排版功能

    前言 现在华为Image Kit图文排版功能为用户提供了9种智能排版样式,排版方式分为内容等宽和内容不等宽两种布局.用户可根据自己的图片风格选择合适的排版. 应用场景 在我们的电子杂志排版中,有很多素 ...

  4. 荣耀智慧屏评测 鸿蒙OS加持,荣耀智慧屏评测:鸿蒙OS加持 面向未来的超智能电视...

    当华为选择在今年公布鸿蒙OS系统后,很多人都在期待它的庐山真面目.无论是以后非常时期不再受制于人,或是循序渐进将系统过渡给自家设备,鸿蒙OS对华为的意义,怎么看都是百利而无一害.当有些人还在质疑鸿蒙O ...

  5. 荣耀智慧屏鸿蒙远程控制电脑,荣耀智慧屏评测:鸿蒙OS加持 面向未来的超智能电视...

    [TechWeb]当华为选择在今年公布鸿蒙 OS 系统后,很多人都在期待它的庐山真面目.无论是以后非常时期不再受制于人,或是循序渐进将系统过渡给自家设备,鸿蒙 OS 对华为的意义,怎么看都是百利而无一 ...

  6. 首款搭载HarmonyOS,分布式“智慧眼”!华为智选首款搭载HarmonyOS的智能摄像头正式发布...

    分布式"智慧眼"!华为智选首款搭载HarmonyOS的智能摄像头正式发布 2020年10月30日 17:20作者:黄页编辑:黄页 分享 2020年10月30日,在上海举行的2020 ...

  7. 华为云+AI+5G,点燃2020政企智能升级

    2019年11月1日,中国进入5G商用第一天.这一天,全国首批50个城市迎来5G落地.市场研究公司Jefferies预测,到2022年中国的5G用户将达5.883亿,而5G也将进一步打开智能互联的产业 ...

  8. 华为云DevCloud让软件开发更加高效智能, DevOps不止于美

    高速的中子撞击U235原子核,使其分裂成两个原子核,释放出巨大能量,同时产生的几个中子再去撞击其它原子核,形成链式反应,使得核裂变会无限的产生巨大的能量."将高速的中子比喻成人类的创新思想, ...

  9. 天猫amp;PEPCO 超智能新零售智慧门店横空出世

    2017 年是新零售元年,众多传统品牌开启了自己新零售领域的探索.一年过去了,各家传统品牌的新零售玩法五花八门,然而多数停留在小范围测试阶段,真正自上而下全身心进行新零售改造的企业品牌并不多,PEPC ...

最新文章

  1. 智能驾驶计算平台算力技术
  2. 实用目标检测器 | 性能超YoloV5,推理耗时不变(附github源码)
  3. UCI机器学习数据集库
  4. 菜鸟解读qt源码----qsqlfield.h
  5. [Deep-Learning-with-Python]神经网络入手学习[上]
  6. 主程序与子程序不在同一程序模块中_深度解析S7200系列PLC带参数子程序用法
  7. PHP之composer切换国内源
  8. linux 扫描i2c端口,s3c2440用I2C接口访问EEPROM
  9. 蚂蚁爬杆 java_java蚂蚁爬杆
  10. 是什么缩写_网友:啊啊啊啊这是什么该死的缩写...“sm居然是这个意思??”...
  11. python multiprocessing 得到多进程返回的结果
  12. 数据结构与算法 —— 基础一(排列组合)
  13. python程序设计实验七_Python程序设计实验报告七:组合数据类型
  14. springboot集成mybati 后又使用mybatisPlus 出现的问题 BindingException:Invalid bound statement
  15. 讨论oracle在rowid和rownum
  16. Explaining and Harnessing Adversarial Examples论文解读
  17. IP防护等级标准及规定
  18. 软件工程__CMMCMMI
  19. C# 获取 ARP 映射
  20. java类 家族成员 姓氏_极其罕见的四大姓氏,若你还姓这个,恭喜你,你的家族大有来头!...

热门文章

  1. 微波雷达技术发展应用,存在感应雷达模块,物联网雷达传感器技术
  2. 1074. Reversing Linked List 解析
  3. html 中avi视频插件,【JDG 2-0 UP 】Kanavi盲僧神准天音波完美针对妖姬,UP双C被限制JDG赢得比赛...
  4. Python--selenium 加载并保存QQ群成员,去除其群主、管理员信息
  5. C语言-用户登录系统
  6. [人脸关键点检测] PFLD:简单、快速、超高精度人脸关键检测
  7. canvas制作火焰的两种方法
  8. 小米手机刷魅族系统会对手机本身有损伤吗?
  9. 服务器上u盘装机centos7.2
  10. 常用的应用服务器有哪些?