xref: /MusicFree/src/service/index.ts (revision 266badb71020780e01a05212e3dc854f9d73dfad)
1e22d5e4fS猫头猫import Config from '@/core/config';
2846ca2ccS猫头猫import musicIsPaused from '@/utils/musicIsPaused';
38c55a6aaS猫头猫import TrackPlayer, {Event, State} from 'react-native-track-player';
4242960d3S猫头猫import MusicQueue from '../core/musicQueue';
5bf6e62f2S猫头猫
6846ca2ccS猫头猫let resumeState: State;
7bf6e62f2S猫头猫module.exports = async function () {
8bf6e62f2S猫头猫    TrackPlayer.addEventListener(Event.RemotePlay, () => MusicQueue.play());
9bf6e62f2S猫头猫    TrackPlayer.addEventListener(Event.RemotePause, () => MusicQueue.pause());
10846ca2ccS猫头猫    TrackPlayer.addEventListener(Event.RemotePrevious, () =>
11846ca2ccS猫头猫        MusicQueue.skipToPrevious(),
12846ca2ccS猫头猫    );
134060c00aS猫头猫    TrackPlayer.addEventListener(Event.RemoteNext, () =>
144060c00aS猫头猫        MusicQueue.skipToNext(),
154060c00aS猫头猫    );
16846ca2ccS猫头猫    TrackPlayer.addEventListener(
17846ca2ccS猫头猫        Event.RemoteDuck,
18e2257bd6S猫头猫        async ({paused, permanent}) => {
19e22d5e4fS猫头猫            if (Config.get('setting.basic.notInterrupt')) {
20caaa811bS猫头猫                return;
21caaa811bS猫头猫            }
22e2257bd6S猫头猫            if (permanent) {
23eb04a812S猫头猫                return MusicQueue.pause();
24eb04a812S猫头猫            }
25*266badb7S猫头猫            const tempRemoteDuckConf = Config.get(
26*266badb7S猫头猫                'setting.basic.tempRemoteDuck',
27*266badb7S猫头猫            );
28*266badb7S猫头猫            if (tempRemoteDuckConf === '降低音量') {
29*266badb7S猫头猫                if (paused) {
30*266badb7S猫头猫                    return TrackPlayer.setVolume(0.5);
31*266badb7S猫头猫                } else {
32*266badb7S猫头猫                    return TrackPlayer.setVolume(1);
33*266badb7S猫头猫                }
34*266badb7S猫头猫            } else {
35eb04a812S猫头猫                if (paused) {
36846ca2ccS猫头猫                    resumeState = await TrackPlayer.getState();
37eb04a812S猫头猫                    return MusicQueue.pause();
38846ca2ccS猫头猫                } else if (!musicIsPaused(resumeState)) {
39eb04a812S猫头猫                    return MusicQueue.play();
40eb04a812S猫头猫                }
41*266badb7S猫头猫            }
42846ca2ccS猫头猫        },
43846ca2ccS猫头猫    );
44846ca2ccS猫头猫    TrackPlayer.addEventListener(Event.PlaybackProgressUpdated, evt => {
45e22d5e4fS猫头猫        Config.set('status.music.progress', evt.position);
46846ca2ccS猫头猫    });
47bf6e62f2S猫头猫};
48