IAudioDeviceManager
音频设备管理方法。
IAudioDeviceManager 接口类提供用于测试音频设备的相关接口。你可以通过实例化 IAudioDeviceManager 类来获取 IAudioDeviceManager 接口。
enumeratePlaybackDevices
获取系统中所有的播放设备列表。
virtual IAudioDeviceCollection* enumeratePlaybackDevices() = 0;
该方法返回一个 IAudioDeviceCollection 对象,包含系统中所有的播放设备。通过 IAudioDeviceCollection 对象,App 可以枚举播放设备。在使用结束后,app 需调用 release 方法销毁返回的对象。
返回值
- 方法调用成功:返回一个 IAudioDeviceCollection 对象,包含所有的音频播放设备。
- 方法调用失败: NULL。
enumerateRecordingDevices
获取系统中所有的音频采集设备列表。
virtual IAudioDeviceCollection* enumerateRecordingDevices() = 0;
该方法返回一个 IAudioDeviceCollection 对象,包含系统中所有的音频采集设备。通过 IAudioDeviceCollection 对象,App 可以枚举音频采集设备。在使用结束后,App 需调用 release 方法销毁返回的对象。
返回值
- 方法调用成功:返回一个 IAudioDeviceCollection 对象,包含所有的音频采集设备。
- 方法调用失败: NULL。
followSystemLoopbackDevice
设置声卡采集设备是否跟随系统默认的播放设备。
virtual int followSystemLoopbackDevice(bool enable) = 0;
- 自从
- v4.0.1
参数
- enable
- 是否跟随系统默认的播放设备:
true
:跟随。当系统默认播放设备发生改变时,SDK 立即跟随切换声卡采集设备。false
:不跟随。只有当 SDK 使用的声卡采集设备被移除后,SDK 才切换至系统默认的音频播放设备。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
followSystemPlaybackDevice
设置 SDK 使用的音频播放设备跟随系统默认的音频播放设备。
virtual int followSystemPlaybackDevice(bool enable) = 0;
参数
- enable
- 是否跟随系统默认的音频播放设备:
true
:跟随。当系统默认音频播放设备发生改变时,SDK 立即切换音频播放设备。false
:不跟随。只有当 SDK 使用的音频播放设备被移除后,SDK 才切换至系统默认的音频播放设备。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
followSystemRecordingDevice
设置 SDK 使用的音频采集设备跟随系统默认的音频采集设备。
virtual int followSystemRecordingDevice(bool enable) = 0;
- enable
- 是否跟随系统默认的音频采集设备:
true
:跟随。当系统默认的音频采集设备改变时,SDK 立即切换音频采集设备。false
:不跟随。只有当 SDK 使用的音频采集设备被移除后,SDK 才切换至系统默认的音频采集设备。
返回
- 0:方法调用成功
- < 0:方法调用失败
getLoopbackDevice
获取当前的声卡采集设备。
virtual int getLoopbackDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
- 自从
- v4.0.1
参数
- deviceId
- 输出参数,当前声卡采集设备的 ID。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
getPlaybackDevice
获取当前音频播放设备。
virtual int getPlaybackDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
参数
- deviceId
- 输出参数,当前音频播放设备的设备 ID。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
getPlaybackDeviceInfo
根据设备 ID 和设备名称获取播放设备。
virtual int getPlaybackDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;
参数
- deviceId
- 播放设备的设备 ID。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
- deviceName
- 播放设备的设备名称。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
getRecordingDevice
获取当前音频采集设备。
virtual int getRecordingDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
参数
- deviceId
- 输出参数。当前采集设备的设备 ID。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
getRecordingDeviceInfo
根据设备名称和设备 ID 获取音频采集设备信息。
virtual int getRecordingDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;
参数
- deviceId
- 播放设备的设备 ID。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
- deviceName
- 播放设备的设备名称。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
release
释放 IAudioDeviceManager 对象占用的所有资源。
virtual void release() = 0;
setLoopbackDevice
指定声卡采集设备。
virtual int setLoopbackDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
- 自从
- v4.0.1
SDK 默认采用当前的播放设备作为声卡采集设备,如果想要指定其他音频设备作为声卡采集设备,则调用该方法并设置 deviceId 为你想要指定的声卡采集设备。
该方法适用的场景如下:
- 如果设置声卡采集设备为蓝牙耳机,则 SDK 会将 app A 中的音乐发布到远端。
- 如果设置声卡采集设备设置为扬声器,则 SDK 不会将 app A 中的音乐发布到远端。
- 如果设置声卡采集设备为蓝牙耳机后,又改用有线耳机播放 app A 中的音乐,则需要重新调用该方法,设置声卡采集设备为有线耳机,则 SDK 会继续将 app A 中的音乐发布到远端。
参数
- deviceId
-
指定 SDK 的声卡采集设备。由 enumeratePlaybackDevices 获取。插拔设备不会影响 deviceId。
最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
setPlaybackDevice
指定播放设备。
virtual int setPlaybackDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
参数
- deviceId
-
指定播放设备。由 enumeratePlaybackDevices 获取。插拔设备不会影响 deviceId。
最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
setRecordingDevice
指定音频采集设备。
virtual int setRecordingDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
参数
- deviceId
-
音频采集设备的 Device ID。可通过 enumerateRecordingDevices 获取。插拔设备不会影响 deviceId。
最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
setRecordingDeviceVolume
设置音频采集设备音量。
virtual int setRecordingDeviceVolume(int volume) = 0;
参数
- volume
- 音频采集设备音量。取值范围 [0,255]。0 代表无声,255 代表最大音量。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
startAudioDeviceLoopbackTest
开始音频设备回路测试。
virtual int startAudioDeviceLoopbackTest(int indicationInterval) = 0;
该方法测试音频采集和播放设备是否能正常工作。一旦测试开始,音频采集设备会采集本地音频,然后使用音频播放设备播放出来。SDK 会按设置的时间间隔触发两个 onAudioVolumeIndication 回调,分别报告音频采集设备(uid = 0)和音频播放设置(uid = 1)的音量信息。
- 该方法需要在加入频道前调用。
- 该方法仅在本地进行音频设备测试,不涉及网络连接。
参数
- indicationInterval
- SDK 触发 onAudioVolumeIndication 回调的时间间隔,单位为毫秒。建议设置到大于 200 毫秒。不得少于 10 毫秒,否则会收不到 onAudioVolumeIndication 回调。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
startPlaybackDeviceTest
启动音频播放设备测试。
virtual int startPlaybackDeviceTest(const char* testAudioFilePath) = 0;
该方法测试音频播放设备是否能正常工作。启动测试后,SDK 播放指定的音频文件,测试者如果能听到声音,说明播放设备能正常工作。
调用该方法后,SDK 会每隔 100 ms 触发一次 onAudioVolumeIndication 回调,报告 uid = 1 及播放设备的音量信息。
参数
- testAudioFilePath
-
音频文件的绝对路径,路径字符串使用 UTF-8 编码格式。
- 支持文件格式: wav、mp3、m4a、aac。
- 支持文件采样率: 8000、16000、32000、44100、48000。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
startRecordingDeviceTest
启动音频采集设备测试。
virtual int startRecordingDeviceTest(int indicationInterval) = 0;
该方法测试音频采集设备是否能正常工作。调用该方法后,SDK 会按设置的时间间隔触发 onAudioVolumeIndication 回调,报告 uid = 0 及采集设备的音量信息。
参数
- indicationInterval
- SDK 触发 onAudioVolumeIndication 回调的时间间隔,单位为毫秒。建议设置到大于 200 毫秒。不得小于 10 毫秒,否则会收不到 onAudioVolumeIndication 回调。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
stopAudioDeviceLoopbackTest
停止音频设备回路测试。
virtual int stopAudioDeviceLoopbackTest() = 0;
- 该方法需要在加入频道前调用。
- 在调用 startAudioDeviceLoopbackTest 后,必须调用该方法停止音频设备回路测试。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
stopPlaybackDeviceTest
停止音频播放设备测试。
virtual int stopPlaybackDeviceTest() = 0;
该方法停止音频播放设备测试。调用 startPlaybackDeviceTest 后,必须调用该方法停止测试。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
stopRecordingDeviceTest
停止音频采集设备测试。
virtual int stopRecordingDeviceTest() = 0;
该方法停止音频采集设备测试。调用 startRecordingDeviceTest 后,必须调用该方法停止测试。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。