日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 情景感知 sdk,情景感知服务

發布時間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,情景感知服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。