1e22d5e4fS猫头猫import Config from '@/core/config'; 2*8c55a6aaS猫头猫import {trace} from '@/utils/log'; 348f4b873S猫头猫import {isSameMediaItem} from '@/utils/mediaItem'; 4846ca2ccS猫头猫import musicIsPaused from '@/utils/musicIsPaused'; 5*8c55a6aaS猫头猫import TrackPlayer, {Event, State} from 'react-native-track-player'; 6242960d3S猫头猫import MusicQueue from '../core/musicQueue'; 7bf6e62f2S猫头猫 8846ca2ccS猫头猫let resumeState: State; 9bf6e62f2S猫头猫module.exports = async function () { 10bf6e62f2S猫头猫 TrackPlayer.addEventListener(Event.RemotePlay, () => MusicQueue.play()); 11bf6e62f2S猫头猫 TrackPlayer.addEventListener(Event.RemotePause, () => MusicQueue.pause()); 12846ca2ccS猫头猫 TrackPlayer.addEventListener(Event.RemotePrevious, () => 13846ca2ccS猫头猫 MusicQueue.skipToPrevious(), 14846ca2ccS猫头猫 ); 154060c00aS猫头猫 TrackPlayer.addEventListener(Event.RemoteNext, () => 164060c00aS猫头猫 MusicQueue.skipToNext(), 174060c00aS猫头猫 ); 18846ca2ccS猫头猫 TrackPlayer.addEventListener( 19846ca2ccS猫头猫 Event.RemoteDuck, 20e2257bd6S猫头猫 async ({paused, permanent}) => { 21e22d5e4fS猫头猫 if (Config.get('setting.basic.notInterrupt')) { 22caaa811bS猫头猫 return; 23caaa811bS猫头猫 } 24e2257bd6S猫头猫 if (permanent) { 25eb04a812S猫头猫 return MusicQueue.pause(); 26eb04a812S猫头猫 } 27eb04a812S猫头猫 if (paused) { 28846ca2ccS猫头猫 resumeState = await TrackPlayer.getState(); 29eb04a812S猫头猫 return MusicQueue.pause(); 30846ca2ccS猫头猫 } else if (!musicIsPaused(resumeState)) { 31eb04a812S猫头猫 return MusicQueue.play(); 32eb04a812S猫头猫 } 33846ca2ccS猫头猫 }, 34846ca2ccS猫头猫 ); 35846ca2ccS猫头猫 TrackPlayer.addEventListener(Event.PlaybackProgressUpdated, evt => { 36e22d5e4fS猫头猫 Config.set('status.music.progress', evt.position); 37846ca2ccS猫头猫 }); 38ef714860S猫头猫 /** 播放下一个 */ 39ef714860S猫头猫 TrackPlayer.addEventListener(Event.PlaybackTrackChanged, async evt => { 4048f4b873S猫头猫 // console.log('track变化', evt, await TrackPlayer.getQueue()) 41ef714860S猫头猫 // 是track里的,不是playlist里的 42*8c55a6aaS猫头猫 trace('PlaybackTrackChanged', { 43*8c55a6aaS猫头猫 evt, 44*8c55a6aaS猫头猫 }); 45*8c55a6aaS猫头猫 46ef714860S猫头猫 if ( 47ef714860S猫头猫 evt.nextTrack === 1 && 48ef714860S猫头猫 !(await TrackPlayer.getTrack(evt.nextTrack))?.url 49ef714860S猫头猫 ) { 50ef714860S猫头猫 if (MusicQueue.getRepeatMode() === 'SINGLE') { 51ef714860S猫头猫 await MusicQueue.play(undefined, true); 52ef714860S猫头猫 } else { 5348f4b873S猫头猫 const queue = await TrackPlayer.getQueue(); 54*8c55a6aaS猫头猫 // 要跳到的下一个就是当前的,并且队列里面有多首歌 5548f4b873S猫头猫 if ( 56ef60be1cS猫头猫 isSameMediaItem( 57ef60be1cS猫头猫 queue[1] as unknown as ICommon.IMediaBase, 58*8c55a6aaS猫头猫 MusicQueue.getCurrentMusicItem(), 59ef60be1cS猫头猫 ) && 60*8c55a6aaS猫头猫 MusicQueue.getMusicQueue().length > 1 6148f4b873S猫头猫 ) { 6248f4b873S猫头猫 console.log('多余的事件'); 6348f4b873S猫头猫 return; 6448f4b873S猫头猫 } 65*8c55a6aaS猫头猫 trace('PlaybackTrackChanged-shouldskip', { 66*8c55a6aaS猫头猫 evt, 67*8c55a6aaS猫头猫 queue, 68*8c55a6aaS猫头猫 }); 69*8c55a6aaS猫头猫 70ef714860S猫头猫 await MusicQueue.skipToNext(); 71ef714860S猫头猫 } 72ef714860S猫头猫 } 73ef714860S猫头猫 }); 74bf6e62f2S猫头猫}; 75