67 lines
2.2 KiB
Dart
67 lines
2.2 KiB
Dart
import 'package:audioplayers/audioplayers.dart';
|
|
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
|
|
|
import 'package:star_lock/app_settings/app_settings.dart';
|
|
import 'package:star_lock/talk/other/audio_player_manager.dart';
|
|
import 'package:star_lock/talk/startChart/constant/udp_constant.dart';
|
|
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
|
|
import 'package:star_lock/talk/startChart/handle/other/overtime_timer_manger.dart';
|
|
import 'package:star_lock/talk/startChart/handle/other/talk_data_repository.dart';
|
|
|
|
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
|
|
import 'package:star_lock/talk/startChart/start_chart_manage.dart';
|
|
import 'package:star_lock/talk/startChart/start_chart_talk_status.dart';
|
|
|
|
class ScpMessageBaseHandle {
|
|
final startChartManage = StartChartManage();
|
|
|
|
// 通话数据流的单例流数据处理类
|
|
final TalkDataRepository talkDataRepository = TalkDataRepository.instance;
|
|
|
|
final audioManager = AudioPlayerManager();
|
|
|
|
// 通话保持超时监听定时器管理
|
|
final talkePingOverTimeTimerManager = OverTimeTimerManager(
|
|
timeoutInSeconds: 5,
|
|
);
|
|
|
|
// 通话数据超时定时器
|
|
final talkDataOverTimeTimerManager = OverTimeTimerManager(
|
|
timeoutInSeconds: 3,
|
|
);
|
|
|
|
// 回复成功消息
|
|
void replySuccessMessage(ScpMessage scpMessage){
|
|
startChartManage.sendGenericRespSuccessMessage(
|
|
ToPeerId: scpMessage.FromPeerId!,
|
|
FromPeerId: scpMessage.ToPeerId!,
|
|
PayloadType: scpMessage.PayloadType!,
|
|
);
|
|
}
|
|
|
|
// 获取 StartChartTalkStatus 的唯一实例
|
|
StartChartTalkStatus talkStatus = StartChartTalkStatus.instance;
|
|
|
|
bool checkGenericRespSuccess(GenericResp genericResp) {
|
|
if (genericResp == null) return false;
|
|
final code = genericResp.code;
|
|
final message = genericResp.message;
|
|
return code == UdpConstant.genericRespSuccessCode &&
|
|
message == UdpConstant.genericRespSuccessMsg;
|
|
}
|
|
|
|
void log({required String text}) {
|
|
AppLog.log('==========${text}');
|
|
}
|
|
|
|
// 播放铃声
|
|
void playRingtone() async {
|
|
await audioManager.playRingtone();
|
|
}
|
|
|
|
// 停止播放铃声
|
|
void stopRingtone() async {
|
|
await audioManager.stopRingtone();
|
|
}
|
|
}
|