如何在耳机断开时暂停音/视频
问题背景 佩戴耳机观看视频,摘下耳机后,声音通过扬声器外放。 实现方案 正在发声的耳机不可用后(有线耳机断开、蓝牙开关关闭、蓝牙耳机入盒、多连接耳机被抢占等),应用通过监听设备变更事件并对AudioStreamDeviceChangeReason.REASON_OLD_DEVICE_UNAVAILABLE的场景进行处理,应用需要根据使用场景选择暂停播放或使用新设备继续播放,例如为扬声器时暂停,为其
·
问题背景
佩戴耳机观看视频,摘下耳机后,声音通过扬声器外放。
实现方案
正在发声的耳机不可用后(有线耳机断开、蓝牙开关关闭、蓝牙耳机入盒、多连接耳机被抢占等),应用通过监听设备变更事件并对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();
}
}
更多推荐
已为社区贡献175条内容
所有评论(0)