新增定时暂停播放功能
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
||||
import useMediaDevice from './useMediaDevice'
|
||||
import usePlayerEvent from './usePlayerEvent'
|
||||
import usePlayer from './usePlayer'
|
||||
import { init as initPlayTimeoutStop } from '@renderer/utils/timeoutStop'
|
||||
|
||||
export default ({ setting }) => {
|
||||
createAudio()
|
||||
@@ -11,5 +12,7 @@ export default ({ setting }) => {
|
||||
usePlayerEvent()
|
||||
useMediaDevice({ setting }) // 初始化音频驱动输出设置
|
||||
usePlayer({ setting })
|
||||
|
||||
initPlayTimeoutStop()
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ export default ({
|
||||
}
|
||||
|
||||
const handleLoadstart = () => {
|
||||
if (global.isPlayedStop) return
|
||||
startLoadingTimeout()
|
||||
setAllStatus(t('player__loading'))
|
||||
}
|
||||
@@ -77,6 +78,7 @@ export default ({
|
||||
const handleError = errCode => {
|
||||
if (!musicInfo.songmid) return
|
||||
clearLoadingTimeout()
|
||||
if (global.isPlayedStop) return
|
||||
if (playMusicInfo.listId != 'download' && errCode !== 1 && retryNum < 2) { // 若音频URL无效则尝试刷新2次URL
|
||||
// console.log(this.retryNum)
|
||||
retryNum++
|
||||
@@ -96,6 +98,11 @@ export default ({
|
||||
clearLoadingTimeout()
|
||||
}
|
||||
|
||||
const handlePlayedStop = () => {
|
||||
clearDelayNextTimeout()
|
||||
clearLoadingTimeout()
|
||||
}
|
||||
|
||||
|
||||
window.eventHub.on(eventPlayerNames.player_loadstart, handleLoadstart)
|
||||
window.eventHub.on(eventPlayerNames.player_loadeddata, handleLoadeddata)
|
||||
@@ -105,6 +112,7 @@ export default ({
|
||||
window.eventHub.on(eventPlayerNames.player_emptied, handleEmpied)
|
||||
window.eventHub.on(eventPlayerNames.error, handleError)
|
||||
window.eventHub.on(eventPlayerNames.setPlayInfo, handleSetPlayInfo)
|
||||
window.eventHub.on(eventPlayerNames.playedStop, handlePlayedStop)
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.eventHub.off(eventPlayerNames.player_loadstart, handleLoadstart)
|
||||
@@ -115,5 +123,6 @@ export default ({
|
||||
window.eventHub.off(eventPlayerNames.player_emptied, handleEmpied)
|
||||
window.eventHub.off(eventPlayerNames.error, handleError)
|
||||
window.eventHub.off(eventPlayerNames.setPlayInfo, handleSetPlayInfo)
|
||||
window.eventHub.off(eventPlayerNames.playedStop, handlePlayedStop)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -103,11 +103,13 @@ export default ({ setting }) => {
|
||||
setAllStatus('Try toggle source...')
|
||||
},
|
||||
}).then(url => {
|
||||
if (global.isPlayedStop) return
|
||||
if (targetSong !== musicInfoItem.value || isPlay.value || type != getPlayType(setting.value.player.highQuality, musicInfoItem.value)) return
|
||||
setMusicInfo({ url })
|
||||
setResource(url)
|
||||
}).catch(err => {
|
||||
// console.log('err', err.message)
|
||||
if (global.isPlayedStop) return
|
||||
if (targetSong !== musicInfoItem.value || isPlay.value) return
|
||||
if (err.message == requestMsg.cancelRequest) return
|
||||
if (!isRetryed) return setUrl(targetSong, isRefresh, true)
|
||||
@@ -198,6 +200,7 @@ export default ({ setting }) => {
|
||||
const setPauseStatus = () => {
|
||||
setPlay(false)
|
||||
setTitle()
|
||||
if (global.isPlayedStop) handlePause()
|
||||
}
|
||||
const setStopStatus = () => {
|
||||
setPlay(false)
|
||||
@@ -288,11 +291,16 @@ export default ({ setting }) => {
|
||||
|
||||
const handleEnded = () => {
|
||||
setAllStatus(t('player__end'))
|
||||
|
||||
if (global.isPlayedStop) return
|
||||
playNext()
|
||||
}
|
||||
|
||||
// 播放、暂停播放切换
|
||||
const handleTogglePlay = async() => {
|
||||
const handlePause = () => {
|
||||
setPlayerPause()
|
||||
}
|
||||
|
||||
const handlePlay = async() => {
|
||||
if (playMusicInfo.musicInfo == null) return
|
||||
if (isPlayerEmpty()) {
|
||||
if (playMusicInfo.listId == 'download') {
|
||||
@@ -313,13 +321,24 @@ export default ({ setting }) => {
|
||||
}
|
||||
return
|
||||
}
|
||||
setPlayerPlay()
|
||||
}
|
||||
|
||||
// 播放、暂停播放切换
|
||||
const handleTogglePlay = () => {
|
||||
if (global.isPlayedStop) global.isPlayedStop = false
|
||||
if (isPlay.value) {
|
||||
setPlayerPause()
|
||||
handlePause()
|
||||
} else {
|
||||
setPlayerPlay()
|
||||
handlePlay()
|
||||
}
|
||||
}
|
||||
|
||||
const handlePlayedStop = () => {
|
||||
clearDelayNextTimeout()
|
||||
clearLoadTimeout()
|
||||
}
|
||||
|
||||
watch(() => setting.value.player.togglePlayMethod, newValue => {
|
||||
setLoopPlay(newValue === 'singleLoop')
|
||||
if (playedList.length) clearPlayedList()
|
||||
@@ -339,13 +358,16 @@ export default ({ setting }) => {
|
||||
window.eventHub.on(eventPlayerNames.stop, setStopStatus)
|
||||
|
||||
window.eventHub.on(eventPlayerNames.playMusic, playMusic)
|
||||
window.eventHub.on(eventPlayerNames.setPlay, handlePlay)
|
||||
window.eventHub.on(eventPlayerNames.setPause, handlePause)
|
||||
window.eventHub.on(eventPlayerNames.setStop, handelStop)
|
||||
window.eventHub.on(eventPlayerNames.setTogglePlay, handleTogglePlay)
|
||||
window.eventHub.on(eventPlayerNames.setPlayPrev, playPrev)
|
||||
window.eventHub.on(eventPlayerNames.setPlayNext, playNext)
|
||||
window.eventHub.on(eventPlayerNames.setPlayInfo, handleSetPlayInfo)
|
||||
window.eventHub.on(eventPlayerNames.setStop, handelStop)
|
||||
|
||||
window.eventHub.on(eventPlayerNames.player_ended, handleEnded)
|
||||
window.eventHub.on(eventPlayerNames.playedStop, handlePlayedStop)
|
||||
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
@@ -360,11 +382,14 @@ export default ({ setting }) => {
|
||||
|
||||
window.eventHub.off(eventPlayerNames.playMusic, playMusic)
|
||||
window.eventHub.off(eventPlayerNames.setTogglePlay, handleTogglePlay)
|
||||
window.eventHub.off(eventPlayerNames.setPlay, handlePlay)
|
||||
window.eventHub.off(eventPlayerNames.setPause, handlePause)
|
||||
window.eventHub.off(eventPlayerNames.setStop, handelStop)
|
||||
window.eventHub.off(eventPlayerNames.setPlayPrev, playPrev)
|
||||
window.eventHub.off(eventPlayerNames.setPlayNext, playNext)
|
||||
window.eventHub.off(eventPlayerNames.setPlayInfo, handleSetPlayInfo)
|
||||
window.eventHub.off(eventPlayerNames.setStop, handelStop)
|
||||
|
||||
window.eventHub.off(eventPlayerNames.player_ended, handleEnded)
|
||||
window.eventHub.off(eventPlayerNames.playedStop, handlePlayedStop)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ export default ({ playNext }) => {
|
||||
|
||||
const { playIndex } = updatePlayIndex()
|
||||
if (playIndex < 0 && !playMusicInfo.isTempPlay) { // 歌曲被移除
|
||||
if (getList(playMusicInfo.listId).length) {
|
||||
if (getList(playMusicInfo.listId).length && !global.isPlayedStop) {
|
||||
playNext()
|
||||
} else {
|
||||
window.eventHub.emit(eventPlayerNames.setStop)
|
||||
|
||||
Reference in New Issue
Block a user