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