本章描述LinkVisual服务运行Android系统的网络摄像头设备相关SDK的功能。
设备端SDK依赖如下。
依赖SDK | 概述 |
---|---|
Link Kit Android SDK | 提供设备与云端的双向数据通道能力。 |
初始化SDK
请在Link Kit SDK初始化完毕后对IPC SDK的初始化,需要传入设备证书信息。
LinkKit.getInstance().init(this, params, new ILinkKitConnectListener() {
@Override
public void onError(AError error) {
Log.d(TAG,
"onError() called with: error = [" + (error == null ? "null" : (error.getCode() + error.getMsg()))
+ "]");
}
@Override
public void onInitDone(Object data) {
Log.d(TAG, "onInitDone() called with: data = [" + JSON.toJSONString(data) + "]");
// 初始化IPC SDK
IPCDev.getInstance().init(your_productKey, your_deviceName, your_deviceSecret);
}
其中your_productname、your_devicename、your_devicesecret需要替换为自己的设备证书信息。
IPC SDK需借助Linkkit的能力来完成消息监听和处理。注册监听需要两步,首先在设备服务。
//注册异步服务调用监听器
LinkKit.getInstance().getDeviceThing().setServiceHandler(service.getIdentifier(),
itResRequestHandler);
//异步服务调用监听器
private ITResRequestHandler itResRequestHandler = new ITResRequestHandler() {
@Override
public void onProcess(String identify, Object result, ITResResponseCallback
itResResponseCallback) {
Log.d(TAG,
"ITResRequestHandler onProcess() called with: identify = [" + identify + "], result = ["
+ JSON.toJSONString(result) + "], itResResponseCallback = ["
+ itResResponseCallback + "]");
/**
* 添加IPC SDK对异步服务调用的监听
*/
IPCDev.getInstance().notifyAsyncTopicReceived(identify, result, itResResponseCallback);
}
@Override
public void onSuccess(Object o, OutputParams outputParams) {
Log.d(TAG,
"onSuccess() called with: o = [" + JSON.toJSONString(o) + "], outputParams = [" + JSON
.toJSONString(outputParams) + "]");
}
@Override
public void onFail(Object o, ErrorInfo errorInfo) {
Log.d(TAG, "onFail() called with: o = [" + JSON.toJSONString(o) + "], errorInfo = [" + JSON
.toJSONString(errorInfo) + "]");
}
};
/**
* 注册同步服务调用的监听器
*/
LinkKit.getInstance().registerOnPushListener(connectNotifyListener);
//同步服务调用监听器
private IConnectNotifyListener connectNotifyListener = new IConnectNotifyListener() {
@Override
public void onNotify(String connectId, String topic, AMessage aMessage) {
/**
* 添加IPC SDK对同步服务调用的监听
*/
IPCDev.getInstance().notifySyncTopicReceived(connectId, topic, aMessage);
if (CONNECT_ID.equals(connectId) && !TextUtils.isEmpty(topic) &&
topic.startsWith("/sys/" + productKey + "/" + deviceName + "/rrpc/request")) {
Log.d(TAG, "IConnectNotifyListener onNotify() called with: connectId = [" + connectId + "], topic = ["
+ topic + "], aMessage = ["
+ new String((byte[])aMessage.data) + "]");
}
}
@Override
public boolean shouldHandle(String connectId, String topic) {
return true;
}
@Override
public void onConnectStateChange(String connectId, ConnectState connectState) {
}
};
混淆配置
# keep linkvisual
-keep class com.aliyun.iotx.linkvisual.ipc.** { *; }
依赖引入
// 1. 根build.gradle添加对aliyun maven仓库的引用
allprojects {
repositories {
maven {
url "http://maven.aliyun.com/nexus/content/repositories/releases"
}
}
}
// 2. app build.gradle中添加依赖
implementation 'com.aliyun.iotx:linkvisual-ipc:1.3.0'
功能描述
- 存储卡录像查看:将存储在SD卡等外存中的录像文件推到服务端,支持seek到指定位置操作。
- 语音对讲:与App端建立双向语音通道,设备端采集录音并实时发送至App端,同时接收到App端发送的语音进行播放。
- 拍照:抓拍当前摄像头画面并上传至云端。
- 上报事件:上报带图片的事件给云端。