import 'package:deep_voice/core/utils/logger.dart'; import 'package:get/get.dart'; import 'package:music_service/music_service.dart'; import 'package:permission_handler/permission_handler.dart'; import '../../core/utils/permission_util.dart'; import 'package:flutter/material.dart'; //音乐播放管理 class MusicManager extends GetxService { static MusicManager get to => Get.find(); // 音乐服务实例 final MusicService _musicService = MusicService(); /// 初始化 @override void onInit() { super.onInit(); // final context = Get.context; // if (context == null) { // Logger.error('无法获取 BuildContext'); // return; // } requestNotificationPermission(); Logger.info('初始化权限请求'); } Future requestNotificationPermission() async { final granted = await PermissionUtil.instance.requestPermission( // context: context, permissionType: Permission.notification, permissionName: '通知', explanationText: '需要通知权限来显示音乐播放状态。', permanentDenialText: '您已永久拒绝通知权限,请前往设置开启权限。', settingsButtonText: '去设置', cancelButtonText: '取消', ); if (!granted) { Logger.warning('通知权限未被授予'); return; } Logger.info('通知权限已授予'); } /// 释放资源 @override void onClose() { super.onClose(); } //播放 Future play(Map song) async { await _musicService.playMusic(song); } //暂停 Future pause() async { await _musicService.pauseMusic(); } //继续 Future resume() async { await _musicService.resumeMusic(); } //状态 Future> getStatus() async { return await _musicService.getStatus(); } //获取播放进度 Future> getProgress() async { return await _musicService.getProgress(); } //跳转到指定位置 Future seekTo(int positionMs) async { await _musicService.seekTo(positionMs); } }