SDK概述
BKSmartSDK 提供了与远端摄像头设备通讯的接口封装,加速应用开发过程,后面章节统一称为 SDK 。主要包括了以下功能:
对设备进行配网
获取摄像头实时采集的影像。
获取摄像头传来的音频与摄像头设备通话。
音频的录制与播放。
AVDK版本对应:
芯片名称 |
产品类型 |
AVDK版本 |
|---|---|---|
BK7258 |
智能门铃、门锁 |
2.0.1.9+ |
开发指南
快速集成
本文介绍如何将SDK快速集成到您的项目中。SDK 要求 iOS 版本不低于 12.0 , 不支持模拟器运行。
下载SDK
访问 Gitlab仓库 下载SDK即可。
备注
从官网的gitlab下载的为最近的SDK代码,相关账号找项目上审核申请。
集成
将BKSmartSDK拖入项目中,如下图所示:
framework
drag_in
添加依赖库:
libz.tbdlibbz2.tbdlibiconv.tbdVideoToolbox.framework
如下图所示:
dependency
添加配置
Xcode -> Build Settings -> Other Linker Flags 添加 -Objc
Xcode > Build Settings -> Other C Flags 添加 -DLINUX
至此,BKSmartSDK 已经成功集成,可以开始 使用SDK开发功能了。
备注
由于BKSmartSDK是Objective-C与Swift混编库,如果项目是纯Objective-C开发,集成以后编译可能会报错,需要创建一个Swift文件(空文件即可)在项目中。
oc_error
设备配网
版本适配
iOS 13 版本适配
从 iOS 13 版本开始,如果用户没有开启地理位置权限,在已开启 Wi-Fi 权限的前提下, 将获取不到有效的 Wi-Fi SSID 或 BSSID。
功能说明
相关类(协议)说明
类名(协议名) |
说明 |
|---|---|
BKSmartWifiTool |
wifi工具类 |
BKSmartActivator |
提供蓝牙配网能力 |
BKSma rtActivatorDelegate |
配网代 理协议,配网方法的结果反馈都将通过代理方法回调 |
BKSmartDeviceModel |
BK设备 |
BKSmartP2PLicense |
尚云P2P license信息 |
BKSmartWifiInfo |
wifi信息 |
配网流程
备注
配网前请在Info.plist中添加蓝牙权限使用说明:NSBluetoothAlwaysUsageDescription
获取当前手机连接SSID
可通过工具类BKSmartWifiTool获取当前手机连接Wiifi的SSID。
导入头文件:#import <BKSmartUtilKit/BKSmartUtilKit.h>
+ (void)getSSID:(BKSmartWifiToolSSIDCompletionHandler)handler;
备注
iOS12以上需要在Capabilities中加入Access WiFi Information权限才能获取Wi-Fi信息。
wifi
监听蓝牙状态
导入头文件:#import "BKSmartActivatorKit/BKSmartActivatorKit.h"
初始化BKSmartActivator对象,设置delegate即可开始监听状态。
代理回调
- (void)activator:(BKSmartActivator*)activator didUpdateState:(BOOL)isPowerOn;
扫描设备
监听状态isPowerOn表示蓝牙状态可用,就可以开始扫描设备了。
接口说明
开始扫描设备
- (void)startScan;
停止扫描设备
- (void)stopScan;
代理回调
扫描到新的设备
- (void)activator:(BKSmartActivator*)activator didDiscoverDevice:(BKSmartDeviceModel*)device;
设备配网
接口说明
开始对设备进行配网
- (void)activeDevice:(BKSmartDeviceModel*)device p2pConfig:(BKSmartCameraP2PConfig*)p2pConfig;
停止配网
- (void)stopActiveDevice;
代理回调
//配网进度更新
- (void)activator:(BKSmartActivator*)activator didUpdateActiveProgress:(CGFloat)progress;
//配网进度信息
- (void)activator:(BKSmartActivator*)activator didUpdateActiveInfo:(NSString*)info;
//配网结束: 配网成功error为空,配网失败error不为空。
- (void)activator:(BKSmartActivator*)activator didFinishActiveDevice:(BKSmartDeviceModel*)device
error:(NSError* _Nullable)error;
错误回调
配网过程中如果出现错误,将通过下面接口进行回调,返回对应Error。
- (void)activator:(BKSmartActivator*)activator didFinishActiveDevice:(BKSmartDeviceModel*)device
error:(NSError* _Nullable)error;
错误码枚举值
枚举值 |
值 |
说明 |
|---|---|---|
BKSmartActivatorErrorBLENotAvailable |
100 |
蓝牙状态不可用(不支持或未开启蓝牙授权等 |
BKSmartActivatorErrorDeviceNotFound |
101 |
连接时,设备查找失败 |
BKSmartActivatorErrorDeviceConnectFailed |
102 |
设备连接失败 |
BKSmartActivatorErrorDeviceDisconnected |
103 |
与设备断开连接 |
BKSmartActivatorErrorActiveDeviceFailed |
104 |
配网失败 |
摄像头功能
SDK 提供智能摄像头的实时视频图像获取,摄像头音频数据获取,与摄像头实时通话等基础能力。
相关类(协议)说明
类名(协议名) |
说明 |
|---|---|
|
摄像头配置 |
|
摄像头 |
|
代理回调 |
导入头文件:#import <BKSmartCameraKit/BKSmartCameraKit.h>
P2P连接
在开始播放视频之前,需要先与设备建立连接。 连接状态需要开发者自己维护,SDK 只负责下发命令和接收摄像机响应结果。
接口说明
开始连接p2p通道
- (void)connect;
断开p2p通道
- (void)disconnect;
代理回调
p2p通道连接成功
- (void)cameraDidConnected:(BKSmartCamera*)camera;
p2p通道断开连接
- (void)cameraDidDisconnected:(BKSmartCamera*)camera;
实时视频
p2p连接成功以后,就可以开始获取实时视频图像数据了。
接口说明
开启视频播放
- (void)openVideoPreview;
开启/关闭视频图像降噪(默认关闭):
- (void)denoiseEnable:(BOOL)isEnable;
关闭视频播放
- (void)closeVideoPreview;
代理回调
视频播放开启成功
- (void)cameraDidOpenVideoPreview:(BKSmartCamera*)camera;
视频数据回调
//未解包的原始数据
- (void)camera:(BKSmartCamera*)camera didReciveVideoFrameRawData:(NSData*)data;
//解包后的可用数据
- (void)camera:(BKSmartCamera*)camera didReciveVideoFrameUnpackedData:(NSData*)data;
//解包以后的坏数据
- (void)camera:(BKSmartCamera*)camera didReciveVideoFrameUnpackedBadData:(NSData*)data;
//解包以后的数据帧(UIImage),可直接显示
- (void)camera:(BKSmartCamera*)camera didReciveVideoFrame:(BKSmartCameraVideoFrame*)videoFrame;
视频播放关闭成功
- (void)cameraDidCloseVideoPreview:(BKSmartCamera*)camera;
音频
p2p连接成功以后,就可以开始获取音频数据了。
接口说明
开启音频
- (void)openAudio;
关闭音频
- (void)closeAudio;
发送对讲录音数据
- (void)sendSpeakerData:(NSData*)data;
备注
只有在开启音频成功以后,才能发送录音数据
代理回调
开启音频成功
- (void)cameraDidOpenAudio:(BKSmartCamera*)camera;
音频数据回调
//收到音频数据 (解码以后的数据)
- (void)camera:(BKSmartCamera*)camera didReciveAudioFrame:(BKSmartCameraAudioFrame*)audioFrame;
//收到音频数据元数据 (未解码的元数据)
- (void)camera:(BKSmartCamera*)camera didReciveAudioFrameRawData:(NSData*)data;
关闭音频成功
- (void)cameraDidCloseAudio:(BKSmartCamera*)camera;
音频录制与播放
SDK提供了进行音频录制与播放音频的相关功能。在上面音频和对讲打开以后,即可以通过该工具类进行音音频播放和录制。
相关类(协议)说明
接口说明
类名(协议名) |
说明 |
|---|---|
BKSmartAudioIOManager |
音频管理类 |
BKSmartAudioIOManagerDelegate |
代理类 |
导入头文件:#import <BKSmartAudioKit/BKSmartAudioKit.h>
音频播放
接口说明
//开启音频播放
- (void)startPlay;
//播放音频数据
- (void)play:(NSData*)data;
//关闭音频播放
- (void)stopPlay;
音频录制
备注
音频录制需要在Info.plist中添加麦克风权限使用说明:NSMicrophoneUsageDescription
接口说明
//开启音频录制
- (void)startRecord;
//设置AEC状态
- (void)setRecordAECEnable:(BOOL)enable;
//停止音频录制
- (void)stopRecord;
代理回调
接收录制的音频数据,拿到数据以后即可进行发送。
- (void)audioIOManager:(BKSmartAudioIOManager*)manager didRecord:(NSData*)data;
LCD控制
p2p连接成功以后,就可以控制LCD了。
打开LCD
- (void)openLCD;
关闭LCD
- (void)closeLCD;
代理回调
打开LCD成功
- (void)cameraDidOpenLCD:(BKSmartCamera*)camera;
关闭LCD成功
- (void)cameraDidCloseLCD:(BKSmartCamera*)camera;
错误回调
摄像头操作的所有错误反馈都将通过代理方法回调。
接口说明
摄像头操作失败回调
- (void)camera:(BKSmartCamera*)camera didOccuredError:(NSError*)error whenAction:(BKSmartCameraAction)action;
错误码枚举值:
枚举值 |
值 |
说明 |
|---|---|---|
BKSmartCameraErrorP2PLicenseInvalid |
200 |
尚云license无效 |
BKSmartCameraErrorP2PConnectFailed |
201 |
尚云P2P连接失败 |
BKSmartCameraErrorP2PDisconnected |
202 |
尚云P2P断开连接 |
BKSmartCameraErrorOpenVideoFailed |
300 |
开启实时视频失败 |
BKSmartCameraErrorCloseVideoFailed |
301 |
关闭实时视频失败 |
BKSmartCameraErrorOpenAudioFailed |
400 |
开启音频失败 |
BKSmartCameraErrorCloseAudioFailed |
401 |
关闭音频失败 |
BKSmartCameraErrorOpenLCDFailed |
500 |
打开LCD失败 |
BKSmartCameraErrorCloseLCDFailed |
501 |
关闭LCD失败 |