跳到主要内容

查询和监听音频输入设备

本模块提供音频输入设备管理能力,包括查询输入设备信息、监听设备连接状态变化等。具体API说明可参考文档AudioRoutingManager

以下各步骤示例为片段代码,可通过示例代码右下方链接获取完整示例

创建AudioRoutingManager实例

在使用AudioRoutingManager管理音频设备前,需要先导入模块并创建实例。

import { audio } from '@kit.AudioKit'; // 导入audio模块。

let audioManager = audio.getAudioManager(); // 需要先创建AudioManager实例。
let audioRoutingManager = audioManager.getRoutingManager(); // 再调用AudioManager的方法创建AudioRoutingManager实例。

支持的音频输入设备类型

目前支持的音频输入设备见下表:

名称说明
WIRED_HEADSET3有线耳机,带麦克风。
BLUETOOTH_SCO7蓝牙设备SCO(Synchronous Connection Oriented)连接。
MIC15麦克风。
USB_HEADSET22USB耳机,带麦克风。
NEARLINK31星闪设备。

获取输入设备信息

使用getDevices方法可以获取当前所有输入设备的信息。

import { audio } from '@kit.AudioKit'; // 导入audio模块。
// ...
audioRoutingManager.getDevices(audio.DeviceFlag.INPUT_DEVICES_FLAG).then((data: audio.AudioDeviceDescriptors) => {
console.info('Promise returned to indicate that the device list is obtained.');

// ...
});

监听设备连接状态变化

可以设置监听事件来监听设备连接状态的变化,当有设备连接或断开时触发回调:

import { audio } from '@kit.AudioKit'; // 导入audio模块。
// ...
// 监听音频设备状态变化。
audioRoutingManager.on('deviceChange', audio.DeviceFlag.INPUT_DEVICES_FLAG,
(deviceChanged: audio.DeviceChangeAction) => {
console.info('device change type : ' + deviceChanged.type); // 设备连接状态变化,0为连接,1为断开连接。
console.info('device descriptor size : ' + deviceChanged.deviceDescriptors.length);
console.info('device change descriptor : ' + deviceChanged.deviceDescriptors[0].deviceRole); // 设备角色。
console.info('device change descriptor : ' + deviceChanged.deviceDescriptors[0].deviceType); // 设备类型。

// ...
});
// ...
// 取消监听音频设备状态变化。
audioRoutingManager.off('deviceChange', (deviceChanged: audio.DeviceChangeAction) => {
console.info('Should be no callback.');
});