- 问题:微信小程序背景音频BackgroundAudioManager调用stop或自然播放结束后重新播放无效。
- 原因:经测试发现:在iOS和微信调试工具调用stop或自然播放结束后,音频地址被清空了,而在安卓音频地址不为空。
- 解决方案:设置一个变量resetBgAudio判断是否重置音频,在onStop和onEnded监听事件中标记resetBgAudio为true,在onPlay监听事件中标记resetBgAudio为false,点击播放按钮时,判断resetBgAudio为true的话重置音频。
解决代码如下
//播放按钮添加事件
playBgAudio: function() {
return this.data.playStatus ? this.pause() : this.play()
},
//播放
play(){
//音乐播放实例
const bgAudio= wx.getBackgroundAudioManager();
// 监听音频播放事件
bgAudio.onPlay(() => {
console.log('开始播放了')
this.setData({
playStatus: true,
resetBgAudio:false
})
})
// 监听音频停止事件
bgAudio.onStop(() => {
console.log('开始停止了')
this.setData({
playStatus: false,
resetBgAudio:true
})
})
bgAudio.onError(res => {
console.log(res,'错误信息')
})
// 监听音频自然播放至结束的事件
bgAudio.onEnded(() => {
console.log('播放结束')
this.setData({
playStatus: false,
resetBgAudio:true
})
})
if (this.data.resetBgAudio) {
bgAudio.src = 'xxx.mp3'
bgAudio.title = '标题'
bgAudio.play() // 调起播放
}
},
//暂停
pause() {
const bgAudio= wx.getBackgroundAudioManager(); //音乐播放实例
bgAudio.pause() // 调起暂停
this.setData({
playStatus: false,
resetBgAudio:true
})
},
版权声明:本文为qq_33794744原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。