通过监听音频流事件实现音频的打断后重新播放效果
音频被打断后或是系统通知可以恢复音频时都会有触发on audiointerrupt 事件,可以监听这个事件来实现这个效果。
参考下面的代码
// 监听音频打断事件
private setInterruptCallback() {
if (!this.audioRenderer) {
return;
}
this.audioRenderer.on('audioInterrupt', this.interruptCallback);
}
// 在回调中处理各类打断事件
private interruptCallback: (interruptEvent: audio.InterruptEvent) => void =
(interruptEvent: audio.InterruptEvent) => {
if (interruptEvent.forceType === audio.InterruptForceType.INTERRUPT_FORCE) {
switch (interruptEvent.hintType) {
case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
// 系统将音频流暂停,为保持状态一致,应用需切换至音频暂停状态
// 处理相应业务逻辑
break;
case audio.InterruptHint.INTERRUPT_HINT_STOP:
// 系统将音频流停止,为保持状态一致,应用需切换至音频暂停状态
// 处理相应业务逻辑
break;
case audio.InterruptHint.INTERRUPT_HINT_DUCK:
// 系统将音频流音量降低(默认降到正常音量的20%)
// 处理相应业务逻辑
break;
case audio.InterruptHint.INTERRUPT_HINT_UNDUCK:
// 系统将音频流音量恢复
// 处理相应业务逻辑
break;
default:
break;
}
} else if (interruptEvent.forceType === audio.InterruptForceType.INTERRUPT_SHARE) {
switch (interruptEvent.hintType) {
case audio.InterruptHint.INTERRUPT_HINT_RESUME:
// 被暂停的音频流此时可以继续播放,建议应用继续播放,切换至音频播放状态
// 若应用此时不想继续播放,可以忽略此音频打断事件,不进行处理即可
// 处理相应业务逻辑
break;
default:
break;
}
}
}