1e22d5e4fS猫头猫import Config from '@/core/config'; 2*5500cea7S猫头猫import RNTrackPlayer, {Event, State} from 'react-native-track-player'; 357277364S猫头猫import LyricManager from '@/core/lyricManager'; 457277364S猫头猫import LyricUtil from '@/native/lyricUtil'; 5*5500cea7S猫头猫import TrackPlayer from '@/core/trackPlayer'; 6*5500cea7S猫头猫import {musicIsPaused} from '@/utils/trackUtils'; 7bf6e62f2S猫头猫 851c513c9S猫头猫let resumeState: State | null; 9bf6e62f2S猫头猫module.exports = async function () { 10*5500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.RemotePlay, () => TrackPlayer.play()); 11*5500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.RemotePause, () => 12*5500cea7S猫头猫 TrackPlayer.pause(), 13846ca2ccS猫头猫 ); 14*5500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.RemotePrevious, () => 15*5500cea7S猫头猫 TrackPlayer.skipToPrevious(), 164060c00aS猫头猫 ); 17*5500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.RemoteNext, () => 18*5500cea7S猫头猫 TrackPlayer.skipToNext(), 19*5500cea7S猫头猫 ); 20*5500cea7S猫头猫 RNTrackPlayer.addEventListener( 21846ca2ccS猫头猫 Event.RemoteDuck, 22e2257bd6S猫头猫 async ({paused, permanent}) => { 23e22d5e4fS猫头猫 if (Config.get('setting.basic.notInterrupt')) { 24caaa811bS猫头猫 return; 25caaa811bS猫头猫 } 26e2257bd6S猫头猫 if (permanent) { 27*5500cea7S猫头猫 return TrackPlayer.pause(); 28eb04a812S猫头猫 } 29266badb7S猫头猫 const tempRemoteDuckConf = Config.get( 30266badb7S猫头猫 'setting.basic.tempRemoteDuck', 31266badb7S猫头猫 ); 32266badb7S猫头猫 if (tempRemoteDuckConf === '降低音量') { 33266badb7S猫头猫 if (paused) { 34*5500cea7S猫头猫 return RNTrackPlayer.setVolume(0.5); 35266badb7S猫头猫 } else { 36*5500cea7S猫头猫 return RNTrackPlayer.setVolume(1); 37266badb7S猫头猫 } 38266badb7S猫头猫 } else { 39eb04a812S猫头猫 if (paused) { 40*5500cea7S猫头猫 resumeState = 41*5500cea7S猫头猫 (await RNTrackPlayer.getPlaybackState()).state ?? 42*5500cea7S猫头猫 State.Paused; 43*5500cea7S猫头猫 return TrackPlayer.pause(); 4451c513c9S猫头猫 } else { 4551c513c9S猫头猫 if (resumeState && !musicIsPaused(resumeState)) { 4651c513c9S猫头猫 resumeState = null; 47*5500cea7S猫头猫 return TrackPlayer.play(); 48eb04a812S猫头猫 } 4951c513c9S猫头猫 resumeState = null; 5051c513c9S猫头猫 } 51266badb7S猫头猫 } 52846ca2ccS猫头猫 }, 53846ca2ccS猫头猫 ); 5457277364S猫头猫 55*5500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.PlaybackActiveTrackChanged, () => { 56*5500cea7S猫头猫 const currentMusicItem = TrackPlayer.getCurrentMusic(); 5757277364S猫头猫 if (currentMusicItem) { 5857277364S猫头猫 LyricUtil.setStatusBarLyricText( 5957277364S猫头猫 `${currentMusicItem.title} - ${currentMusicItem.artist}`, 6057277364S猫头猫 ); 6157277364S猫头猫 } 6257277364S猫头猫 }); 6357277364S猫头猫 64*5500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.PlaybackProgressUpdated, evt => { 65bb9b2f7bS猫头猫 Config.set('status.music.progress', evt.position, false); 6657277364S猫头猫 6757277364S猫头猫 // 歌词逻辑 6857277364S猫头猫 const parser = LyricManager.getLyricState().lyricParser; 6957277364S猫头猫 if (parser) { 7057277364S猫头猫 const prevLyricText = LyricManager.getCurrentLyric()?.lrc; 7157277364S猫头猫 const currentLyricItem = parser.getPosition(evt.position).lrc; 7257277364S猫头猫 if (prevLyricText !== currentLyricItem?.lrc) { 7357277364S猫头猫 LyricManager.setCurrentLyric(currentLyricItem ?? null); 7457277364S猫头猫 7557277364S猫头猫 if (Config.get('setting.lyric.showStatusBarLyric')) { 7657277364S猫头猫 LyricUtil.setStatusBarLyricText( 7757277364S猫头猫 currentLyricItem?.lrc ?? '', 7857277364S猫头猫 ); 7957277364S猫头猫 } 8057277364S猫头猫 } 8157277364S猫头猫 } 82846ca2ccS猫头猫 }); 83bf6e62f2S猫头猫}; 84