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