1import MusicQueue from '@/common/musicQueue'; 2import MusicSheet from '@/common/musicSheet'; 3import {check, PERMISSIONS, request} from 'react-native-permissions'; 4import TrackPlayer, { Capability } from 'react-native-track-player'; 5import {pluginManager} from '../common/pluginManager'; 6import 'react-native-get-random-values'; 7import {ToastAndroid} from 'react-native'; 8import { loadConfig } from '@/common/localConfigManager'; 9import RNBootSplash from "react-native-bootsplash"; 10 11/** app加载前执行 */ 12export default async function () { 13 // 检查权限 14 const [readStoragePermission, writeStoragePermission] = await Promise.all([ 15 check(PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE), 16 check(PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE), 17 ]); 18 if ( 19 !( 20 readStoragePermission === 'granted' && 21 writeStoragePermission === 'granted' 22 ) 23 ) { 24 await request(PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE); 25 await request(PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE); 26 } 27 28 // 加载配置 29 await loadConfig(); 30 // 加载插件 31 32 Promise.all([ 33 await pluginManager.initPlugins(), 34 await TrackPlayer.setupPlayer(), 35 await TrackPlayer.updateOptions({ 36 stopWithApp: false, 37 alwaysPauseOnInterruption: true, 38 capabilities: [ 39 Capability.Play, 40 Capability.Pause, 41 Capability.SkipToNext, 42 Capability.SkipToPrevious, 43 ], 44 compactCapabilities: [ 45 Capability.Play, 46 Capability.Pause, 47 Capability.SkipToNext, 48 Capability.SkipToPrevious, 49 ], 50 notificationCapabilities: [ 51 Capability.Play, 52 Capability.Pause, 53 Capability.SkipToNext, 54 Capability.SkipToPrevious, 55 ] 56 }) 57 ]); 58 // musicController.initMusicControl(); 59 await MusicQueue.setupMusicQueue(); 60 await MusicSheet.initMusicSheet(); 61 62 ErrorUtils.setGlobalHandler(error => ToastAndroid.show(`error: ${error?.message}`, ToastAndroid.LONG)); 63 RNBootSplash.hide({fade: true}); 64 // 隐藏开屏动画 65} 66