音頻輸入設(shè)備管理

2024-02-16 13:57 更新

有時(shí)設(shè)備同時(shí)連接多個(gè)音頻輸入設(shè)備,需要指定音頻輸入設(shè)備進(jìn)行音頻錄制,此時(shí)需要使用AudioRoutingManager接口進(jìn)行輸入設(shè)備的管理,API說明可以參考AudioRoutingManager API文檔。

創(chuàng)建AudioRoutingManager實(shí)例

在使用AudioRoutingManager管理音頻設(shè)備前,需要先導(dǎo)入模塊并創(chuàng)建實(shí)例。

  1. import audio from '@ohos.multimedia.audio'; // 導(dǎo)入audio模塊
  2. let audioManager = audio.getAudioManager(); // 需要先創(chuàng)建AudioManager實(shí)例
  3. let audioRoutingManager = audioManager.getRoutingManager(); // 再調(diào)用AudioManager的方法創(chuàng)建AudioRoutingManager實(shí)例

支持的音頻輸入設(shè)備類型

目前支持的音頻輸入設(shè)備見下表:

名稱

說明

WIRED_HEADSET

3

有線耳機(jī),帶麥克風(fēng)。

BLUETOOTH_SCO

7

藍(lán)牙設(shè)備SCO(Synchronous Connection Oriented)連接。

MIC

15

麥克風(fēng)。

USB_HEADSET

22

USB耳機(jī),帶麥克風(fēng)。

獲取輸入設(shè)備信息

使用getDevices()方法可以獲取當(dāng)前所有輸入設(shè)備的信息。

  1. audioRoutingManager.getDevices(audio.DeviceFlag.INPUT_DEVICES_FLAG).then((data) => {
  2. console.info('Promise returned to indicate that the device list is obtained.');
  3. });

監(jiān)聽設(shè)備連接狀態(tài)變化

可以設(shè)置監(jiān)聽事件來監(jiān)聽設(shè)備連接狀態(tài)的變化,當(dāng)有設(shè)備連接或斷開時(shí)觸發(fā)回調(diào):

  1. // 監(jiān)聽音頻設(shè)備狀態(tài)變化
  2. audioRoutingManager.on('deviceChange', audio.DeviceFlag.INPUT_DEVICES_FLAG, (deviceChanged) => {
  3. console.info('device change type : ' + deviceChanged.type); // 設(shè)備連接狀態(tài)變化,0為連接,1為斷開連接
  4. console.info('device descriptor size : ' + deviceChanged.deviceDescriptors.length);
  5. console.info('device change descriptor : ' + deviceChanged.deviceDescriptors[0].deviceRole); // 設(shè)備角色
  6. console.info('device change descriptor : ' + deviceChanged.deviceDescriptors[0].deviceType); // 設(shè)備類型
  7. });
  8. // 取消監(jiān)聽音頻設(shè)備狀態(tài)變化
  9. audioRoutingManager.off('deviceChange', (deviceChanged) => {
  10. console.info('Should be no callback.');
  11. });
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)