fix:增加铃声控制
This commit is contained in:
parent
acc16a7889
commit
05fb0689c9
66
lib/talk/other/audio_player_manager.dart
Normal file
66
lib/talk/other/audio_player_manager.dart
Normal file
@ -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<void> 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<void> stopRingtone() async {
|
||||||
|
try {
|
||||||
|
// 不需要设置 ReleaseMode,在停止时保持默认即可
|
||||||
|
await _audioPlayer.stop();
|
||||||
|
log(text: 'Ringtone stopped.');
|
||||||
|
} catch (e) {
|
||||||
|
log(text: 'Error stopping ringtone: $e');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 其他可能的方法,例如暂停、继续等
|
||||||
|
Future<void> pauseRingtone() async {
|
||||||
|
try {
|
||||||
|
await _audioPlayer.pause();
|
||||||
|
log(text: 'Ringtone paused.');
|
||||||
|
} catch (e) {
|
||||||
|
log(text: 'Error pausing ringtone: $e');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> 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');
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user