在处理音频播放场景时,如果你的设备同时连接了多个音频输出设备,需要指定一个特定的设备来播放音频。鸿蒙系统提供了AudioRoutingManager
接口,允许你灵活地管理音频输出设备。
创建实例
首先导入音频管理模块并初始化相关实例。
- 导入
@ohos.multimedia.audio
模块 - 通过 AudioManager 获取到 AudioRoutingManager 的实例。
// 导入音频管理模块
import audio from '@ohos.multimedia.audio';
// 创建AudioManager实例
let audioManager = audio.getAudioManager();
// 使用AudioManager实例获取AudioRoutingManager
let audioRoutingManager = audioManager.getRoutingManager();
支持的音频输出设备类型
鸿蒙系统目前支持多种音频输出设备,每种设备都有其特定的标识和用途:
名称 | 值 | 说明 |
---|---|---|
EARPIECE | 1 | 听筒。 |
SPEAKER | 2 | 扬声器。 |
WIRED_HEADSET | 3 | 有线耳机,带麦克风。 |
WIRED_HEADPHONES | 4 | 有线耳机,无麦克风。 |
BLUETOOTH_SCO | 7 | 蓝牙设备SCO(Synchronous Connection Oriented)连接。 |
BLUETOOTH_A2DP | 8 | 蓝牙设备A2DP(Advanced Audio Distribution Profile)连接。 |
USB_HEADSET | 22 | USB耳机,带麦克风。 |
获取当前输出设备信息
要获取当前已连接的所有音频输出设备的信息,需调用 getDevices
方法,并指定输出设备标志作为参数。
audioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG)
.then(data => {
console.info('成功获取设备列表。');
// 在这里处理返回的设备数据
});
监听设备连接状态变化
为了及时响应音频设备的连接或断开,可设置一个监听器来监控这些变化。
// 添加监听器以监控音频设备状态变化
audioRoutingManager.on('deviceChange', audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (deviceChanged) => {
console.info('设备变化类型: ' + deviceChanged.type); // 0表示连接,1表示断开
console.info('设备描述符数量: ' + deviceChanged.deviceDescriptors.length);
if (deviceChanged.deviceDescriptors.length > 0) {
console.info('设备角色: ' + deviceChanged.deviceDescriptors[0].deviceRole);
console.info('设备类型: ' + deviceChanged.deviceDescriptors[0].deviceType);
}
});
// 如需取消监听,可使用如下代码
audioRoutingManager.off('deviceChange', (deviceChanged) => {
console.info('监听已取消,不应再收到回调。');
});