问题描述:
微信小程序在较新版本的音频接口中推荐使用InnerAudioContext对象实现音频的播放、暂停、跳转等功能,通过监听接口回调实现。
InnerAudioContext.onTimeUpdate(function callback)为监听播放进度更新的接口,在拖动进度条时或跳转播放后此回调不触发。
解决方案
将下面代码粘贴到onReady中,使当onWaiting触发后,立即调用play()触发播放函数
// 音频由于网络等原因等待中的回调
this.audioCtx.onWaiting(() => {
that.audioCtx.pause() // 等待网络的时候音频暂停
that.setData({
waitFlag: true // 标明是onWaiting触发的暂停
})
})
// 音频准备就绪的回调
this.audioCtx.onCanplay(() => {
if (that.data.waitFlag) { // 如果是onWaiting触发的暂停,就立即播放
that.audioCtx.play() // play()方法看上去能重新触发onTimeUpdate()回调
that.setData({
waitFlag: false // 取消相应的flag标志位
})
}
})