# 通用设备管理 (/zh-CN/api-reference/rtc/macos/device-management/common-device)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="toc_common_device"></a>

<a id="api_irtcengine_enumeratedevices"></a>

<a id="ariaid-title2"></a>

## enumerateDevices: [#enumeratedevices]

枚举系统中的所有音频和视频设备。

<a id="api_irtcengine_enumeratedevices__prototype"></a>

```objc
- (NSArray<AgoraRtcDeviceInfo *> * _Nullable)enumerateDevices:(AgoraMediaDeviceType)type NS_SWIFT_NAME(enumerateDevices(_:));
```

<a id="api_irtcengine_enumeratedevices__detailed_desc"></a>

该方法返回一个 `NSArray` 对象，其中包含系统中的所有音频和视频设备。你可以使用 `NSArray` 类型的 [AgoraRtcDeviceInfo](/zh-CN/api-reference/rtc/macos/class-agorartcdeviceinfo) 对象来枚举设备。

:::note
注： 请勿在主线程中调用此方法。
:::

<a id="api_irtcengine_enumeratedevices__parameters"></a>

### 参数 [#参数]

<ParameterList>
<a id="type"></a>
<Parameter name="type">

设备类型，包括音频采集、音频播放、视频采集或视频播放设备。详见 [AgoraMediaDeviceType](/zh-CN/api-reference/rtc/macos/enum-mediadevicetype)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_enumeratedevices__return_values"></a>

### 返回值 [#返回值]

- 方法调用成功，返回一个包含所有音频和视频设备的 `NSArray` 对象，详见 [AgoraRtcDeviceInfo](/zh-CN/api-reference/rtc/macos/class-agorartcdeviceinfo)。
- 方法调用失败，返回 nil。

### 所属接口类 [#所属接口类]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_getdeviceinfo"></a>

<a id="ariaid-title3"></a>

## getDeviceInfo: [#getdeviceinfo]

获取当前设备名称。

<a id="api_irtcengine_getdeviceinfo__prototype"></a>

```objc
- (AgoraRtcDeviceInfo * _Nullable)getDeviceInfo:(AgoraMediaDeviceType)type NS_SWIFT_NAME(getDeviceInfo(_:));
```

<a id="api_irtcengine_getdeviceinfo__detailed_desc"></a>

你可以通过该方法，根据 `type` 参数的设置，获取当前的音频或视频采集设备。

<a id="api_irtcengine_getdeviceinfo__parameters"></a>

### 参数 [#参数-1]

<ParameterList>
<a id="type-1"></a>
<Parameter name="type">

设备类型，包括音频采集、音频播放、视频采集或视频播放设备。详见 [AgoraMediaDeviceType](/zh-CN/api-reference/rtc/macos/enum-mediadevicetype)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_getdeviceinfo__return_values"></a>

### 返回值 [#返回值-1]

- 方法调用成功时，返回一个 [AgoraRtcDeviceInfo](/zh-CN/api-reference/rtc/macos/class-agorartcdeviceinfo) 对象。
- 方法调用失败时，返回 nil。

### 所属接口类 [#所属接口类-1]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_getdevicevolume"></a>

<a id="ariaid-title4"></a>

## getDeviceVolume: [#getdevicevolume]

获取当前设备的音量。

<a id="api_irtcengine_getdevicevolume__prototype"></a>

```objc
- (int)getDeviceVolume:(AgoraMediaDeviceType)type NS_SWIFT_NAME(getDeviceVolume(_:));
```

<a id="api_irtcengine_getdevicevolume__detailed_desc"></a>

<a id="api_irtcengine_getdevicevolume__parameters"></a>

### 参数 [#参数-2]

<ParameterList>
<a id="type-2"></a>
<Parameter name="type">

设备类型，包括音频采集、音频播放、视频采集或视频播放设备。详见 [AgoraMediaDeviceType](/zh-CN/api-reference/rtc/macos/enum-mediadevicetype)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_getdevicevolume__return_values"></a>

### 返回值 [#返回值-2]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-2]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_monitordevicechange"></a>

<a id="ariaid-title5"></a>

## monitorDeviceChange: [#monitordevicechange]

监控设备状态变化。

<a id="api_irtcengine_monitordevicechange__prototype"></a>

```objc
- (void)monitorDeviceChange:(BOOL)enabled NS_SWIFT_NAME(monitorDeviceChange(_:));
```

<a id="api_irtcengine_monitordevicechange__detailed_desc"></a>

你可以通过该方法监控外部音视频设备（如外接摄像头）的插拔和更换。

<a id="api_irtcengine_monitordevicechange__parameters"></a>

### 参数 [#参数-3]

<ParameterList>
<a id="enabled"></a>
<Parameter name="enabled">

是否监控设备状态变化：

- YES：开启设备状态监控。
- NO：关闭设备状态监控。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-3]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setdevicevolume"></a>

<a id="ariaid-title6"></a>

## setDeviceVolume\:volume: [#setdevicevolumevolume]

设置指定设备的音量。

<a id="api_irtcengine_setdevicevolume__prototype"></a>

```objc
- (int)setDeviceVolume:(AgoraMediaDeviceType)type volume:(int)volume NS_SWIFT_NAME(setDeviceVolume(_:volume:));
```

<a id="api_irtcengine_setdevicevolume__detailed_desc"></a>

设置音频或视频采集或播放设备的音量。

:::note
注： 请在加入频道后调用该方法。
:::

<a id="api_irtcengine_setdevicevolume__parameters"></a>

### 参数 [#参数-4]

<ParameterList>
<a id="type-3"></a>
<Parameter name="type">

设备类型，包括音频采集、音频播放、视频采集或视频播放设备，详见 [AgoraMediaDeviceType](/zh-CN/api-reference/rtc/macos/enum-mediadevicetype)。

</Parameter>
<a id="volume"></a>
<Parameter name="volume">

指定设备的音量，取值范围为 [0, 255]。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setdevicevolume__return_values"></a>

### 返回值 [#返回值-3]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-4]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_statechanged"></a>

<a id="ariaid-title7"></a>

## rtcEngine\:device\:type\:stateChanged: [#rtcenginedevicetypestatechanged]

报告设备状态的变化回调。

<a id="api_irtcengine_statechanged__prototype"></a>

```objc
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine device:(NSString * _Nonnull)deviceId type:(AgoraMediaDeviceType)deviceType stateChanged:(NSInteger)state NS_SWIFT_NAME(rtcEngine(_:device:type:stateChanged:));
```

<a id="api_irtcengine_statechanged__detailed_desc"></a>

:::note
注： 该回调仅适用于 macOS 平台。
:::

<a id="api_irtcengine_statechanged__timing"></a>

### 调用时机 [#调用时机]

该回调在设备状态发生变化时被触发。

<a id="api_irtcengine_statechanged__parameters"></a>

### 参数 [#参数-5]

<ParameterList>
<a id="engine"></a>
<Parameter name="engine">

你使用的 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_irtcengine) 实例。详见 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_irtcengine)。

</Parameter>
<a id="deviceid"></a>
<Parameter name="deviceId">

设备的 ID。

</Parameter>
<a id="devicetype"></a>
<Parameter name="deviceType">

设备类型，详见 [AgoraMediaDeviceType](/zh-CN/api-reference/rtc/macos/enum-mediadevicetype)。

</Parameter>
<a id="state"></a>
<Parameter name="state">

设备的状态：

- 0：已添加。
- 8：已移除。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-5]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/macos/rtc-interface-class#class_irtcengine)
