fix:逻辑梳理
This commit is contained in:
parent
a677def7f3
commit
f337f6d346
@ -4,6 +4,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/flavors.dart';
|
||||
import 'package:star_lock/login/login/starLock_login_state.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/impl/udp_talk_ping_handler.dart';
|
||||
import 'package:star_lock/talk/startChart/start_chart_manage.dart';
|
||||
import 'package:star_lock/tools/appFirstEnterHandle.dart';
|
||||
import 'package:star_lock/tools/wechat/customer_tool.dart';
|
||||
@ -250,6 +251,18 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
|
||||
);
|
||||
},
|
||||
),
|
||||
SubmitBtn(
|
||||
btnName: '播放铃声',
|
||||
onClick: () {
|
||||
UdpTalkPingHandler().playRingtone();
|
||||
},
|
||||
),
|
||||
SubmitBtn(
|
||||
btnName: '停止播放铃声',
|
||||
onClick: () {
|
||||
UdpTalkPingHandler().stopRingtone();
|
||||
},
|
||||
),
|
||||
SizedBox(height: 50.w),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/appRouters.dart';
|
||||
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
|
||||
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
|
||||
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
|
||||
|
||||
import '../../start_chart_manage.dart';
|
||||
|
||||
class UdpCallRequestHandler extends ScpMessageBaseHandle
|
||||
implements ScpMessageHandler {
|
||||
@override
|
||||
void handle(ScpMessage scpMessage) {
|
||||
final GenericResp genericResp = scpMessage.Payload;
|
||||
if (checkGenericRespSuccess(genericResp)) {
|
||||
// 收到呼叫请求,跳转到接听页面
|
||||
Get.toNamed(
|
||||
Routers.lockMonitoringPage,
|
||||
arguments: <String, String>{'lockId': '111'},
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,6 @@ import '../../start_chart_manage.dart';
|
||||
class UdpHeartBeatHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
|
||||
@override
|
||||
void handle(ScpMessage scpMessage) {
|
||||
final startChartManage = StartChartManage();
|
||||
final HeartbeatResponse heartbeatResponse = scpMessage.Payload;
|
||||
final statusCode = heartbeatResponse.statusCode;
|
||||
if (statusCode != null &&
|
||||
|
||||
@ -14,8 +14,21 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
|
||||
void handle(ScpMessage scpMessage) {
|
||||
final GenericResp genericResp = scpMessage.Payload;
|
||||
if (checkGenericRespSuccess(genericResp)) {
|
||||
// TODO 同意接听
|
||||
// TODO 启动发送通话保持
|
||||
// 同意接听
|
||||
// 回复成功消息
|
||||
startChartManage.sendGenericRespSuccessMessage(
|
||||
ToPeerId: scpMessage.FromPeerId!,
|
||||
FromPeerId: scpMessage.ToPeerId!,
|
||||
PayloadType: scpMessage.PayloadType!,
|
||||
);
|
||||
// 启动通话保持
|
||||
startChartManage.startTalkPingMessageTimer();
|
||||
// 启动通话保持监听定时器
|
||||
talkePingOverTimeTimerManager.startTimer();
|
||||
// 设置通话保持超时后的事件
|
||||
talkePingOverTimeTimerManager.setOnTimeout(() {
|
||||
EasyLoading.showToast('通话异常中断', duration: 2000.milliseconds);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,12 +1,8 @@
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
|
||||
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
|
||||
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
|
||||
|
||||
import '../../start_chart_manage.dart';
|
||||
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
|
||||
|
||||
class UdpTalkPingHandler extends ScpMessageBaseHandle
|
||||
implements ScpMessageHandler {
|
||||
@ -14,7 +10,10 @@ class UdpTalkPingHandler extends ScpMessageBaseHandle
|
||||
void handle(ScpMessage scpMessage) {
|
||||
final GenericResp genericResp = scpMessage.Payload;
|
||||
if (checkGenericRespSuccess(genericResp)) {
|
||||
// TODO 呼叫保持
|
||||
// 收到消息
|
||||
talkePingOverTimeTimerManager.receiveMessage();
|
||||
// 修改状态
|
||||
startChartManage.changeCallingStatus(true);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,61 @@
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/appRouters.dart';
|
||||
import 'package:star_lock/talk/startChart/entity/scp_message.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
|
||||
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart';
|
||||
import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
|
||||
import 'package:star_lock/tools/storage.dart';
|
||||
|
||||
import '../../start_chart_manage.dart';
|
||||
|
||||
class UdpTalkRequestHandler extends ScpMessageBaseHandle
|
||||
implements ScpMessageHandler {
|
||||
@override
|
||||
void handle(ScpMessage scpMessage) {
|
||||
final GenericResp genericResp = scpMessage.Payload;
|
||||
if (checkGenericRespSuccess(genericResp)) {
|
||||
// 回复成功消息
|
||||
startChartManage.sendGenericRespSuccessMessage(
|
||||
ToPeerId: scpMessage.FromPeerId!,
|
||||
FromPeerId: scpMessage.ToPeerId!,
|
||||
PayloadType: scpMessage.PayloadType!,
|
||||
);
|
||||
// 处理收到接听请求后的事件
|
||||
_talkRequestEvent();
|
||||
}
|
||||
}
|
||||
|
||||
// 来电事件的处理
|
||||
void _talkRequestEvent() {
|
||||
playRingtone();
|
||||
_showTalkRequestNotification();
|
||||
// 收到呼叫请求,跳转到接听页面
|
||||
Get.toNamed(
|
||||
Routers.lockMonitoringPage,
|
||||
arguments: <String, String>{'lockId': '111'},
|
||||
);
|
||||
}
|
||||
|
||||
// 收到来电请求时进行本地通知
|
||||
Future<void> _showTalkRequestNotification() async {
|
||||
const AndroidNotificationDetails androidPlatformChannelSpecifics =
|
||||
AndroidNotificationDetails('1', 'flutter_channel',
|
||||
importance: Importance.max,
|
||||
priority: Priority.high,
|
||||
playSound: true,
|
||||
ticker: 'ticker');
|
||||
const NotificationDetails platformChannelSpecifics =
|
||||
NotificationDetails(android: androidPlatformChannelSpecifics);
|
||||
// 获取锁名
|
||||
String? getLockName = await Storage.getString(saveLockAlias);
|
||||
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
|
||||
FlutterLocalNotificationsPlugin();
|
||||
// 执行本地通知
|
||||
await flutterLocalNotificationsPlugin.show(0, '呼叫提醒'.tr,
|
||||
'${'收到来自'.tr}($getLockName)${'锁的呼叫'.tr}。', platformChannelSpecifics,
|
||||
payload: 'item x');
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
import 'package:star_lock/talk/startChart/constant/payload_type_constant.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/impl/udp_ble_passthrough_handler.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/impl/udp_call_request_handler.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/impl/udp_talk_request_handler.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/impl/udp_echo_test_handler.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/impl/udp_gateway_reset_handler.dart';
|
||||
import 'package:star_lock/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart';
|
||||
@ -39,7 +39,7 @@ class ScpMessageHandlerFactory {
|
||||
case PayloadTypeConstant.talkReceiverTransfer:
|
||||
return UdpTalkReceiverTransferHandler();
|
||||
case PayloadTypeConstant.callRequest:
|
||||
return UdpCallRequestHandler();
|
||||
return UdpTalkRequestHandler();
|
||||
case PayloadTypeConstant.talkPush:
|
||||
return UdpTalkPushHandler();
|
||||
case PayloadTypeConstant.talkReject:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user