1*41ddce91Smaotoumaoimport Config from "@/core/config.ts"; 2*41ddce91Smaotoumaoimport Toast from "@/utils/toast"; 3*41ddce91Smaotoumaoimport { NativeModule, NativeModules } from "react-native"; 4*41ddce91Smaotoumaoimport { errorLog } from "@/utils/log.ts"; 5689db039S猫头猫 657277364S猫头猫export enum NativeTextAlignment { 757277364S猫头猫 // 左对齐 857277364S猫头猫 LEFT = 3, 957277364S猫头猫 // 右对齐 1057277364S猫头猫 RIGHT = 5, 1157277364S猫头猫 // 居中 1257277364S猫头猫 CENTER = 17, 1357277364S猫头猫} 1457277364S猫头猫 15689db039S猫头猫// 状态栏歌词的工具 16689db039S猫头猫interface ILyricUtil extends NativeModule { 17689db039S猫头猫 /** 显示状态栏歌词 */ 180be848bcS猫头猫 showStatusBarLyric: ( 190be848bcS猫头猫 initLyric?: string, 200be848bcS猫头猫 config?: Record<string, any>, 210be848bcS猫头猫 ) => Promise<void>; 22689db039S猫头猫 /** 隐藏状态栏歌词 */ 23689db039S猫头猫 hideStatusBarLyric: () => Promise<void>; 2457277364S猫头猫 /** 设置歌词文本 */ 2557277364S猫头猫 setStatusBarLyricText: (lyric: string) => Promise<void>; 2657277364S猫头猫 /** 设置距离顶部的距离 */ 2757277364S猫头猫 setStatusBarLyricTop: (percent: number) => Promise<void>; 2857277364S猫头猫 /** 设置距离左部的距离 */ 2957277364S猫头猫 setStatusBarLyricLeft: (percent: number) => Promise<void>; 3057277364S猫头猫 /** 设置宽度 */ 3157277364S猫头猫 setStatusBarLyricWidth: (percent: number) => Promise<void>; 3257277364S猫头猫 /** 设置字体 */ 3357277364S猫头猫 setStatusBarLyricFontSize: (fontSize: number) => Promise<void>; 3457277364S猫头猫 /** 设置对齐 */ 3557277364S猫头猫 setStatusBarLyricAlign: (alignment: NativeTextAlignment) => Promise<void>; 3657277364S猫头猫 /** 设置颜色 */ 3757277364S猫头猫 setStatusBarColors: ( 3857277364S猫头猫 textColor: string | null, 3957277364S猫头猫 backgroundColor: string | null, 4057277364S猫头猫 ) => Promise<void>; 4115900d05S猫头猫 /** 检查权限 */ 4215900d05S猫头猫 checkSystemAlertPermission: () => Promise<boolean>; 4315900d05S猫头猫 /** 请求悬浮窗 */ 4415900d05S猫头猫 requestSystemAlertPermission: () => Promise<boolean>; 45689db039S猫头猫} 46689db039S猫头猫 47689db039S猫头猫const LyricUtil: ILyricUtil = NativeModules.LyricUtil; 48689db039S猫头猫 49ed3e0db2S猫头猫const originalShowStatusBarLyric = LyricUtil.showStatusBarLyric; 50ed3e0db2S猫头猫 51ed3e0db2S猫头猫const showStatusBarLyric: ILyricUtil['showStatusBarLyric'] = async ( 52ed3e0db2S猫头猫 initLyric, 53ed3e0db2S猫头猫 config, 54ed3e0db2S猫头猫) => { 55ed3e0db2S猫头猫 try { 56b3a3a048S猫头猫 await originalShowStatusBarLyric(initLyric, config); 57ed3e0db2S猫头猫 } catch (e) { 58fe4a3819S猫头猫 errorLog('状态栏歌词开启失败', e); 59ed3e0db2S猫头猫 Toast.warn('状态栏歌词开启失败,请到手机系统设置打开悬浮窗权限'); 60*41ddce91Smaotoumao Config.setConfig('lyric.showStatusBarLyric', false); 61ed3e0db2S猫头猫 } 62ed3e0db2S猫头猫}; 63ed3e0db2S猫头猫 64ed3e0db2S猫头猫LyricUtil.showStatusBarLyric = showStatusBarLyric; 65ed3e0db2S猫头猫 66689db039S猫头猫export default LyricUtil; 67