1*41ddce91Smaotoumaoimport Config from "@/core/config.ts"; 263c74e8eSmaotoumaoimport RNTrackPlayer, { Event, State } from "react-native-track-player"; 363c74e8eSmaotoumaoimport LyricManager from "@/core/lyricManager"; 463c74e8eSmaotoumaoimport LyricUtil from "@/native/lyricUtil"; 563c74e8eSmaotoumaoimport TrackPlayer from "@/core/trackPlayer"; 663c74e8eSmaotoumaoimport { musicIsPaused } from "@/utils/trackUtils"; 7819a9075Smaotoumaoimport PersistStatus from "@/core/persistStatus.ts"; 8bf6e62f2S猫头猫 951c513c9S猫头猫let resumeState: State | null; 10bf6e62f2S猫头猫module.exports = async function () { 115500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.RemotePlay, () => TrackPlayer.play()); 125500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.RemotePause, () => 135500cea7S猫头猫 TrackPlayer.pause(), 14846ca2ccS猫头猫 ); 155500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.RemotePrevious, () => 165500cea7S猫头猫 TrackPlayer.skipToPrevious(), 174060c00aS猫头猫 ); 185500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.RemoteNext, () => 195500cea7S猫头猫 TrackPlayer.skipToNext(), 205500cea7S猫头猫 ); 215500cea7S猫头猫 RNTrackPlayer.addEventListener( 22846ca2ccS猫头猫 Event.RemoteDuck, 23e2257bd6S猫头猫 async ({paused, permanent}) => { 24*41ddce91Smaotoumao if (Config.getConfig('basic.notInterrupt')) { 25caaa811bS猫头猫 return; 26caaa811bS猫头猫 } 27e2257bd6S猫头猫 if (permanent) { 285500cea7S猫头猫 return TrackPlayer.pause(); 29eb04a812S猫头猫 } 30*41ddce91Smaotoumao const tempRemoteDuckConf = Config.getConfig( 31*41ddce91Smaotoumao 'basic.tempRemoteDuck', 32266badb7S猫头猫 ); 33266badb7S猫头猫 if (tempRemoteDuckConf === '降低音量') { 34266badb7S猫头猫 if (paused) { 355500cea7S猫头猫 return RNTrackPlayer.setVolume(0.5); 36266badb7S猫头猫 } else { 375500cea7S猫头猫 return RNTrackPlayer.setVolume(1); 38266badb7S猫头猫 } 39266badb7S猫头猫 } else { 40eb04a812S猫头猫 if (paused) { 415500cea7S猫头猫 resumeState = 425500cea7S猫头猫 (await RNTrackPlayer.getPlaybackState()).state ?? 435500cea7S猫头猫 State.Paused; 445500cea7S猫头猫 return TrackPlayer.pause(); 4551c513c9S猫头猫 } else { 4651c513c9S猫头猫 if (resumeState && !musicIsPaused(resumeState)) { 4751c513c9S猫头猫 resumeState = null; 485500cea7S猫头猫 return TrackPlayer.play(); 49eb04a812S猫头猫 } 5051c513c9S猫头猫 resumeState = null; 5151c513c9S猫头猫 } 52266badb7S猫头猫 } 53846ca2ccS猫头猫 }, 54846ca2ccS猫头猫 ); 5557277364S猫头猫 565500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.PlaybackActiveTrackChanged, () => { 575500cea7S猫头猫 const currentMusicItem = TrackPlayer.getCurrentMusic(); 5857277364S猫头猫 if (currentMusicItem) { 5957277364S猫头猫 LyricUtil.setStatusBarLyricText( 6057277364S猫头猫 `${currentMusicItem.title} - ${currentMusicItem.artist}`, 6157277364S猫头猫 ); 6257277364S猫头猫 } 6357277364S猫头猫 }); 6457277364S猫头猫 655500cea7S猫头猫 RNTrackPlayer.addEventListener(Event.PlaybackProgressUpdated, evt => { 66819a9075Smaotoumao PersistStatus.set('music.progress', evt.position); 6757277364S猫头猫 6857277364S猫头猫 // 歌词逻辑 6957277364S猫头猫 const parser = LyricManager.getLyricState().lyricParser; 7057277364S猫头猫 if (parser) { 7157277364S猫头猫 const prevLyricText = LyricManager.getCurrentLyric()?.lrc; 7243733013S猫头猫 const currentLyricItem = parser.getPosition(evt.position); 7357277364S猫头猫 if (prevLyricText !== currentLyricItem?.lrc) { 7457277364S猫头猫 LyricManager.setCurrentLyric(currentLyricItem ?? null); 75819a9075Smaotoumao const showTranslation = PersistStatus.get( 7613cebe63S猫头猫 'lyric.showTranslation', 777e883dbbS猫头猫 ); 78*41ddce91Smaotoumao if (Config.getConfig('lyric.showStatusBarLyric')) { 7957277364S猫头猫 LyricUtil.setStatusBarLyricText( 807e883dbbS猫头猫 (currentLyricItem?.lrc ?? '') + 817e883dbbS猫头猫 (showTranslation 8243733013S猫头猫 ? `\n${currentLyricItem?.translation ?? ''}` 837e883dbbS猫头猫 : ''), 8457277364S猫头猫 ); 8557277364S猫头猫 } 8657277364S猫头猫 } 8757277364S猫头猫 } 88846ca2ccS猫头猫 }); 8966e1d5fcS猫头猫 9066e1d5fcS猫头猫 RNTrackPlayer.addEventListener(Event.RemoteStop, async () => { 9166e1d5fcS猫头猫 RNTrackPlayer.stop(); 9266e1d5fcS猫头猫 }); 9366e1d5fcS猫头猫 9466e1d5fcS猫头猫 RNTrackPlayer.addEventListener(Event.RemoteSeek, async evt => { 9566e1d5fcS猫头猫 TrackPlayer.seekTo(evt.position); 9666e1d5fcS猫头猫 }); 97bf6e62f2S猫头猫}; 98