1import Config from '@/core/config'; 2import musicIsPaused from '@/utils/musicIsPaused'; 3import TrackPlayer, {Event, State} from 'react-native-track-player'; 4import MusicQueue from '../core/musicQueue'; 5 6let resumeState: State; 7module.exports = async function () { 8 TrackPlayer.addEventListener(Event.RemotePlay, () => MusicQueue.play()); 9 TrackPlayer.addEventListener(Event.RemotePause, () => MusicQueue.pause()); 10 TrackPlayer.addEventListener(Event.RemotePrevious, () => 11 MusicQueue.skipToPrevious(), 12 ); 13 TrackPlayer.addEventListener(Event.RemoteNext, () => 14 MusicQueue.skipToNext(), 15 ); 16 TrackPlayer.addEventListener( 17 Event.RemoteDuck, 18 async ({paused, parmanent}) => { 19 if (Config.get('setting.basic.notInterrupt')) { 20 return; 21 } 22 if (parmanent) { 23 return MusicQueue.pause(); 24 } 25 if (paused) { 26 resumeState = await TrackPlayer.getState(); 27 return MusicQueue.pause(); 28 } else if (!musicIsPaused(resumeState)) { 29 return MusicQueue.play(); 30 } 31 }, 32 ); 33 TrackPlayer.addEventListener(Event.PlaybackProgressUpdated, evt => { 34 Config.set('status.music.progress', evt.position); 35 }); 36 /** 播放下一个 */ 37 TrackPlayer.addEventListener(Event.PlaybackTrackChanged, async evt => { 38 // 是track里的,不是playlist里的 39 if ( 40 evt.nextTrack === 1 && 41 !(await TrackPlayer.getTrack(evt.nextTrack))?.url 42 ) { 43 if (MusicQueue.getRepeatMode() === 'SINGLE') { 44 await MusicQueue.play(undefined, true); 45 } else { 46 console.log('SKIP'); 47 await MusicQueue.skipToNext(); 48 } 49 } 50 }); 51}; 52