1e22d5e4fS猫头猫import Config from '@/core/config'; 248f4b873S猫头猫import {isSameMediaItem} from '@/utils/mediaItem'; 3846ca2ccS猫头猫import musicIsPaused from '@/utils/musicIsPaused'; 448f4b873S猫头猫import TrackPlayer, {Event, State, Track} from 'react-native-track-player'; 5242960d3S猫头猫import MusicQueue from '../core/musicQueue'; 6bf6e62f2S猫头猫 7846ca2ccS猫头猫let resumeState: State; 8bf6e62f2S猫头猫module.exports = async function () { 9bf6e62f2S猫头猫 TrackPlayer.addEventListener(Event.RemotePlay, () => MusicQueue.play()); 10bf6e62f2S猫头猫 TrackPlayer.addEventListener(Event.RemotePause, () => MusicQueue.pause()); 11846ca2ccS猫头猫 TrackPlayer.addEventListener(Event.RemotePrevious, () => 12846ca2ccS猫头猫 MusicQueue.skipToPrevious(), 13846ca2ccS猫头猫 ); 144060c00aS猫头猫 TrackPlayer.addEventListener(Event.RemoteNext, () => 154060c00aS猫头猫 MusicQueue.skipToNext(), 164060c00aS猫头猫 ); 17846ca2ccS猫头猫 TrackPlayer.addEventListener( 18846ca2ccS猫头猫 Event.RemoteDuck, 19e2257bd6S猫头猫 async ({paused, permanent}) => { 20e22d5e4fS猫头猫 if (Config.get('setting.basic.notInterrupt')) { 21caaa811bS猫头猫 return; 22caaa811bS猫头猫 } 23e2257bd6S猫头猫 if (permanent) { 24eb04a812S猫头猫 return MusicQueue.pause(); 25eb04a812S猫头猫 } 26eb04a812S猫头猫 if (paused) { 27846ca2ccS猫头猫 resumeState = await TrackPlayer.getState(); 28eb04a812S猫头猫 return MusicQueue.pause(); 29846ca2ccS猫头猫 } else if (!musicIsPaused(resumeState)) { 30eb04a812S猫头猫 return MusicQueue.play(); 31eb04a812S猫头猫 } 32846ca2ccS猫头猫 }, 33846ca2ccS猫头猫 ); 34846ca2ccS猫头猫 TrackPlayer.addEventListener(Event.PlaybackProgressUpdated, evt => { 35e22d5e4fS猫头猫 Config.set('status.music.progress', evt.position); 36846ca2ccS猫头猫 }); 37ef714860S猫头猫 /** 播放下一个 */ 3848f4b873S猫头猫 let nextTrack: Track; 3948f4b873S猫头猫 // 事件有重复 40ef714860S猫头猫 TrackPlayer.addEventListener(Event.PlaybackTrackChanged, async evt => { 4148f4b873S猫头猫 // console.log('track变化', evt, await TrackPlayer.getQueue()) 42ef714860S猫头猫 // 是track里的,不是playlist里的 43ef714860S猫头猫 if ( 44ef714860S猫头猫 evt.nextTrack === 1 && 45ef714860S猫头猫 !(await TrackPlayer.getTrack(evt.nextTrack))?.url 46ef714860S猫头猫 ) { 47ef714860S猫头猫 if (MusicQueue.getRepeatMode() === 'SINGLE') { 48ef714860S猫头猫 await MusicQueue.play(undefined, true); 49ef714860S猫头猫 } else { 5048f4b873S猫头猫 const queue = await TrackPlayer.getQueue(); 5148f4b873S猫头猫 if ( 52*ef60be1cS猫头猫 isSameMediaItem( 53*ef60be1cS猫头猫 nextTrack as unknown as ICommon.IMediaBase, 54*ef60be1cS猫头猫 queue[1] as unknown as ICommon.IMediaBase, 55*ef60be1cS猫头猫 ) && 56*ef60be1cS猫头猫 !isSameMediaItem( 57*ef60be1cS猫头猫 queue[0] as unknown as ICommon.IMediaBase, 58*ef60be1cS猫头猫 queue[1] as unknown as ICommon.IMediaBase, 59*ef60be1cS猫头猫 ) 6048f4b873S猫头猫 ) { 6148f4b873S猫头猫 // 已经处理过了,忽略掉 6248f4b873S猫头猫 console.log('多余的事件'); 6348f4b873S猫头猫 return; 6448f4b873S猫头猫 } 6548f4b873S猫头猫 // console.log('SKIP-PlaybackTrackChanged'); 6648f4b873S猫头猫 nextTrack = queue[1]; 67ef714860S猫头猫 await MusicQueue.skipToNext(); 68ef714860S猫头猫 } 69ef714860S猫头猫 } 70ef714860S猫头猫 }); 71bf6e62f2S猫头猫}; 72