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 | null; 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, permanent}) => { 19 if (Config.get('setting.basic.notInterrupt')) { 20 return; 21 } 22 if (permanent) { 23 return MusicQueue.pause(); 24 } 25 const tempRemoteDuckConf = Config.get( 26 'setting.basic.tempRemoteDuck', 27 ); 28 if (tempRemoteDuckConf === '降低音量') { 29 if (paused) { 30 return TrackPlayer.setVolume(0.5); 31 } else { 32 return TrackPlayer.setVolume(1); 33 } 34 } else { 35 if (paused) { 36 resumeState = await TrackPlayer.getState(); 37 return MusicQueue.pause(); 38 } else { 39 if (resumeState && !musicIsPaused(resumeState)) { 40 resumeState = null; 41 return MusicQueue.play(); 42 } 43 resumeState = null; 44 } 45 } 46 }, 47 ); 48 TrackPlayer.addEventListener(Event.PlaybackProgressUpdated, evt => { 49 Config.set('status.music.progress', evt.position, false); 50 }); 51}; 52