SDK概述
BKSmartSDK 提供了与远端摄像头设备通讯的接口封装,加速应用开发过程,后面章节统一称为 SDK 。主要包括了以下功能:
对设备进行配网
获取摄像头实时采集的影像。
获取摄像头传来的音频与摄像头设备通话。
音频的录制与播放。
AVDK版本对应:
芯片名称 |
产品类型 |
AVDK版本 |
|---|---|---|
BK7258 |
智能门铃、门锁 |
2.0.1.9+ |
开发指南
快速集成
本文介绍如何将SDK快速集成到您的项目中,需要安卓 5.0 以及以上版本。
下载SDK
访问 Gitlab仓库 下载SDK即可。
备注
从官网的gitlab下载的为最近的SDK代码,相关账号找项目上审核申请。
集成
将下载的aar包,放入项目的libs文件夹下,并通过gradle的方式进行引入。
示例:
implementation(files("libs/iotsdk-v2.0.1.aar"))
设备配网
系统要求
蓝牙使用需要安卓 5.0 以及以上版本
Manifest权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
蓝牙权限检测
每次扫描和连接前,都要进行检测,否则 App 无法使用后续功能。
App 在使用蓝牙连接或者扫描操作前,需要检查 App 定位权限是否被允许。
检查蓝牙状态是否为开启
位置服务是否打开
功能说明
相关类(协议)说明
类名(协议名) |
说明 |
|---|---|
BkSmartBleScanOptions |
ble扫描配置类 |
BkSmartBleActivateOptions |
ble配网配置类 |
BKSmartBleActivator |
ble扫描和配网的代理 |
扫描流程
接口说明
配置扫描选项
fun setActivateOptions(options: BkSmartBleActivateOptions)
开始扫描
fun startScan(context: Context)
结束扫描
fun stopScan(context: Context)
代理回调
扫描结果
fun onScanResult(device: BluetoothDevice, rssi: Int)
扫描出错
fun onError(code: Int)
配网
接口说明
设置配网选项
fun setActivateOptions(options: BkSmartBleActivateOptions)
开始配网
fun activate(context: Context)
结束配网
fun stopActivate(context: Context)
代理回调
配网信息回调
fun onProgressMsg(msg: String)
配网结束
fun onResult(code: Int)
摄像头功能
SDK 提供智能摄像头的实时视频图像获取,摄像头音频数据获取,与摄像头实时通话等基础能力。
系统要求
蓝牙使用需要安卓 5.0 以及以上版本
Manifest权限
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
相关类(协议)说明
类名(协议名) |
说明 |
|---|---|
BKSmartCameraDelegate |
操作camera的类 |
BkSmartCameraConnectOptions |
camera连接的配置类 |
BkSmartCameraVideoOptions |
camera video的配置类 |
BkSmartCameraLcdOptions |
camera lcd的配置类 |
BkSmartCameraAudioOptions |
camera audio的配置类 |
P2P连接
在开始播放视频之前,需要先连接尚云 p2p 通道。p2p 的连接状态需要开发者自己维护,SDK 只负责下发命令和接收摄像机响应结果。
接口说明
配置连接选项
fun setConnectOptions(bkSmartCameraConnectOptions: BkSmartCameraConnectOptions)
开始连接p2p通道
fun connect()
断开p2p通道
fun disconnect()
代理回调
p2p通道连接成功
fun onConnected()
p2p通道断开连接
fun onDisconnected()
实时视频
p2p连接成功以后,就可以开始获取实时视频图像数据了。
接口说明
配置视频选项
fun setVideoOptions(bkSmartCameraVideoOptions: BkSmartCameraVideoOptions)
开启视频播放
fun openVideoPreview()
关闭视频播放
fun closeVideoPreview()
降噪开关
fun enableNoiseReduction(enable: Boolean)
代理回调
videopreview开关回调
fun onVideoPreviewState(videoPreviewOn: Boolean)
解包后的可用数据
fun onReceiveFrameUnpackedData(frameData: ByteArray)
解包以后的坏数据
fun onReceiveFrameUnpackedBadData(frameData: ByteArray)
解包以后的数据帧,可直接显示
fun onReceiveFrame(bitmap: Bitmap, noiseReduction: Boolean)
音频
p2p连接成功以后,就可以开始获取音频数据了。
接口说明
配置音频选项
fun setAudioOptions(bkSmartCameraAudioOptions: BkSmartCameraAudioOptions)
开启音频(板子发送给手机端的音频)
fun openAudio()
关闭音频(板子发送给手机端的音频)
fun closeAudio()
开启对讲(会同时打开板子发给手机端的音频)
fun openIntercom()
关闭对讲
fun closeIntercom()
代理回调
player和recorder的状态回调
fun onState(playerOn: Boolean, recorderOn: Boolean)
audio channel的操作状态回调
fun onChannelState(operating: Boolean)
错误回调
fun onError(code: Int)
上传的原始录音数据
fun onAudioUpOriginalStream(pcmData: ByteArray)
上传的编码后的数据
fun onAudioUpEncodedStream(encodedData: ByteArray, format: Int)
接收到板子的编码数据
fun onAudioDownUnpackedStream(unpackedData: ByteArray, format: Int)
接收到板子数据,然后手机端进行解码的数据
fun onAudioDownDecodedStream(pcmData: ByteArray)
LCD控制
p2p连接成功以后,就可以控制LCD了。
接口说明
获取LCD状态
fun fetchLcdState()
打开LCD
fun openLcd()
关闭LCD
fun closeLcd()
代理回调
lcd状态回调
fun onLcdState(on: Boolean)
错误回调
fun onError(code: Int)
Code
名称 |
值 |
说明 |
|---|---|---|
SUCCESS |
0 |
成功 |
BLE_NOT_AVAILABLE |
100 |
蓝牙 状态不可用(不支持或未开启蓝牙授权等 |
BLE_DEVICE_NOT_FOUND |
101 |
连接时,设备查找失败 |
BLE _DEVICE_CONNECT_FAILED |
102 |
设备连接失败 |
B LE_DEVICE_DISCONNECTED |
103 |
与设备断开连接 |
BLE_ACTIVATE_FAILED |
104 |
配网失败 |
BLE_ACTIVATE_TIME_OUT |
105 |
配网超时 |
BLE_SCAN_TIME_OUT |
106 |
扫描超时 |
P2P_LICENSE_INVALID |
200 |
key无效 |
P2P_CONNECT_FAILED |
201 |
连接失败 |
P2P_DISCONNECTED |
202 |
断连 |
P2P_CONNECT_SUCCESS |
203 |
连接成功 |
OPEN_VIDEO_FAILED |
300 |
打开video失败 |
CLOSE_VIDEO_FAILED |
301 |
关闭video失败 |
OPEN_AUDIO_FAILED |
400 |
打开audio失败 |
CLOSE_AUDIO_FAILED |
401 |
关闭video失败 |
OPEN_LCD_FAILED |
500 |
打开lcd失败 |
CLOSE_LCD_FAILED |
501 |
关闭lcd失败 |