提交 bd7d9cd3 编写于 作者: Q qiang

fix: 修复App端无法获取音频暂停状态的问题

上级 26516432
......@@ -122,7 +122,7 @@ export function getAudioState ({
errMsg: 'getAudioState:ok',
duration: 1e3 * (audio.getDuration() || 0),
currentTime: audio.isStopped ? 0 : 1e3 * audio.getPosition(),
paused: audio.isPaused,
paused: audio.isPaused(),
src,
volume,
startTime: 1e3 * startTime,
......@@ -138,7 +138,7 @@ export function operateAudio ({
const audio = audios[audioId]
const operationTypes = ['play', 'pause', 'stop']
if (operationTypes.indexOf(operationType) >= 0) {
audio[operationType === operationTypes[0] && audio.isPaused ? 'resume' : operationType]()
audio[operationType === operationTypes[0] && audio.isPaused() ? 'resume' : operationType]()
} else if (operationType === 'seek') {
audio.seekTo(currentTime / 1e3)
}
......
......@@ -6,9 +6,9 @@ import {
publish
} from '../../bridge'
let audio
let timeUpdateTimer = null
let audio
let timeUpdateTimer = null
const TIME_UPDATE = 250
const publishBackgroundAudioStateChange = (state, res = {}) => publish('onBackgroundAudioStateChange', Object.assign({
......@@ -31,15 +31,15 @@ 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()
}
}
if (event === 'pause' || event === 'ended' || event === 'stop') {
stopTimeUpdateTimer()
}
const eventName = `onMusic${event[0].toUpperCase() + event.substr(1)}`
publish(eventName, {
......@@ -51,13 +51,13 @@ 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,
......@@ -71,20 +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 startTimeUpdateTimer () {
stopTimeUpdateTimer()
timeUpdateTimer = setInterval(() => {
publishBackgroundAudioStateChange('timeUpdate', {})
}, TIME_UPDATE)
}
function stopTimeUpdateTimer () {
if (timeUpdateTimer !== null) {
clearInterval(timeUpdateTimer)
}
}
function setMusicState (args) {
initMusic()
......@@ -113,7 +113,7 @@ export function getMusicPlayerState () {
dataUrl: audio.src,
duration: audio.getDuration() || 0,
currentPosition: audio.getPosition(),
status: audio.isPaused ? 0 : 1,
status: audio.isPaused() ? 0 : 1,
downloadPercent: Math.round(100 * audio.getBuffered() / audio.getDuration()),
errMsg: `getMusicPlayerState:ok`
}
......@@ -189,7 +189,7 @@ export function getBackgroundAudioState () {
let newData = {
duration: audio.getDuration() || 0,
currentTime: audio.isStopped ? 0 : audio.getPosition(),
paused: audio.isPaused,
paused: audio.isPaused(),
src: audio.src,
buffered: audio.getBuffered(),
title: audio.title,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册