SabineSwissSDK 1.0.2

SabineSwissSDK 1.0.2

许可证 MIT
发布最新发布2017年9月

zhaoxinlei 维护。



  • 作者:
  • zhaoxinlei

##AlayaSDK iOS版本接入说明(v1.0.1)
注1*: 该静态库只能使用真机进行编译调试
注2*: 如果在使用SDK录制期间还使用了内置麦克风,请将AVAudioSessionCategoryOptionAllowBluetooth这一配置项取消掉


0.接入准备

0.1 将SDK包导入到工程中

在工程中添加 SabineSwissSDK.framework 包

0.2 引入头文件

在需要使用SDK的类中引入 #import < SabineSwissSDK/SabineSwissSDK.h>,并将该类的.m文件改为.mm格式

0.3 加入对EAP协议的支持

EAP协议是iOS设备访问以非标准蓝牙协议访问外部蓝牙设备的必要协议,需要在工程中开启方可使用。请在工程的info.plist中添加"Supported external accessory protocols"字段,并添加一个string类型的"com.sabinetek.iisrecorder"的item,详见demo中的配置。

##1. 初始化
###1.1 将耳机与iPhone相连
使用该SDK之前,请先确保ALAYA已经与调试设备相连。
连接方法:

[STDManager sharedInstance]

确保ALAYA处于关机、有电的情况下,长按开关键约5-7秒,至提示灯以蓝绿交替方式闪烁后,在手机上搜索Sabine_XXX蓝牙设备,点击以建立连接。
连接于iPhone的耳机

- (BOOL)STD_Connect;

###1.2 录音链接创建
该功能是任何应用程序使用Alaya设备的必要步骤,通过以下流程实现:
实例化STDManager类,创建单例

- (void)STD_Disconnect;

注册 STAccessoryConnectStateChangeNotification 通知,监听蓝牙协议连接状态变化。

然后调用

该方法的返回值表示是否正在连接的是Sabine Alaya。

连接蓝牙协议(建议在app启动时调用 - (void)applicationDidBecomeActive:),成功时会收到通知,此时isConnect 字段为YES 表示连接成功。

如果需要断开蓝牙协议,则调用

- (BOOL)STDR_Start;

建议在app terminate时调用,断开蓝牙协议

- (BOOL)STDR_StartWithDelegate:(id <STDManagerAudioStreamDelegate>)delegate;

##2. 录音数据收发开关
作为一个蓝牙设备,当Alaya通过蓝牙通道向设备发送立体声音频数据的时候,需要经过采集、编码、降噪、蓝牙传输等多个步骤,而这些事务将显著增加Alaya的电量消耗。当Alaya一直处于音频数据发送状态时只能连续工作8小时,而如果仅仅是与手机建立蓝牙链接而不发送数据,则可以工作30小时。因此当应用程序的业务逻辑不需要音频的时候,建议停止Alaya的录音数据发送。

- (BOOL)STDR_Stop;

###2.1开始获取录音数据

注:需要收到STAccessoryConnectStateChangeNotification 通知后再调用下面的 start 方法,连接需要1-2s时间,如果直接 start 可能在 delegate 回调中无法正常收到数据

@property (nonatomic, assign) NSInteger monitor 

打开Alaya的录音数据发送开关的方法为

+ (void)setSabineLog:(BOOL)isOn; 

开始接收数据后,数据可以在代理方法中获取到录音数据为PCM格式。位宽16Bit、采样率为48000Hz,若编码成AAC格式其码率建议是128kbps

+ (BOOL)isSabineLogOn;

接收到的数据通过代理方法 STD_PCMBuffer:didReceivePCMBytes:pcmByteSize: 获取。

@property (nonatomic, strong, readonly)STCircularPCMBufferModel *pcmCircularBuffer;

###2.2停止获取录音数据

@property (nonatomic, assign, readonly) BOOL isRecording;

结束PCM获取数据

@property (nonatomic, assign) STDAudioSampleRate sampleRate;
typedef NS_ENUM(NSInteger, STDAudioSampleRate){
    STDAudioSampleRate48000,
    STDAudioSampleRate44100
};

##3.耳机状态控制功能

###3.1监听控制 (v0.50 后改为 NSInteger 类型, 取值范围 0 ~ 20)

@property (nonatomic, assign) BOOL jitterControlOn;

该功能可用于在录音数据开关打开的时候,正在录制的声音是否会在耳机中立即播放。

设置方法:

typedef NS_ENUM(NSInteger, STDHardwardType) {
    STDHardwardTypeNone = 0,
    STDHardwardTypeAlayaSilver,
    STDHardwardTypeAlayaPro,
    STDHardwardTypeSMIC
};

@property (nonatomic, assign, readonly) STDHardwardType deviceType;

用于打开/关闭监听功能 (v0.31 后已改为默认是关闭状态, monitorOn == NO)

@property (nonatomic, assign) NSInteger ans; // 降噪等级 范围 0 ~ 20
@property (nonatomic, assign) NSInteger mixer; // 混音开关 范围 0 ~ 20
@property (nonatomic, assign) NSInteger reverb; // 混响开关(目前只对SMIC有效) 范围 0 ~ 20
@property (nonatomic, assign) BOOL agcOn;      // 自动增益控制开关, 默认为打开
@property (nonatomic, assign) NSInteger micGain; // mic 增益调节, 范围 0 ~ 20