[English]

SDK概述

BKSmartSDK 提供了与远端摄像头设备通讯的接口封装,加速应用开发过程,后面章节统一称为 SDK 。主要包括了以下功能:

  • 对设备进行配网

  • 获取摄像头实时采集的影像。

  • 获取摄像头传来的音频与摄像头设备通话。

  • 音频的录制与播放。

AVDK版本对应:

芯片名称

产品类型

AVDK版本

BK7258

智能门铃、门锁

2.0.1.9+

开发指南

快速集成

本文介绍如何将SDK快速集成到您的项目中。SDK 要求 iOS 版本不低于 12.0 , 不支持模拟器运行

下载SDK

访问 Gitlab仓库 下载SDK即可。

备注

从官网的gitlab下载的为最近的SDK代码,相关账号找项目上审核申请。

集成

将BKSmartSDK拖入项目中,如下图所示:

framework

framework

drag_in

drag_in

添加依赖库:

  • libz.tbd

  • libbz2.tbd

  • libiconv.tbd

  • VideoToolbox.framework

如下图所示:

dependency

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

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

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 提供智能摄像头的实时视频图像获取,摄像头音频数据获取,与摄像头实时通话等基础能力。

相关类(协议)说明

类名(协议名)

说明

BKSmartCameraConfig

摄像头配置

BKSmartCamera

摄像头

BKSmartCameraDelegate

代理回调

导入头文件:#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失败