android 情景感知 sdk,情景感知服务
在Manifest指定权限
在调用情景感知能力时,开发者需要先在Manifest中指定相应的权限。使用不同情景感知能力需指定不同的权限,具体所需权限请参阅《开发指南》。例如,使用耳机状态感知能力,需要开启设备的蓝牙功能,需要在Manifest中申请蓝牙权限:
导入接口类
在调用不同的情景感知能力时,开发者需要导入相应的能力接口类。不同能力所需的类的路径和类名不同,具体请参阅《API参考》。例如,使用耳机状态感知能力,除需要导入情景感知服务的公共能力类外,还需要导入耳机状态相关的类。
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.HeadsetStatusResponse;
import com.huawei.hms.kit.awareness.status.HeadsetStatus;
// 导入耳机围栏相关类
import com.huawei.hms.kit.awareness.barrier.AwarenessBarrier;
import com.huawei.hms.kit.awareness.barrier.BarrierStatus;
import com.huawei.hms.kit.awareness.barrier.HeadsetBarrier;
import com.huawei.hms.kit.awareness.barrier.BarrierUpdateRequest;
Capture能力开发
获取Awareness Kit的"CaptureClient"。
通过"Capture Client"调用耳机状态查询能力接口查询情景状态。
监听情景感知服务结果返回,进行应用的业务处理。
Java示例代码:
Awareness.getCaptureClient(this).getHeadsetStatus()
.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(HeadsetStatusResponse headsetStatusResponse) {
HeadsetStatus headsetStatus = headsetStatusResponse.getHeadsetStatus();
int status = headsetStatus.getStatus();
String stateStr = "Headsets are " +
(status == HeadsetStatus.CONNECTED ? "connected" : "disconnected");
Log.i(TAG, stateStr);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.e(TAG, "get Headsets Capture failed", e);
}
});
Kotlin示例代码:
Awareness.getCaptureClient(this).headsetStatus
.addOnSuccessListener { headsetStatusResponse: HeadsetStatusResponse ->
val headsetStatus = headsetStatusResponse.headsetStatus
val status = headsetStatus.status
val stateStr = "Headsets are " +if (status == HeadsetStatus.CONNECTED) "connected" else "disconnected"
Log.i(TAG, stateStr)
}
.addOnFailureListener { e: Exception? ->
Log.e(TAG, "get Headsets Capture failed", e)
}
Barrier能力开发
以下以开发耳机"Connecting"的Barrier为例(耳机插入后触发Barrier)。
1. 定义Barrier。
Java示例代码:
AwarenessBarrier headsetBarrier = HeadsetBarrier.connecting();
Kotlin示例代码:
var headsetBarrier : AwarenessBarrier = HeadsetBarrier.connecting()
2. 定义Barrier状态改变时触发的"PendingIntent",本示例中为发送一个广播,同时新建一个广播接收器用来接收这个广播。
Java示例代码:
final String BARRIER_RECEIVER_ACTION = getApplication().getPackageName() + "HEADSET_BARRIER_RECEIVER_ACTION";
Intent intent = new Intent(BARRIER_RECEIVER_ACTION);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
HeadsetBarrierReceiver barrierReceiver = new HeadsetBarrierReceiver();
registerReceiver(barrierReceiver, new IntentFilter(BARRIER_RECEIVER_ACTION));
Kotlin示例代码:
val BARRIER_RECEIVER_ACTION = application.packageName + "HEADSET_BARRIER_RECEIVER_ACTION"
val intent = Intent(BARRIER_RECEIVER_ACTION)
val pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT)
val barrierReceiver = HeadsetBarrierReceiver()
registerReceiver(barrierReceiver, IntentFilter(BARRIER_RECEIVER_ACTION))
3. 定义Barrier对应的标签Label,然后添加Barrier。
Java示例代码:
String headsetBarrierLabel = "headset connecting barrier";
BarrierUpdateRequest.Builder builder = new BarrierUpdateRequest.Builder();
BarrierUpdateRequest request = builder.addBarrier(headsetBarrierLabel, headsetBarrier,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);
}
});
Kotlin示例代码:
val headsetBarrierLabel = "headset connecting barrier"
val builder = BarrierUpdateRequest.Builder()
val request = builder.addBarrier(headsetBarrierLabel, headsetBarrier, pendingIntent).build()
Awareness.getBarrierClient(context).updateBarriers(request)
.addOnSuccessListener { Toast.makeText(applicationContext, "add barrier success", Toast.LENGTH_SHORT).show()
}
.addOnFailureListener { e ->
Toast.makeText(applicationContext, "add barrier failed", Toast.LENGTH_SHORT).show()
Log.e(TAG, "add barrier failed", e)
}
4. 定义广播接收器,用于监听Barrier事件,收到事件后进行应用的业务处理。
Java示例代码:
class HeadsetBarrierReceiver 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;
}
}
}
Kotlin示例代码:
internal inner class HeadsetBarrierReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val barrierStatus = BarrierStatus.extract(intent)
val label = barrierStatus.barrierLabel
when (barrierStatus.presentStatus) {
BarrierStatus.TRUE -> Log.i(TAG, "$label status:true")
BarrierStatus.FALSE -> Log.i(TAG, "$label status:false")
BarrierStatus.UNKNOWN -> Log.i(TAG, "$label status:unknown")
}
}
}
android 情景感知 sdk,情景感知服务相关推荐
- ioppc技术_广东电网有限责任公司河源供电局基于IOPPC线路光纤网络智能态势感知技术研究技术服务等5个项目采购公告...
广东河源 基于IOPPC线路光纤网络智能态势感知技术研究技术服务等5个项目(采购编号:0006200000076907)采购公告 根据实际工作需要,现拟组织开展广东河源 基于IOPPC线路光纤网络智能 ...
- android音视频播放器开发百度云,Android 播放端 SDK
1 概述 PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单.快捷的接口,帮助开发者在 Android ...
- Android系统Surface机制的SurfaceFlinger服务的线程模型分析
在前面两篇文章中,我们分析了SurfaceFlinger服务的启动过程以及SurfaceFlinger服务初始化硬件帧缓冲区的过程.从这两个过程可以知道,SurfaceFlinger服务在启动的过程中 ...
- Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
前面我们从Android应用程序与SurfaceFlinger服务的关系出发,从侧面简单学习了SurfaceFlinger服务.有了这些预备知识之后,我们就可以从正面来分析SurfaceFlinger ...
- 个推无法获取个推id_最新个推Android 推送 SDK Maven 集成
概述 公司准备采用个推作为第三方推送平台,我作为客户端的头号小鸟,掐指一算已经毕业 0.1 年了,Leader 准备把这个简单而又独立的功能点交给我来处理,我紧张兮兮的打开官网集成文档 学习了起来.其 ...
- 为什么AI感知与人类感知无法直接比较?
来源丨TechTalks 作者丨Ben Dickson 编译丨科技行者 人类级别的表现.人类级别的精度--在开发AI系统的企业中,我们经常会听到这类表述,其指向范围则涵盖人脸识别.物体检测,乃至问题解 ...
- android 百度地图 在线建议查询,Android 百度地图 SDK v3_3_0 (五) ---POI搜索和在线建议查询功能...
目前百度地图SDK所集成的检索服务包括:POI检索.公交信息查询.线路规划.地理编码.在线建议查询.短串分享. 本篇博客将先介绍POI检索和在线建议查询(在地图地位功能基础上实现的,还不知道定位的童靴 ...
- android 高德地图SDK报 KEY鉴权失败
android 高德地图SDK报 KEY鉴权失败. 一般在项目被转移,或项目使用的SDK被其他项目使用时,会发生这种情况! 解决办法 进入高德地图api控制台 点应用管理-我的应用-创建应用 - 根据 ...
- android室内地图,概述-Android 室内地图SDK | 高德地图API
Android 室内地图 SDK 简介 说明: 室内地图数据对新用户暂停开放,建议您使用 Android地图SDK 可实现室内外一体化效果. 高德地图 Android 室内地图SDK 是一套室内地图开 ...
最新文章
- 今年我读了四个开源项目的源码,来分享下心得
- 切客软件诞生,给切客全新的购物消费体验
- 微信小程序 - 更改radio和checkbox选中样式
- 黑马程序员-JavaSE核心知识-03第一个Java程序
- 约瑟夫斯问题-java版数组解法和链表解法
- mfc 消息消息队列概念_消息队列面试连环问
- 李开复创业9年再看世界:中美科技成平行宇宙,VC也要+AI
- 解决:百度编辑器UEditor,怎么将图片保存到图片服务器,或者上传到ftp服务器的问题(如果你正在用UE,这篇文章值得你看下)
- 最新eclipse国内镜像站,比ustc等站点资源新。
- bo蓝牙耳机怎么连接_超简单!电脑连接蓝牙音箱,蓝牙耳机!
- 台式计算机如何封存,一种计算机用声卡封存装置的制作方法
- WinServer 2012 R2 搭建域控服务器、文件服务器并配置权限
- win7怎么设置悬浮桌面便签
- Python实现康威生命游戏
- 西门子s7-200解密软件下载_西门子S7200plc软件仿真软件使用方法
- 值得收藏的网站----安全
- [CyanogenMOD移植教程]第一章:环境的搭建
- 【焊接】 焊接技巧
- 帝国cms7.2 linux伪静态,帝国CMS7.0IIS伪静态设置教程
- linux下的扫描软件,4个用于Linux系统的扫描软件 - 爱绿豆