提交 d6034bc2 编写于 作者: d-u-a's avatar d-u-a

fix: uni.getBackgroundAudioManager 不触发 onTimeUpdate 回调的问题

上级 cc221698
......@@ -6,7 +6,10 @@ import {
publish
} from '../../bridge'
let audio
let audio
let timeUpdateTimer = null
const TIME_UPDATE = 250
const publishBackgroundAudioStateChange = (state, res = {}) => publish('onBackgroundAudioStateChange', Object.assign({
state
......@@ -28,10 +31,16 @@ function initMusic () {
audio.addEventListener(event, () => {
// 添加 isStopped 属性是为了解决 安卓设备停止播放后获取播放进度不正确的问题
if (event === 'play') {
audio.isStopped = false
audio.isStopped = false
startTimeUpdateTimer()
} else if (event === 'stop') {
audio.isStopped = true
}
}
if (event === 'pause' || event === 'ended' || event === 'stop') {
stopTimeUpdateTimer()
}
const eventName = `onMusic${event[0].toUpperCase() + event.substr(1)}`
publish(eventName, {
dataUrl: audio.src,
......@@ -42,12 +51,14 @@ function initMusic () {
})
})
})
audio.addEventListener('waiting', () => {
audio.addEventListener('waiting', () => {
stopTimeUpdateTimer()
publishBackgroundAudioStateChange('waiting', {
dataUrl: audio.src
})
})
audio.addEventListener('error', err => {
audio.addEventListener('error', err => {
stopTimeUpdateTimer()
publish('onMusicError', {
dataUrl: audio.src,
errMsg: 'Error:' + err.message
......@@ -60,7 +71,20 @@ function initMusic () {
})
audio.addEventListener('prev', () => publish('onBackgroundAudioPrev'))
audio.addEventListener('next', () => publish('onBackgroundAudioNext'))
}
}
function startTimeUpdateTimer () {
stopTimeUpdateTimer()
timeUpdateTimer = setInterval(() => {
publishBackgroundAudioStateChange('timeUpdate', {})
}, TIME_UPDATE)
}
function stopTimeUpdateTimer () {
if (timeUpdateTimer !== null) {
clearInterval(timeUpdateTimer)
}
}
function setMusicState (args) {
initMusic()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册