1e22d5e4fS猫头猫import Config from '@/core/config'; 2*48f4b873S猫头猫import {isSameMediaItem} from '@/utils/mediaItem'; 3846ca2ccS猫头猫import musicIsPaused from '@/utils/musicIsPaused'; 4*48f4b873S猫头猫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猫头猫 /** 播放下一个 */ 38*48f4b873S猫头猫 let nextTrack: Track; 39*48f4b873S猫头猫 // 事件有重复 40ef714860S猫头猫 TrackPlayer.addEventListener(Event.PlaybackTrackChanged, async evt => { 41*48f4b873S猫头猫 // 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 { 50*48f4b873S猫头猫 const queue = await TrackPlayer.getQueue(); 51*48f4b873S猫头猫 // @ts-ignore 52*48f4b873S猫头猫 if ( 53*48f4b873S猫头猫 isSameMediaItem(nextTrack, queue[1]) && 54*48f4b873S猫头猫 !isSameMediaItem(queue[0].queue[1]) 55*48f4b873S猫头猫 ) { 56*48f4b873S猫头猫 // 已经处理过了,忽略掉 57*48f4b873S猫头猫 console.log('多余的事件'); 58*48f4b873S猫头猫 return; 59*48f4b873S猫头猫 } 60*48f4b873S猫头猫 // console.log('SKIP-PlaybackTrackChanged'); 61*48f4b873S猫头猫 nextTrack = queue[1]; 62ef714860S猫头猫 await MusicQueue.skipToNext(); 63ef714860S猫头猫 } 64ef714860S猫头猫 } 65ef714860S猫头猫 }); 66bf6e62f2S猫头猫}; 67