app-starlock/lib/talk/other/audio_player_manager.dart
“DaisyWu” 1e9d68be6e fix: 1,修复接听、挂断铃声未取消问题
2,修复挂断后未退出对讲问题
2024-12-10 18:33:32 +08:00

68 lines
1.9 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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在停止时保持默认即可
_audioPlayer.setReleaseMode(ReleaseMode.loop);
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');
}
}