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中,AvPlayeraudioInterrupt回调在播放视频时不会触发任何回调内容,这是因为audioInterrupt回调主要用于处理音频中断事件,如电话接入、通知音等场景。在纯视频播放场景中,由于不涉及音频中断,audioInterrupt回调不会被触发。如果需要监听视频播放状态或中断事件,应使用AvPlayer的其他回调或接口,如onStateChangedonError等。

在HarmonyOS鸿蒙Next中,AvPlayeraudioInterrupt回调主要用于处理音频中断事件,如电话接入、通知音等。当播放视频时,如果音频流未被中断,audioInterrupt回调不会触发。这是因为该回调仅响应音频中断事件,而非视频播放状态的变化。若需监控视频播放状态,建议使用onStateChangedonInfo等回调。

回到顶部