From 05fb0689c9d2de0eb35dc295daa5868d21dd1e10 Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 5 Dec 2024 13:49:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E9=93=83=E5=A3=B0?= =?UTF-8?q?=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/talk/other/audio_player_manager.dart | 66 ++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 lib/talk/other/audio_player_manager.dart diff --git a/lib/talk/other/audio_player_manager.dart b/lib/talk/other/audio_player_manager.dart new file mode 100644 index 00000000..1e429d15 --- /dev/null +++ b/lib/talk/other/audio_player_manager.dart @@ -0,0 +1,66 @@ +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,在停止时保持默认即可 + 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'); + } +}