问题:微信小程序背景音频BackgroundAudioManager调用stop或自然播放结束后重新播放无效。
原因:经测试发现:在iOS和微信调试工具调用stop或自然播放结束后,音频地址被清空了,而在安卓音频地址不为空。
解决方案:设置一个变量resetBgAudio判断是否重置音频,在onStop和onEnded监听事件中标记resetBgAudio为true,在onPlay监听事件中标记resetBgAudio为false,点击播放按钮时,判断resetBgAudio为true的话重置音频。
// 监听音频播放事件
bgAudio.onPlay(() => {
this.setData({isPlay: true})
this.resetBgAudio = false
})
// 监听音频结束事件
bgAudio.onStop(() => {
this.setData({isPlay: false})
this.resetBgAudio = true
})
// 监听音频自然播放至结束的事件
bgAudio.onEnded(() => {
this.setData({isPlay: false})
this.resetBgAudio = true
})
// 播放/暂停
onPlay() {
if (this.data.isPlay) {
bgAudio.pause()
} else {
if (this.resetBgAudio) {
bgAudio.src = 'xxx.mp3'
bgAudio.title = '标题'
}
bgAudio.play()
}
}
网友评论