共计 4026 个字符,预计需要花费 11 分钟才能阅读完成。
前言
前段时间看了一部纪录片《中国游客在巴黎》,讲述了外国人眼中“中国式游览”:热衷景点打卡,沉迷拍照纪念,得空认真观赏;留足工夫,买买买,不能枉此行。网友总结中国式游览“上车睡觉,下车拍照,回到家啥也不晓得”,能够说是小编本编了。我连忙“反思”了下,感觉纯正是因为我懒,不想做游览攻略,只能跟团到“人从众”景点观赏他人的后脑勺。每逢此刻,我就想有个能够举荐游览行程、适时出行提醒、举荐衣食住票信息等的全能“管家”。
重点来了,华为推出的 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<Void>() {
@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 最新技术资讯~