前言

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

重点来了,华为推出的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脱颖而出,更懂用户,也更动人心

【情景感知服务】让“买买买”有了新的打开方式

访问华为开发者联盟官网

获取开发指导文档

华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

华为Awareness kit,您旅途路上的超智能管家的更多相关文章

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

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

  2. 华为云ModelArts 2.0全面升级,革新传统AI开发模式

    [中国,上海,9月20日] 在HUAWEI CONNECT 2019期间,华为云EI服务产品部总经理贾永利宣布--华为云AI重装升级,并重磅发布一站式AI开发管理平台ModelArts 2.0. 现场 ...

  3. 华为的快服务智慧平台是牛皮还是牛B?

    华为快服务智慧平台是牛皮还是牛B?   来到快服务论坛专区的老铁们想必对快服务有一定的了解,那么作为华为快服务统一接入分发核心的华为快服务智慧平台是怎样的存在呢?想必带着眼睛阅读的小伙伴都已经看出来了 ...

  4. ModelArts 与HiLens Kit联合开发丨行人社交距离风险提示Demo

    摘要:本Demo使用YOLOv3_Resnet18模型来检测的视频流中的行人,获取行人坐标(即图中蓝色方框),然后计算所有检测到的人之间的相互"距离". 前情提要 听到行人社交距离 ...

  5. 【HC资料合集】2019华为全联接大会主题资料一站式汇总,免费下载!

    HUAWEI CONNECT 2019 大会主题演讲.峰会演讲精彩资料速递,欢迎下载查阅. 主题 资料下载(登录后可下载附件) 演讲者 [主题演讲资料]2019华为全联接大会day   2 共筑高品质 ...

  6. HMS Core华为分析丨受众细分,多场景促进精益运营

    用户的偏好不同,对产品的需求也不一样,要想更好地培养用户粘性,就需要因人施策,精细化运营,而受众细分是精细化运营的重要方法之一.受众细分是根据用户属性和行为数据,将具有相同或类似特征的用户归为一个群组 ...

  7. 华为4D成像雷达、智能驾驶平台MDC 810

    华为4D成像雷达.智能驾驶平台MDC 810 2020年10月底,华为发布了HI品牌,在今年2021年上海国际车展前夕,华为以 "专新致智" 为主题,举办HI新品发布会,发布了包括 ...

  8. 华为MDC自动驾驶

    华为MDC自动驾驶 智能驾驶汽车中,包含四个核心子系统:传感器.计算平台.执行器与应用算法,华为MDC( Mobile Data Center: 移动数据中心)定位为智能驾驶的计算平台.此平台集成了华 ...

  9. 教你如何开发一个完败Miracast的投屏新功能

      手机与电视,是陪伴在我们生活最常见,陪伴最长久的智能设备.迅猛发展的移动终端与通信技术,赋予了手机更广阔多元的应用生态,大屏电视则以大视野和震撼影音,弥补了手里方寸带来的视觉局限.而今,手机的延伸 ...

  10. HiLink &amp; LiteOS &amp; IoT芯片 让IoT开发简单高效

    HiLink & LiteOS & IoT芯片让IoT开发简单高效 华为HiLink & LiteOS & IoT芯片使能三件套,让IoT开发更简单高效.下一代智能手机 ...

随机推荐

  1. 【SQL】姗姗来迟的SQL Server 安装图解

     逆天今天被人拉过去装了个数据库...顺便就记录一下安装过程吧,一直想发一直没时间弄,今天就发下安装过程吧,2012和2008安装过程一样的 [注意安装细节]         安装过程中如果出现问题参 ...

  2. .8-Vue源码之AST(4)

    上一节讲完了超长的start函数,也同时完结了handleStartTag函数,接着continue进入下一轮while循环. 此时剩余的字符串状态如图:,切掉了<div id='app'> ...

  3. Spring MVC简单原理

    Spring MVC原理 针对有Java Web基础.Spring基础和Spring MVC使用经验者. 前言 目前基于Java的web后端,Spring生态应该是比较常见了.虽然现在流行前后端分离, ...

  4. Win10下音频设备无法播放音乐问题定位

    最近一直在调试音频设备,由于音频设备需要在不同的采样率下面转换,所以会经常导致我的win10无法播放和录音. 刚开始在网上搜了相关的知识,但是一直没找到有效的解决方案.后来,无奈之下,使用了微软的声音 ...

  5. Codeforces Round #411 div 2 D. Minimum number of steps

    D. Minimum number of steps time limit per test 1 second memory limit per test 256 megabytes input st ...

  6. intelliJ IDEA 破解,亲测有效

    https://blog.csdn.net/shengshengshiwo/article/details/79599761

  7. 概率dp(A - Scout YYF I POJ - 3744 )

    题目链接:https://cn.vjudge.net/contest/276241#problem/A 题目大意:首先输入n和p,n代表地雷的个数,p代表走一步的概率,1-p代表走两步的概率,然后问你 ...

  8. StreamSets 多线程 Pipelines

    以下为官方文档: Multithreaded Pipeline Overview A multithreaded pipeline is a pipeline with an origin that ...

  9. Top K算法

    应用场景: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节.        假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果 ...

  10. ps/sql developer 登录远程服务器

    Ref PLSQL Developer远程登录的方法