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:get/get.dart';
|
||||||
import 'package:star_lock/flavors.dart';
|
import 'package:star_lock/flavors.dart';
|
||||||
import 'package:star_lock/login/login/starLock_login_state.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/talk/startChart/start_chart_manage.dart';
|
||||||
import 'package:star_lock/tools/appFirstEnterHandle.dart';
|
import 'package:star_lock/tools/appFirstEnterHandle.dart';
|
||||||
import 'package:star_lock/tools/wechat/customer_tool.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),
|
SizedBox(height: 50.w),
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
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 {
|
class UdpHeartBeatHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
|
||||||
@override
|
@override
|
||||||
void handle(ScpMessage scpMessage) {
|
void handle(ScpMessage scpMessage) {
|
||||||
final startChartManage = StartChartManage();
|
|
||||||
final HeartbeatResponse heartbeatResponse = scpMessage.Payload;
|
final HeartbeatResponse heartbeatResponse = scpMessage.Payload;
|
||||||
final statusCode = heartbeatResponse.statusCode;
|
final statusCode = heartbeatResponse.statusCode;
|
||||||
if (statusCode != null &&
|
if (statusCode != null &&
|
||||||
|
|||||||
@ -14,8 +14,21 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
|
|||||||
void handle(ScpMessage scpMessage) {
|
void handle(ScpMessage scpMessage) {
|
||||||
final GenericResp genericResp = scpMessage.Payload;
|
final GenericResp genericResp = scpMessage.Payload;
|
||||||
if (checkGenericRespSuccess(genericResp)) {
|
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/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_base_handle.dart';
|
||||||
import 'package:star_lock/talk/startChart/handle/scp_message_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
|
class UdpTalkPingHandler extends ScpMessageBaseHandle
|
||||||
implements ScpMessageHandler {
|
implements ScpMessageHandler {
|
||||||
@ -14,7 +10,10 @@ class UdpTalkPingHandler extends ScpMessageBaseHandle
|
|||||||
void handle(ScpMessage scpMessage) {
|
void handle(ScpMessage scpMessage) {
|
||||||
final GenericResp genericResp = scpMessage.Payload;
|
final GenericResp genericResp = scpMessage.Payload;
|
||||||
if (checkGenericRespSuccess(genericResp)) {
|
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/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_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_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_reset_handler.dart';
|
||||||
import 'package:star_lock/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart';
|
import 'package:star_lock/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart';
|
||||||
@ -39,7 +39,7 @@ class ScpMessageHandlerFactory {
|
|||||||
case PayloadTypeConstant.talkReceiverTransfer:
|
case PayloadTypeConstant.talkReceiverTransfer:
|
||||||
return UdpTalkReceiverTransferHandler();
|
return UdpTalkReceiverTransferHandler();
|
||||||
case PayloadTypeConstant.callRequest:
|
case PayloadTypeConstant.callRequest:
|
||||||
return UdpCallRequestHandler();
|
return UdpTalkRequestHandler();
|
||||||
case PayloadTypeConstant.talkPush:
|
case PayloadTypeConstant.talkPush:
|
||||||
return UdpTalkPushHandler();
|
return UdpTalkPushHandler();
|
||||||
case PayloadTypeConstant.talkReject:
|
case PayloadTypeConstant.talkReject:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user