HarmonyOS鸿蒙Next中AvPlayer的audioInterrupt回调在播放视频时不会回调任何内容
HarmonyOS鸿蒙Next中AvPlayer的audioInterrupt回调在播放视频时不会回调任何内容
avPlayer.audioInterruptMode = audio.InterruptMode.SHARE_MODE,
视频开始播放时音频不会有回调,播放音频时候下使用qq音乐播放后是回调了该方法的,需要做其他操作吗?
3 回复
on('audioInterrupt') 是监听音频中断事件 当监听事件被中断是 使用callback获取中断事件 如果您需要获取被中断的事件可以获取后续事件
audioInterrupt事件详情参考链接: [[https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-audiohaptic-V5#onaudiointerrupt]]
关于audioInterrupt事件的具体用法 可以参考以下demo
```javascript
let isPlaying: boolean; // 标识符,表示是否正在渲染
let isDucked: boolean; // 标识符,表示是否被降低音量
audioHapticPlayerInstance.on('audioInterrupt', async(interruptEvent: audio.InterruptEvent) => {
if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
// 由系统进行操作,强制打断音频渲染,应用需更新自身状态及显示内容等
switch (interruptEvent.hintType) {
case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
// 音频流已被暂停,临时失去焦点,待可重获焦点时会收到resume对应的interruptEvent
console.info('Force paused. Update playing status and stop writing');
isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作
break;
case audio.InterruptHint.INTERRUPT_HINT_STOP:
// 音频流已被停止,永久失去焦点,若想恢复渲染,需用户主动触发
console.info('Force stopped. Update playing status and stop writing');
isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作
break;
case audio.InterruptHint.INTERRUPT_HINT_DUCK:
// 音频流已被降低音量渲染
console.info('Force ducked. Update volume status');
isDucked = true; // 简化处理,代表应用更新音量状态的若干操作
break;
case audio.InterruptHint.INTERRUPT_HINT_UNDUCK:
// 音频流已被恢复正常音量渲染
console.info('Force ducked. Update volume status');
isDucked = false; // 简化处理,代表应用更新音量状态的若干操作
break;
default:
break;
}
} else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
// 由应用进行操作,应用可以自主选择响应操作或忽略该事件
switch (interruptEvent.hintType) {
case audio.InterruptHint.INTERRUPT_HINT_RESUME:
// 建议应用继续渲染(说明音频流此前被强制暂停,临时失去焦点,现在可以恢复渲染)
console.info('Resume force paused renderer or ignore');
// 若选择继续渲染,需在此处主动执行开始渲染的若干操作
break;
default:
break;
}
}
});
更多关于HarmonyOS鸿蒙Next中AvPlayer的audioInterrupt回调在播放视频时不会回调任何内容的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,AvPlayer
的audioInterrupt
回调主要用于处理音频中断事件,如电话接入、通知音等。当播放视频时,如果音频流未被中断,audioInterrupt
回调不会触发。这是因为该回调仅响应音频中断事件,而非视频播放状态的变化。若需监控视频播放状态,建议使用onStateChanged
或onInfo
等回调。