关于UNIAPP的uni.getBackgroundAudioManager()更换src会叠加事件的解决办法
1.封装成JS
util.js
let audioContext=null;
let canPlayCallback=null;
let endedCallback=null;
let timeUpdateCallback=null;
let onPauseCallback=null;
const onTimeUpdate=function(e){
timeUpdateCallback = e
}
const onCanplay=function(e){
canPlayCallback = e
}
const onPause=function(e){
onPauseCallback = e
}
const onEnded=function(e){
endedCallback = e
}
// 解决音频叠加问题 https://ask.dcloud.net.cn/question/133610
const initContext=function(){
if (audioContext!=null) {
return audioContext;
}
audioContext = uni.getBackgroundAudioManager();
audioContext.onTimeUpdate((e) => {
if (timeUpdateCallback!=null) {
timeUpdateCallback();
}
});
audioContext.onCanplay((e) => {
if (canPlayCallback!=null) {
canPlayCallback();
}
});
audioContext.onPause((e) => {
if (onPauseCallback!=null) {
onPauseCallback();
}
});
audioContext.onEnded((e) => {
if (endedCallback!=null) {
endedCallback();
}
});
return audioContext;
}
module.exports={
initContext,
onTimeUpdate,
onCanplay,
onPause,
onEnded
}
2.使用
main.js 里面挂载
import util from "@/utils/util.js"
Vue.prototype.$util=util;
index.vue 使用
this.audioInfo=this.$util.initContext()
this.audioInfo.onTimeUpdate((e)=>{
})

浙公网安备 33010602011771号