初始化SDK
更新时间:2020-03-19
我们提供了一个简单的集成示例。初次使用,推荐参考 Sample Application 配合官网文档来进行 SDK 的集成。
Sample 中包含了最小程度的集成代码示例,开发者可以直接将 SDK 的 AAR 文件导入 Sample 中运行。 如果 Sample 中各项功能均能够运行成功,则说明硬件和系统环境已经集成完毕。开发者可以参考 Sample 中的代码来使用 SDK 的各项功能。
接下来介绍手动集成 AAR 到项目中的步骤:
集成步骤
-
在项目的build.gradle中进行依赖配置,配置如下:
android { repositories { flatDir { dir 'libs' } } } dependencies { implementation(name: <在这里输入放在libs文件夹下robotsdk的文件名(不含扩展名)>, ext:'aar') }
-
需要添加的远程依赖如下,如您项目中已经包含则无需添加:
// Android Official libs implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' // Third party libs implementation 'com.google.android.exoplayer:exoplayer:2.8.2' implementation 'com.elvishew:xlog:1.6.1' implementation 'com.squareup.okio:okio:1.14.0' implementation 'com.squareup.okhttp3:okhttp:3.10.0' implementation 'com.alibaba:fastjson:1.2.56' implementation 'com.github.bumptech.glide:glide:4.9.0'
初始化
配置 SDK 初始化参数
SDK 有大量 configuration 供开发者自行配置,这里列出主要部分:
// SDK配置项
SDKConfig.Builder builder = new SDKConfig.Builder(); // SDKConfig构建对象
builder.context(context) // SDK需要的上下文
.clientid(<input-client_id-here>) // 设置项目使用的clientId 在云端新建项目时获取
.clientSecret(<input-client_secret-here>) // 设置项目使用的clientSecret 在云端新建项目时获取
.sdkType(<input-sdk-type-here>) // SDK 所使用的的功能类型
.wifiSSID(<input-wifi-ssid-here>) // 设置WiFi账户和密码,使用麦克风阵列时,设置阵列WiFi时使用;使用内置麦克风时不必填写。
.wifiPWD(<input-wifi-password-here>)
.wifiType(<input-wlan-secure-type-here>) // 设阵列网络时候要设置的网络安全类型
.setFaceGroup(<input-face-group-here>) // 设置在线人脸识别使用的人脸库
.speechServiceType(<input-speech-type-here>) // 设置麦克风输入类型
.faceAngle(<input-recognize-face-angle-here>) // 使用人脸识别功能时需要调整的角度
.faceRecognizeType(<input-recognize-type-here>) // 人脸识别功能类型:在线或离线
关于参数的具体介绍,可以参考 高级配置项 -> SDKConfig 的接口说明。
创建SDK激活结果的回调监听
初次使用SDK会在初始化时向Server端确认当前ClientID下的机器人应用是否还有可用配额。 开发者需要通过该回调监听激活状态。
RobotSDKEngine.DeviceActivationCallback mActivateCallback = new RobotSDKEngine.DeviceActivationCallback() {
@Override
public void onActivateSuccess() {
Log.d(TAG, "onActivateSuccess: ");
}
@Override
public void onActivateFailed(int errorCode, String errorMsg) {
Log.d(TAG, "onActivateFailed: " + errorMsg);
}
};
·····
RobotSDKEngine.getInstance().registerDeviceActivationCallback(mActivateCallback);
- SDK 内部对于接口回调实例统一以
WeakRefeence
形式持有,请请避免在这里传入临时变量或者匿名内部类,开发者需要自己持有回调实例。 - 如果SDK激活失败,请登录管理控制台,确认当前应用还有可用配额。
- 开发者必须在调用
initSDK
之前注册该回调方法,只有在收到成功回调onActivateSuccess()
之后,才能开始正常的调用SDK API提供的各项功能。
执行 SDK 的初始化
try {
RobotSDKEngine.getInstance().initSDK(builder.build());
} catch (Exception e) {
e.printStackTrace();
}
通过调用initSDK
方法进行初始化之后,可以在之前注册的DeviceActivationCallback
中收到设备激活结果的回调。初始化成功之后就可以开始正式使用SDK了。
获取设备ID
SDK激活完成后,您可以在管理控制台—设备管理的列表中查看到最新激活的设备ID、设备名称等信息。同时,SDK端可以通过调用RobotSDKEngine.getInstance().getSerialNumber()
函数获取设备ID,以建立Console端和SDK端的对应关系。