在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,情景感知服务相关推荐

  1. ioppc技术_广东电网有限责任公司河源供电局基于IOPPC线路光纤网络智能态势感知技术研究技术服务等5个项目采购公告...

    广东河源 基于IOPPC线路光纤网络智能态势感知技术研究技术服务等5个项目(采购编号:0006200000076907)采购公告 根据实际工作需要,现拟组织开展广东河源 基于IOPPC线路光纤网络智能 ...

  2. android音视频播放器开发百度云,Android 播放端 SDK

    1 概述 PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单.快捷的接口,帮助开发者在 Android ...

  3. Android系统Surface机制的SurfaceFlinger服务的线程模型分析

    在前面两篇文章中,我们分析了SurfaceFlinger服务的启动过程以及SurfaceFlinger服务初始化硬件帧缓冲区的过程.从这两个过程可以知道,SurfaceFlinger服务在启动的过程中 ...

  4. Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划

    前面我们从Android应用程序与SurfaceFlinger服务的关系出发,从侧面简单学习了SurfaceFlinger服务.有了这些预备知识之后,我们就可以从正面来分析SurfaceFlinger ...

  5. 个推无法获取个推id_最新个推Android 推送 SDK Maven 集成

    概述 公司准备采用个推作为第三方推送平台,我作为客户端的头号小鸟,掐指一算已经毕业 0.1 年了,Leader 准备把这个简单而又独立的功能点交给我来处理,我紧张兮兮的打开官网集成文档 学习了起来.其 ...

  6. 为什么AI感知与人类感知无法直接比较?

    来源丨TechTalks 作者丨Ben Dickson 编译丨科技行者 人类级别的表现.人类级别的精度--在开发AI系统的企业中,我们经常会听到这类表述,其指向范围则涵盖人脸识别.物体检测,乃至问题解 ...

  7. android 百度地图 在线建议查询,Android 百度地图 SDK v3_3_0 (五) ---POI搜索和在线建议查询功能...

    目前百度地图SDK所集成的检索服务包括:POI检索.公交信息查询.线路规划.地理编码.在线建议查询.短串分享. 本篇博客将先介绍POI检索和在线建议查询(在地图地位功能基础上实现的,还不知道定位的童靴 ...

  8. android 高德地图SDK报 KEY鉴权失败

    android 高德地图SDK报 KEY鉴权失败. 一般在项目被转移,或项目使用的SDK被其他项目使用时,会发生这种情况! 解决办法 进入高德地图api控制台 点应用管理-我的应用-创建应用 - 根据 ...

  9. android室内地图,概述-Android 室内地图SDK | 高德地图API

    Android 室内地图 SDK 简介 说明: 室内地图数据对新用户暂停开放,建议您使用 Android地图SDK 可实现室内外一体化效果. 高德地图 Android 室内地图SDK 是一套室内地图开 ...

最新文章

  1. 今年我读了四个开源项目的源码,来分享下心得
  2. 切客软件诞生,给切客全新的购物消费体验
  3. 微信小程序 - 更改radio和checkbox选中样式
  4. 黑马程序员-JavaSE核心知识-03第一个Java程序
  5. 约瑟夫斯问题-java版数组解法和链表解法
  6. mfc 消息消息队列概念_消息队列面试连环问
  7. 李开复创业9年再看世界:中美科技成平行宇宙,VC也要+AI
  8. 解决:百度编辑器UEditor,怎么将图片保存到图片服务器,或者上传到ftp服务器的问题(如果你正在用UE,这篇文章值得你看下)
  9. 最新eclipse国内镜像站,比ustc等站点资源新。
  10. bo蓝牙耳机怎么连接_超简单!电脑连接蓝牙音箱,蓝牙耳机!
  11. 台式计算机如何封存,一种计算机用声卡封存装置的制作方法
  12. WinServer 2012 R2 搭建域控服务器、文件服务器并配置权限
  13. win7怎么设置悬浮桌面便签
  14. Python实现康威生命游戏
  15. 西门子s7-200解密软件下载_西门子S7200plc软件仿真软件使用方法
  16. 值得收藏的网站----安全
  17. [CyanogenMOD移植教程]第一章:环境的搭建
  18. 【焊接】 焊接技巧
  19. 帝国cms7.2 linux伪静态,帝国CMS7.0IIS伪静态设置教程
  20. linux下的扫描软件,4个用于Linux系统的扫描软件 - 爱绿豆

热门文章

  1. bd3.2 Python高级
  2. 一个数据库存储架构的独白
  3. It's OpenCV
  4. Mac OS X 10.8.5 安装编译glib
  5. Command_Of_Windows1
  6. 2010后的经济增长点再研究
  7. 【mysql技巧】按某一字段分组取最大(小)值所在行的数据
  8. SD-WAN加速推动企业分支上云—Vecloud
  9. 2019.4.1考试2019.4.2考试2019.4.4考试
  10. Ajax的beforeSend 和 complete