import 'package:audioplayers/audioplayers.dart'; import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/talk/startChart/constant/udp_constant.dart'; import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; import 'package:star_lock/talk/startChart/start_chart_manage.dart'; class AudioPlayerManager { // 私有构造函数,防止外部创建实例 AudioPlayerManager._(); // 静态变量保存单例对象 static final AudioPlayerManager _instance = AudioPlayerManager._(); // 工厂构造函数,总是返回相同的实例 factory AudioPlayerManager() => _instance; // 单例的 AudioPlayer 实例 final AudioPlayer _audioPlayer = AudioPlayer(); // 播放铃声 Future playRingtone() async { try { await _audioPlayer.setReleaseMode(ReleaseMode.loop); await _audioPlayer.play(AssetSource('ring1.mp3')); log(text: 'Ringtone started playing.'); } catch (e) { log(text: 'Error playing ringtone: $e'); } } // 停止播放铃声 Future stopRingtone() async { try { // 不需要设置 ReleaseMode,在停止时保持默认即可 _audioPlayer.setReleaseMode(ReleaseMode.loop); await _audioPlayer.stop(); log(text: 'Ringtone stopped.'); } catch (e) { log(text: 'Error stopping ringtone: $e'); } } // 其他可能的方法,例如暂停、继续等 Future pauseRingtone() async { try { await _audioPlayer.pause(); log(text: 'Ringtone paused.'); } catch (e) { log(text: 'Error pausing ringtone: $e'); } } Future resumeRingtone() async { try { await _audioPlayer.resume(); log(text: 'Ringtone resumed.'); } catch (e) { log(text: 'Error resuming ringtone: $e'); } } // 日志方法 void log({required String text}) { AppLog.log('AudioPlayerManager==========$text'); } }