修复声音输出设备更改时后的自动暂停播放设置无效的问题
parent
900bdd3afe
commit
4fa88dd7a0
|
@ -1,9 +1,4 @@
|
|||
|
||||
### 修复
|
||||
|
||||
- 修复备份文件导入指引无法识别v2配置的问题
|
||||
- 修复从搜索界面进入歌单详情后,若启用强迫症设置的清空功能会导致意外清空搜索框、搜索列表的问题
|
||||
- 修复桌面歌词在启用卡拉OK歌词后字体边缘可能被截断的问题(特别是纵向歌词某些字的边角被截断导致后面的阴影露出来或阴影不均匀的问题)
|
||||
- 修复桌面歌词启用歌词缩放后的阴影显示问题
|
||||
- 修复Linux armv7l系统(如树莓派)下无法启动的问题(与修复Linux arm64的方法一样采用内置预编译模块的方式修复)
|
||||
- 修复备份与恢复的列表导入列表信息设置逻辑问题与潜在导入问题
|
||||
- 修复声音输出设备更改时后的自动暂停播放设置无效的问题
|
||||
|
|
|
@ -16,24 +16,22 @@ export default () => {
|
|||
let prevDeviceLabel: string | null = null
|
||||
let prevDeviceId = ''
|
||||
|
||||
const setMediaDevice = async(mediaDeviceId: string) => {
|
||||
let label = prevDeviceLabel
|
||||
const getMediaDevice = async(deviceId: string) => {
|
||||
const devices = await getDevices()
|
||||
let device = devices.find(device => device.deviceId === mediaDeviceId)
|
||||
if (device) {
|
||||
mediaDeviceId = device.deviceId
|
||||
label = device.label
|
||||
} else {
|
||||
mediaDeviceId = 'default'
|
||||
device = devices.find(device => device.deviceId === mediaDeviceId)
|
||||
if (device) label = device.label
|
||||
let device = devices.find(device => device.deviceId === deviceId)
|
||||
if (!device) {
|
||||
deviceId = 'default'
|
||||
device = devices.find(device => device.deviceId === deviceId)
|
||||
}
|
||||
|
||||
return device ? { label: device.label, deviceId: device.deviceId } : { label: '', deviceId: '' }
|
||||
}
|
||||
const setMediaDevice = async(deviceId: string, label: string) => {
|
||||
prevDeviceLabel = label
|
||||
// console.log(device)
|
||||
setMediaDeviceId(mediaDeviceId).then(() => {
|
||||
prevDeviceId = mediaDeviceId
|
||||
saveMediaDeviceId(mediaDeviceId)
|
||||
setMediaDeviceId(deviceId).then(() => {
|
||||
prevDeviceId = deviceId
|
||||
saveMediaDeviceId(deviceId)
|
||||
}).catch((err: any) => {
|
||||
console.log(err)
|
||||
setMediaDeviceId('default').finally(() => {
|
||||
|
@ -43,13 +41,13 @@ export default () => {
|
|||
})
|
||||
}
|
||||
|
||||
const handleDeviceChangeStopPlay = (device: MediaDeviceInfo, mediaDeviceId: string) => {
|
||||
const handleDeviceChangeStopPlay = (label: string) => {
|
||||
// console.log(device)
|
||||
// console.log(this.appSetting.player['isMediaDeviceRemovedStopPlay,'] this.isPlay, device.label, this.prevDeviceLabel)
|
||||
// console.log(appSetting['player.isMediaDeviceRemovedStopPlay'], isPlay.value, label, prevDeviceLabel)
|
||||
if (
|
||||
appSetting['player.isMediaDeviceRemovedStopPlay'] &&
|
||||
isPlay.value &&
|
||||
device.label != prevDeviceLabel
|
||||
label != prevDeviceLabel
|
||||
) {
|
||||
window.lx.isPlayedStop = true
|
||||
pause()
|
||||
|
@ -57,26 +55,21 @@ export default () => {
|
|||
}
|
||||
|
||||
const handleMediaListChange = async() => {
|
||||
let mediaDeviceId = appSetting['player.mediaDeviceId']
|
||||
const devices = await getDevices()
|
||||
let device = devices.find(device => device.deviceId === mediaDeviceId)
|
||||
device ??= devices.find(device => device.deviceId === 'default')
|
||||
// @ts-expect-error
|
||||
device ??= { label: '', deviceId: '' }
|
||||
const mediaDeviceId = appSetting['player.mediaDeviceId']
|
||||
const device = await getMediaDevice(mediaDeviceId)
|
||||
|
||||
// @ts-expect-error
|
||||
handleDeviceChangeStopPlay(device, mediaDeviceId)
|
||||
handleDeviceChangeStopPlay(device.label)
|
||||
|
||||
void setMediaDevice(device!.deviceId)
|
||||
if (device.deviceId == mediaDeviceId) prevDeviceLabel = device.label
|
||||
else void setMediaDevice(device.deviceId, device.label)
|
||||
}
|
||||
|
||||
watch(() => appSetting['player.mediaDeviceId'], (id) => {
|
||||
if (prevDeviceId == id) return
|
||||
void setMediaDevice(id)
|
||||
void getMediaDevice(id).then(async({ deviceId, label }) => setMediaDevice(deviceId, label))
|
||||
})
|
||||
|
||||
|
||||
void setMediaDevice(appSetting['player.mediaDeviceId'])
|
||||
void getMediaDevice(appSetting['player.mediaDeviceId']).then(async({ deviceId, label }) => setMediaDevice(deviceId, label))
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||
navigator.mediaDevices.addEventListener('devicechange', handleMediaListChange)
|
||||
|
|
Loading…
Reference in New Issue