如何在耳机断开时暂停音/视频

shlp
发布于 2024-12-13 11:31
浏览
0收藏

问题背景

佩戴耳机观看视频,摘下耳机后,声音通过扬声器外放。

实现方案

正在发声的耳机不可用后(有线耳机断开、蓝牙开关关闭、蓝牙耳机入盒、多连接耳机被抢占等),应用通过监听设备变更事件并对AudioStreamDeviceChangeReason.REASON_OLD_DEVICE_UNAVAILABLE的场景进行处理,应用需要根据使用场景选择暂停播放或使用新设备继续播放,例如为扬声器时暂停,为其他设备则继续播放。

private setOutputDeviceChangeCallback() { 
  if (!this.audioRenderer) { 
    return; 
  } 
  this.audioRenderer.on('outputDeviceChangeWithInfo', this.outputDeviceChangeCallback); 
} 
 
private outputDeviceChangeCallback: (deviceChangeInfo: audio.AudioStreamDeviceChangeInfo) => void = 
  (deviceChangeInfo: audio.AudioStreamDeviceChangeInfo) => { 
    Logger.info(TAG, `DeviceInfo id: ${deviceChangeInfo.devices[0].id}`); 
    Logger.info(TAG, `DeviceInfo name: ${deviceChangeInfo.devices[0].name}`); 
    Logger.info(TAG, `DeviceInfo address: ${deviceChangeInfo.devices[0].address}`); 
    Logger.info(TAG, `Device change reason: ${deviceChangeInfo.changeReason}`); 
    if (deviceChangeInfo.changeReason === audio.AudioStreamDeviceChangeReason.REASON_OLD_DEVICE_UNAVAILABLE) { 
      // 旧设备不可用,暂停播放 
      Logger.info(TAG, `Device change reason: ${deviceChangeInfo.changeReason}`); 
      this.pause(); 
    } 
  }

分类
收藏
回复
举报
回复
    相关推荐