为了保证实时通信体验,通话前可以进行网络与设备的检测,提前识别并排查问题。
本文将介绍如何使用 ZEGO SDK 接口,实现上述两个角度的检测。
请参考 网络与性能 进行操作。
麦克风设备检测流程如下图所示:
)
1. 启动麦克风
调用 startPreview 接口在不推流的情况下启动音频采集。
[self.zegoApi startPreview];
2. 检测麦克风权限
ZEGO SDK 会自动检查麦克风权限。如果用户未授权,则会请求用户同意;如果用户拒绝,则需要用户手动去系统设置里开启权限。
3. 检测麦克风是否可用
调用 zego_onDevice:error: 接口检测设备是否异常,若未检测到任何异常反馈(可同步启动“4. 检测麦克风收音数据”),且麦克风收音数据检测正常,则麦克风设备可用。
/**
设备事件回调
@param deviceName 设备类型名称。返回值 kZegoDeviceCameraName/kZegoDeviceMicrophoneName/kZegoDeviceAudioName
@param errorCode 错误码。 返回值参考 ZegoAPIDeviceErrorCode 定义
@param deviceID 出错的设备id (目前仅支持mac设备)
@discussion 调用 [ZegoLiveRoomApi -setDeviceEventDelegate] 设置设备事件代理对象后,在此回调中获取设备状态或错误
*/
- (void)zego_onDevice:(NSString *)deviceName error:(int)errorCode deviceID:(NSString *)deviceID;
4. 检测麦克风收音数据
调用 getCaptureSoundLevel 接口获取麦克风采集到声音的能量值,如果数据无异常则麦克风正常,可用于通话。
float soundLevel = [self.zegoApi getCaptureSoundLevel];
摄像头设备检测流程如下图所示:
)
1. 启动摄像头
通过 startPreview 接口绑定摄像头预览画面的视图,在不推流的情况下启动视频采集并预览。
[self.zegoApi setPreviewView:[self getView]];
[self.zegoApi startPreview];
2. 检测摄像头权限
ZEGO SDK 会自动检查麦克风权限。如果用户未授权,则会请求用户同意;如果用户拒绝,则需要用户手动去系统设置里开启权限。
3. 检测摄像头是否可用
通过 zego_onDevice:error: 接口检测设备是否异常,若未检测到任何异常反馈(可同步启动“4. 检测画面是否正常”),且画面显示正常,则设备可用。
/**
设备事件回调
@param deviceName 设备类型名称。返回值 kZegoDeviceCameraName/kZegoDeviceMicrophoneName/kZegoDeviceAudioName
@param errorCode 错误码。 返回值参考 ZegoAPIDeviceErrorCode 定义
@param deviceID 出错的设备id (目前仅支持mac设备)
@discussion 调用 [ZegoLiveRoomApi -setDeviceEventDelegate] 设置设备事件代理对象后,在此回调中获取设备状态或错误
*/
- (void)zego_onDevice:(NSString *)deviceName error:(int)errorCode deviceID:(NSString *)deviceID;
4. 检测画面是否正常
若此时画面显示正常,则摄像头正常,可用于通话。
播放设备检测流程如下图所示:
)
1. 使用媒体播放器播放音频文件
调用 ZegoMediaPlayer 接口播放您用于测试的音频文件。
ZegoMediaPlayer *mediaPlayer;
mediaPlayer = [[ZegoMediaPlayer alloc] initWithPlayerType:MediaPlayerTypePlayer playerIndex:ZegoMediaPlayerIndexFirst];
NSString *resourcePath = "xxx";
[mediaPlayer start:resourcePath startPosition:0];
2. 检测是否听到声音
如果可以听到相应的音频,则播放设备正常,可用于通话。
| 方法 | 描述 |
|---|---|
| startPreview | 启动本地预览 |
| zego_onDevice:error: | 设备事件回调 |
| getCaptureSoundLevel | 获取当前采集的音量 |
当开发者收到 zego_onDevice:error: 设备回调不为 0 时,相关的错误码如下:
| 方法 | 描述 |
|---|---|
| ZEGOAPI_DEVICE_ERROR_GENERIC = -1 | 一般性错误 |
| ZEGOAPI_DEVICE_ERROR_INVALID_ID = -2 | 无效设备 ID |
| ZEGOAPI_DEVICE_ERROR_NO_AUTHORIZATION = -3 | 没有权限 |
| ZEGOAPI_DEVICE_ERROR_ZERO_FPS = -4 | 采集帧率为 0 |
| ZEGOAPI_DEVICE_ERROR_IN_USE_BY_OTHER = -5 | 设备被占用 |
| ZEGOAPI_DEVICE_ERROR_UNPLUGGED = -6 | 设备未插入 |
| ZEGOAPI_DEVICE_ERROR_MEDIA_SERVICES_LOST = -8 | 媒体服务无法恢复 |
| ZEGOAPI_DEVICE_ERROR_IN_USE_BY_SIRI = -9 | 设备被 SIRI 占用 |

联系我们
文档反馈