
# 音频设备管理
本章节介绍了全平台C++ SDK的IHRTCAudioDeviceManager接口详情。
表1IHRTCAudioDeviceManager接口 
| 接口                                                                                     | 描述                           |
|:---|:---|
| [getPlaybackDevices]        | 获取系统音频播放设备列表                 |
| [getRecordDevices]          | 获取系统音频录制设备列表                 |
| [setPlaybackDevice]          | 指定音频播放设备                     |
| [setRecordDevice]           | 指定音频录制设备                     |
| [setPlaybackDeviceVolume]  | 设置音频播放设备音量                   |
| [setRecordDeviceVolume]     | 设置音频录制设备音量                   |
| [getPlaybackDeviceVolume] | 获取音频播放设备音量                   |
| [getRecordDeviceVolume]     | 获取音频录制设备音量                   |
| [setPlaybackDeviceMuteState]  | 设置音频播放设备是否静音                 |
| [setRecordDeviceMuteState]  | 设置音频录制设备是否静音                 |
| [getPlaybackDeviceMuteState] | 获取音频播放设备静音状态                 |
| [getRecordDeviceMuteState]   | 获取音频录制设备静音状态                 |
| [getCurrentPlaybackDevice] | 获取当前音频播放设备                   |
| [getCurrentRecordDevice]    | 获取当前音频录制设备                   |
| [recordingDeviceTest]                                | 音频采集设备测试（只支持Windows和macOS）   |
| [finishRecordingDeviceTest]                       | 结束音频采集设备测试（只支持Windows和macOS） |
| [playbackDeviceTest]                                | 音频播放设备测试（只支持Windows和macOS）   |
| [finishPlaybackDeviceTest]                          | 结束音频播放设备测试（只支持Windows和macOS） |
| [echoTest]                                         | 音频设备回路测试（只支持Windows和macOS）   |
| [finishEchoTest]                                   | 结束音频设备回路测试（只支持Windows和macOS） |
   
 #### getPlaybackDevices
```
virtual int getPlaybackDevices(HRTCDeviceInfo *deviceInfo, unsigned int *counts)
```
【**功能说明**】
获取系统音频播放设备列表。
【**请求参数**】
- deviceInfo：输出参数，获取系统设备详情，包括设备标识和设备名称。具体请参见[HRTCDeviceInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section1775174212306)。
- counts：输入输出参数，获取deviceInfo对象数量，输入值为deviceInfo的数量，将会返回小于等于counts数量的设备信息。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### getRecordDevices
```
virtual int getRecordDevices(HRTCDeviceInfo *deviceInfo, unsigned int *counts)
```
【**功能说明**】
获取系统音频录制设备列表。
【**请求参数**】
- deviceInfo：输出参数，获取系统设备详情，包括设备标识和设备名称。具体请参见[HRTCDeviceInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section1775174212306)。
- counts：输入输出参数，获取deviceInfo对象数量，输入值为deviceInfo的数量，将会返回小于等于counts数量的设备信息。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### setPlaybackDevice
```
virtual int setPlaybackDevice(const char deviceId[HRTC_MAX_DEVICE_ID_LEN + 1])
```
【**功能说明**】
指定音频播放设备。
【**请求参数**】
deviceId：设备标识。可通过[getPlaybackDevices]获取。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 通话前没有选择任何设备，通话中使用默认设备。
- 通话前已选择指定设备，通话中直接生效。
- 通话中有多个音频设备，拨出设备会自动切换。
- 通话中无音频设备，新插入设备，需要重新调用该接口指定设备。
 
 #### setRecordDevice
```
virtual int setRecordDevice(const char deviceId[HRTC_MAX_DEVICE_ID_LEN+ 1])
```
【**功能说明**】
指定音频录制设备。
【**请求参数**】
deviceId：设备标识。可通过[getRecordDevices]获取。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 通话前没有选择任何设备，通话中使用默认设备。
- 通话前已选择指定设备，通话中直接生效。
- 通话中有多个音频设备，拨出设备会自动切换。
- 通话中无音频设备，新插入设备，需要重新调用该接口指定设备。
 
 #### setPlaybackDeviceVolume
```
virtual int setPlaybackDeviceVolume(unsigned int volume)
```
【**功能说明**】
设置音频播放设备音量。
【**请求参数**】
volume：播放设备音量。取值范围为\[0,100\]。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### setRecordDeviceVolume
```
virtual int setRecordDeviceVolume(unsigned int volume)
```
【**功能说明**】
设置音频录制设备音量。
【**请求参数**】
volume：录音设备音量。取值范围为\[0,100\]。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### getPlaybackDeviceVolume
```
virtual int getPlaybackDeviceVolume(unsigned int *volume)
```
【**功能说明**】
获取音频播放设备音量。
【**请求参数**】
volume：播放设备音量，取值范围为\[0,100\]。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### getRecordDeviceVolume
```
virtual int getRecordDeviceVolume(unsigned int *volume)
```
【**功能说明**】
获取音频录制设备音量。
【**请求参数**】
volume：输出参数，录音设备音量。取值范围为\[0,100\]。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### setPlaybackDeviceMuteState
```
virtual int setPlaybackDeviceMuteState(bool mute)
```
【**功能说明**】
设置音频播放设备是否静音。
【**请求参数**】
mute：true表示设备设为静音，false表示设备设为不静音。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### setRecordDeviceMuteState
```
virtual int setRecordDeviceMuteState(bool mute)
```
【**功能说明**】
设置音频录制设备是否静音。
【**请求参数**】
mute：true表示设备设为静音，false表示设备设为非静音。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### getPlaybackDeviceMuteState
```
virtual int getPlaybackDeviceMuteState(bool *mute)
```
【**功能说明**】
获取音频播放设备静音状态。
【**请求参数**】
mute：true表示已静音状态，false表示非静音状态。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### getRecordDeviceMuteState
```
virtual int getRecordDeviceMuteState(bool *mute)
```
【**功能说明**】
获取音频录制设备静音状态。
【**请求参数**】
mute：true表示已静音状态，false表示非静音状态。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### getCurrentPlaybackDevice
```
virtual int getCurrentPlaybackDevice(char deviceId[HRTC_MAX_DEVICE_ID_LEN + 1])
```
【**功能说明**】
获取当前音频播放设备。
【**请求参数**】
deviceId：输出参数，当前播放设备标识。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### getCurrentRecordDevice
```
virtual int getCurrentRecordDevice(char deviceId[HRTC_MAX_DEVICE_ID_LEN+ 1])
```
【**功能说明**】
获取当前音频录制设备。
【**请求参数**】
deviceId：输出参数，当前录制设备标识。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### recordingDeviceTest
```
virtual int recordingDeviceTest(int intervalInMilliseconds)
```
【**功能说明**】
音频采集设备测试。
【**请求参数**】
intervalInMilliseconds：音量回调周期，单位毫秒，范围100到10000。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
只支持Windows和macOS。
 #### finishRecordingDeviceTest
```
virtual int finishRecordingDeviceTest()
```
【**功能说明**】
结束音频采集设备测试。
【**请求参数**】
无。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
只支持Windows和macOS。
 #### playbackDeviceTest
```
virtual int playbackDeviceTest(const char *testAudioFilePath)
```
【**功能说明**】
音频播放设备测试。
【**请求参数**】
testAudioFilePath：测试音频文件，只支持WAV格式。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
只支持Windows和macOS。
 #### finishPlaybackDeviceTest
```
virtual int finishPlaybackDeviceTest()
```
【**功能说明**】
结束音频播放设备测试。
【**请求参数**】
d无。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
只支持Windows和macOS。
 #### echoTest
```
virtual int echoTest(int intervalInMilliseconds)
```
【**功能说明**】
音频设备回路测试。
【**请求参数**】
intervalInMilliseconds：音量回调周期，单位毫秒，范围100到10000。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
只支持Windows和macOS。
 #### finishEchoTest
```
virtual int finishEchoTest()
```
【**功能说明**】
结束音频设备回路测试。
【**请求参数**】
无。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
只支持Windows和macOS。
