1e22d5e4fS猫头猫import Config from '@/core/config'; 25500cea7S猫头猫import RNTrackPlayer, {Event, State} from 'react-native-track-player'; 357277364S猫头猫import LyricManager from '@/core/lyricManager'; 457277364S猫头猫import LyricUtil from '@/native/lyricUtil'; 55500cea7S猫头猫import TrackPlayer from '@/core/trackPlayer'; 65500cea7S猫头猫import {musicIsPaused} from '@/utils/trackUtils'; 76e000b99S猫头猫import PersistStatus from '@/core/persistStatus'; 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}) => { 24e22d5e4fS猫头猫 if (Config.get('setting.basic.notInterrupt')) { 25caaa811bS猫头猫 return; 26caaa811bS猫头猫 } 27e2257bd6S猫头猫 if (permanent) { 285500cea7S猫头猫 return TrackPlayer.pause(); 29eb04a812S猫头猫 } 30266badb7S猫头猫 const tempRemoteDuckConf = Config.get( 31266badb7S猫头猫 'setting.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 => { 666e000b99S猫头猫 PersistStatus.set('music.progress', evt.position); 6757277364S猫头猫 6857277364S猫头猫 // 歌词逻辑 6957277364S猫头猫 const parser = LyricManager.getLyricState().lyricParser; 7057277364S猫头猫 if (parser) { 7157277364S猫头猫 const prevLyricText = LyricManager.getCurrentLyric()?.lrc; 7257277364S猫头猫 const currentLyricItem = parser.getPosition(evt.position).lrc; 7357277364S猫头猫 if (prevLyricText !== currentLyricItem?.lrc) { 7457277364S猫头猫 LyricManager.setCurrentLyric(currentLyricItem ?? null); 75*13cebe63S猫头猫 const showTranslation = PersistStatus.get( 76*13cebe63S猫头猫 'lyric.showTranslation', 777e883dbbS猫头猫 ); 7857277364S猫头猫 if (Config.get('setting.lyric.showStatusBarLyric')) { 7957277364S猫头猫 LyricUtil.setStatusBarLyricText( 807e883dbbS猫头猫 (currentLyricItem?.lrc ?? '') + 817e883dbbS猫头猫 (showTranslation 827e883dbbS猫头猫 ? `\n${ 837e883dbbS猫头猫 parser.getTranslationLyric()?.[ 847e883dbbS猫头猫 currentLyricItem?.index! 857e883dbbS猫头猫 ]?.lrc || '' 867e883dbbS猫头猫 }` 877e883dbbS猫头猫 : ''), 8857277364S猫头猫 ); 8957277364S猫头猫 } 9057277364S猫头猫 } 9157277364S猫头猫 } 92846ca2ccS猫头猫 }); 93bf6e62f2S猫头猫}; 94