diff --git a/assets/demo.h264 b/assets/demo.h264
new file mode 100644
index 00000000..eb04d7b3
Binary files /dev/null and b/assets/demo.h264 differ
diff --git a/assets/html/h264.html b/assets/html/h264.html
new file mode 100644
index 00000000..431b5c38
--- /dev/null
+++ b/assets/html/h264.html
@@ -0,0 +1,2684 @@
+
+
+
+
+
+ play
+
+
+
+
+
+
+
+
+
diff --git a/assets/talk.h264 b/assets/talk.h264
new file mode 100644
index 00000000..5a1f2802
Binary files /dev/null and b/assets/talk.h264 differ
diff --git a/lib/appRouters.dart b/lib/appRouters.dart
index 12fbb302..f4bfb8ef 100755
--- a/lib/appRouters.dart
+++ b/lib/appRouters.dart
@@ -2,6 +2,7 @@ import 'package:get/get.dart';
import 'package:star_lock/common/safetyVerification/safetyVerification_binding.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/login/forgetPassword/starLock_forgetPassword_xhj_page.dart';
+import 'package:star_lock/login/login/JMuxerApp.dart';
import 'package:star_lock/login/login/starLock_login_xhj_page.dart';
import 'package:star_lock/login/register/starLock_register_binding.dart';
import 'package:star_lock/login/register/starLock_register_xhj_page.dart';
@@ -397,6 +398,7 @@ abstract class Routers {
static const String ownedKeyListPage = '/ownedKeyListPage'; //拥有的钥匙
static const String starLockLoginPage = '/StarLockLoginPage'; // 登录
+ static const String LocalHtmlPage = '/LocalHtmlPage'; // LocalHtmlPage
static const String starLockRegisterPage = '/StarLockRegisterPage'; // 注册
static const String starLockForgetPasswordPage =
'/StarLockForgetPasswordPage'; // 忘记密码
@@ -638,6 +640,9 @@ abstract class AppRouters {
page: () => F.sw(
skyCall: () => const StarLockLoginPage(),
xhjCall: () => const StarLockLoginXHJPage()),
+ ),GetPage(
+ name: Routers.LocalHtmlPage,
+ page: () => LocalHtmlPage(),
),
GetPage(
name: Routers.starLockRegisterPage,
diff --git a/lib/login/login/JMuxerApp.dart b/lib/login/login/JMuxerApp.dart
new file mode 100644
index 00000000..61d809ee
--- /dev/null
+++ b/lib/login/login/JMuxerApp.dart
@@ -0,0 +1,137 @@
+import 'dart:convert';
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart' show ByteData, Uint8List, rootBundle;
+import 'package:webview_flutter/webview_flutter.dart';
+
+class LocalHtmlPage extends StatefulWidget {
+ @override
+ _LocalHtmlPageState createState() => _LocalHtmlPageState();
+}
+
+class _LocalHtmlPageState extends State {
+ late final WebViewController _controller;
+
+ @override
+ void initState() {
+ super.initState();
+ _controller = WebViewController()
+ ..setJavaScriptMode(JavaScriptMode.unrestricted)
+ ..enableZoom(false)
+ ..addJavaScriptChannel(
+ 'Flutter',
+ onMessageReceived: (message) {
+ print("来自 HTML 的消息: ${message.message}");
+ },
+ );
+
+ // 加载本地 HTML
+ _loadLocalHtml();
+ _sendFramesToHtml();
+ }
+
+ void _sendFramesToHtml() async {
+ // 读取 assets/demo.h264 文件
+ final ByteData data = await rootBundle.load('assets/talk.h264');
+ final List byteData = data.buffer.asUint8List();
+
+ int offset = 0;
+ int frameSize = 0;
+
+ // 根据 H.264 数据的帧结构来逐帧读取并发送
+ while (offset < byteData.length) {
+ // 获取每一帧的大小
+ frameSize = getFrameSize(byteData, offset);
+
+ if (frameSize == 0) {
+ print("No more frames or error in frame size calculation.");
+ break; // 如果没有更多的帧,或者无法计算帧的大小,则退出循环
+ }
+
+ // 提取当前帧数据
+ List frameData = byteData.sublist(offset, offset + frameSize);
+
+ // 将当前帧数据发送到 WebView 中的 feedDataFromFlutter 函数
+ String jsCode = "feedDataFromFlutter(${frameData});";
+ await _controller.runJavaScript(jsCode);
+
+ // 更新偏移量,继续发送下一个帧
+ offset += frameSize;
+
+ // 控制帧率,模拟每秒 22 帧播放(或者根据你的视频帧率调整)
+ await Future.delayed(Duration(milliseconds: (1000 / 22).toInt()));
+ }
+ }
+
+ int getFrameSize(List data, int offset) {
+ // 查找第一个 Start Code (0x000001 或 0x00000001)
+ const List startCode1 = [0, 0, 0, 1]; // Start Code: 0x000001
+ const List startCode2 = [
+ 0,
+ 0,
+ 1
+ ]; // Start Code: 0x000001 (0x00000001 version)
+
+ // 查找下一个 Start Code 的位置
+ int startCodeStart = -1;
+ int startCodeEnd = -1;
+ for (int i = offset; i < data.length - 3; i++) {
+ // 判断是否匹配 Start Code (0x000001 或 0x00000001)
+ if (_matchesStartCode(data, i, startCode1)) {
+ startCodeStart = i;
+ startCodeEnd = i + startCode1.length;
+ break;
+ } else if (_matchesStartCode(data, i, startCode2)) {
+ startCodeStart = i;
+ startCodeEnd = i + startCode2.length;
+ break;
+ }
+ }
+
+ // 如果找不到有效的 Start Code,返回 0(结束循环)
+ if (startCodeStart == -1) return 0;
+
+ // 查找下一个 Start Code 的位置
+ int nextStartCodeStart = -1;
+ for (int i = startCodeEnd; i < data.length - 3; i++) {
+ if (_matchesStartCode(data, i, startCode1) ||
+ _matchesStartCode(data, i, startCode2)) {
+ nextStartCodeStart = i;
+ break;
+ }
+ }
+
+ // 如果找不到下一个 Start Code,说明当前是最后一个 NAL 单元
+ if (nextStartCodeStart == -1) {
+ return data.length - startCodeStart;
+ }
+
+ // 计算并返回当前 NAL 单元的大小
+ return nextStartCodeStart - startCodeStart;
+ }
+
+// 检查数据是否匹配 Start Code
+ bool _matchesStartCode(List data, int index, List startCode) {
+ for (int i = 0; i < startCode.length; i++) {
+ if (data[index + i] != startCode[i]) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ Future _loadLocalHtml() async {
+ final String fileHtmlContent =
+ await rootBundle.loadString('assets/html/h264.html');
+ _controller.loadHtmlString(fileHtmlContent);
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: Text("加载本地 HTML"),
+ ),
+ body: WebViewWidget(controller: _controller),
+ );
+ }
+}
diff --git a/lib/login/login/starLock_login_page.dart b/lib/login/login/starLock_login_page.dart
index 80cbc1d4..87a8f764 100755
--- a/lib/login/login/starLock_login_page.dart
+++ b/lib/login/login/starLock_login_page.dart
@@ -250,6 +250,13 @@ class _StarLockLoginPageState extends State {
// );
// },
// ),
+
+ SubmitBtn(
+ btnName: '跳转至html',
+ onClick: () {
+ Get.toNamed(Routers.LocalHtmlPage);
+ },
+ ),
SizedBox(height: 50.w),
Row(
mainAxisAlignment: MainAxisAlignment.center,
diff --git a/lib/talk/startChart/handle/impl/udp_ble_passthrough_handler.dart b/lib/talk/startChart/handle/impl/udp_ble_passthrough_handler.dart
index 8bb2bad7..5cc8361b 100644
--- a/lib/talk/startChart/handle/impl/udp_ble_passthrough_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_ble_passthrough_handler.dart
@@ -10,9 +10,8 @@ import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import '../../start_chart_manage.dart';
-class UdpBlePassThroughHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
-
-
+class UdpBlePassThroughHandler extends ScpMessageBaseHandle
+ implements ScpMessageHandler {
@override
void handleReq(ScpMessage scpMessage) {
final BleResp bleResp = scpMessage.Payload;
@@ -25,12 +24,8 @@ class UdpBlePassThroughHandler extends ScpMessageBaseHandle implements ScpMessag
}
@override
- void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
- }
+ void handleInvalidReq(ScpMessage scpMessage) {}
@override
- void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
- }
+ void handleRealTimeData(ScpMessage scpMessage) {}
}
diff --git a/lib/talk/startChart/handle/impl/udp_echo_test_handler.dart b/lib/talk/startChart/handle/impl/udp_echo_test_handler.dart
index 4f13ead1..a98870b5 100644
--- a/lib/talk/startChart/handle/impl/udp_echo_test_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_echo_test_handler.dart
@@ -6,9 +6,8 @@ import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import '../../start_chart_manage.dart';
-class UdpEchoTestHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
-
-
+class UdpEchoTestHandler extends ScpMessageBaseHandle
+ implements ScpMessageHandler {
@override
void handleReq(ScpMessage scpMessage) {
// TODO: 收到回声测试请求
@@ -21,12 +20,8 @@ class UdpEchoTestHandler extends ScpMessageBaseHandle implements ScpMessageHandl
}
@override
- void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
- }
+ void handleInvalidReq(ScpMessage scpMessage) {}
@override
- void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
- }
+ void handleRealTimeData(ScpMessage scpMessage) {}
}
diff --git a/lib/talk/startChart/handle/impl/udp_gateway_reset_handler.dart b/lib/talk/startChart/handle/impl/udp_gateway_reset_handler.dart
index d4bb0b37..b02bb65b 100644
--- a/lib/talk/startChart/handle/impl/udp_gateway_reset_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_gateway_reset_handler.dart
@@ -27,11 +27,11 @@ class UdpGateWayResetHandler extends ScpMessageBaseHandle implements ScpMessageH
@override
void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
+
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
+
}
}
diff --git a/lib/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart b/lib/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart
index 9e032ce1..7eae5ae8 100644
--- a/lib/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_gateway_transfer_handler.dart
@@ -10,8 +10,6 @@ import '../../start_chart_manage.dart';
class UdpGateWayTransferHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
-
-
@override
void handleReq(ScpMessage scpMessage) {
// TODO: 收到网关转移请求
@@ -27,12 +25,8 @@ class UdpGateWayTransferHandler extends ScpMessageBaseHandle
}
@override
- void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
- }
+ void handleInvalidReq(ScpMessage scpMessage) {}
@override
- void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
- }
+ void handleRealTimeData(ScpMessage scpMessage) {}
}
diff --git a/lib/talk/startChart/handle/impl/udp_go_online_handler.dart b/lib/talk/startChart/handle/impl/udp_go_online_handler.dart
index 74b75012..7f703f4a 100644
--- a/lib/talk/startChart/handle/impl/udp_go_online_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_go_online_handler.dart
@@ -31,12 +31,8 @@ class UdpGoOnlineHandler extends ScpMessageBaseHandle
}
@override
- void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
- }
+ void handleInvalidReq(ScpMessage scpMessage) {}
@override
- void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
- }
+ void handleRealTimeData(ScpMessage scpMessage) {}
}
diff --git a/lib/talk/startChart/handle/impl/udp_heart_beat_handler.dart b/lib/talk/startChart/handle/impl/udp_heart_beat_handler.dart
index abd7a434..de843012 100644
--- a/lib/talk/startChart/handle/impl/udp_heart_beat_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_heart_beat_handler.dart
@@ -7,9 +7,8 @@ import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart';
import '../../start_chart_manage.dart';
-class UdpHeartBeatHandler extends ScpMessageBaseHandle implements ScpMessageHandler {
-
-
+class UdpHeartBeatHandler extends ScpMessageBaseHandle
+ implements ScpMessageHandler {
@override
void handleReq(ScpMessage scpMessage) {
// TODO: 收到心跳消息请求
@@ -32,12 +31,8 @@ class UdpHeartBeatHandler extends ScpMessageBaseHandle implements ScpMessageHand
}
@override
- void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
- }
+ void handleInvalidReq(ScpMessage scpMessage) {}
@override
- void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
- }
+ void handleRealTimeData(ScpMessage scpMessage) {}
}
diff --git a/lib/talk/startChart/handle/impl/udp_remote_un_lock_handler.dart b/lib/talk/startChart/handle/impl/udp_remote_un_lock_handler.dart
index 3e3f3729..4852ee40 100644
--- a/lib/talk/startChart/handle/impl/udp_remote_un_lock_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_remote_un_lock_handler.dart
@@ -25,11 +25,11 @@ class UdpRemoteUnLockHandler extends ScpMessageBaseHandle implements ScpMessageH
@override
void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
+
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
+
}
}
diff --git a/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart
index a9716d90..434dbb8b 100644
--- a/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart
@@ -36,18 +36,17 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
stopRingtone();
// 设置状态为接听中
talkStatus.setDuringCall();
- stopRingtone();
}
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
+
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
+
}
// 启动通话保持
@@ -63,6 +62,7 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
startChartManage.stopTalkPingMessageTimer();
startChartManage.stopTalkExpectMessageTimer();
talkStatus.setNotTalkPing();
+ talkStatus.setEnd();
});
}
@@ -76,6 +76,7 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
startChartManage.stopTalkPingMessageTimer();
startChartManage.stopTalkExpectMessageTimer();
talkStatus.setNotTalkData();
+ talkStatus.setEnd();
});
}
diff --git a/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart
index 3a7dd4a4..f948b7f2 100644
--- a/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart
@@ -29,11 +29,11 @@ class UdpTalkExpectHandler extends ScpMessageBaseHandle
@override
void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
+
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
+
}
}
diff --git a/lib/talk/startChart/handle/impl/udp_talk_hangup_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_hangup_handler.dart
index 86b00c1e..38b07c3b 100644
--- a/lib/talk/startChart/handle/impl/udp_talk_hangup_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_talk_hangup_handler.dart
@@ -38,11 +38,11 @@ class UdpTalkHangUpHandler extends ScpMessageBaseHandle
@override
void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
+
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
+
}
}
diff --git a/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart
index 05c90ec7..0c952f48 100644
--- a/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart
@@ -6,7 +6,6 @@ import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
class UdpTalkPingHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
-
@override
void handleReq(ScpMessage scpMessage) {
// TODO: 收到通话保持请求
@@ -19,17 +18,12 @@ class UdpTalkPingHandler extends ScpMessageBaseHandle
if (checkGenericRespSuccess(genericResp)) {
// 收到消息,重新触发定时器
talkePingOverTimeTimerManager.receiveMessage();
-
}
}
@override
- void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
- }
+ void handleInvalidReq(ScpMessage scpMessage) {}
@override
- void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
- }
+ void handleRealTimeData(ScpMessage scpMessage) {}
}
diff --git a/lib/talk/startChart/handle/impl/udp_talk_push_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_push_handler.dart
index fab49041..b7872213 100644
--- a/lib/talk/startChart/handle/impl/udp_talk_push_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_talk_push_handler.dart
@@ -10,7 +10,6 @@ import '../../start_chart_manage.dart';
class UdpTalkPushHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
-
@override
void handleReq(ScpMessage scpMessage) {
// TODO: 收到委托推送请求
@@ -24,13 +23,8 @@ class UdpTalkPushHandler extends ScpMessageBaseHandle
}
@override
- void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
- }
+ void handleInvalidReq(ScpMessage scpMessage) {}
@override
- void handleRealTimeData(ScpMessage scpMessage
- ) {
- // TODO: implement handleRealTimeData
- }
+ void handleRealTimeData(ScpMessage scpMessage) {}
}
diff --git a/lib/talk/startChart/handle/impl/udp_talk_receiver_transfer_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_receiver_transfer_handler.dart
index 5b17a295..6e662383 100644
--- a/lib/talk/startChart/handle/impl/udp_talk_receiver_transfer_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_talk_receiver_transfer_handler.dart
@@ -24,11 +24,11 @@ class UdpTalkReceiverTransferHandler extends ScpMessageBaseHandle
@override
void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
+
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
+
}
}
diff --git a/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart
index b75805e1..3aab2976 100644
--- a/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart
@@ -13,7 +13,6 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle
@override
void handleReq(ScpMessage scpMessage) {
// 收到接听拒绝请求
- print('收到接听拒绝请求');
startChartManage.sendGenericRespSuccessMessage(
ToPeerId: scpMessage.FromPeerId!,
FromPeerId: scpMessage.ToPeerId!,
@@ -23,25 +22,26 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle
startChartManage.stopTalkExpectMessageTimer();
talkStatus.setRejected();
stopRingtone();
+ talkStatus.setEnd();
}
@override
void handleResp(ScpMessage scpMessage) {
- print('收到接听拒绝回复');
// 收到接听拒绝回复
talkStatus.setRejected();
startChartManage.stopTalkPingMessageTimer();
startChartManage.stopTalkExpectMessageTimer();
stopRingtone();
+ talkStatus.setEnd();
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
- // TODO: implement handleInvalidReq
+
}
@override
void handleRealTimeData(ScpMessage scpMessage) {
- // TODO: implement handleRealTimeData
+
}
}
diff --git a/lib/talk/startChart/handle/impl/udp_talk_request_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_request_handler.dart
index a0265cbb..cd6c544c 100644
--- a/lib/talk/startChart/handle/impl/udp_talk_request_handler.dart
+++ b/lib/talk/startChart/handle/impl/udp_talk_request_handler.dart
@@ -30,15 +30,6 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle
// 处理收到接听请求后的事件
_talkRequestEvent(talkObjectName: talkReq.callerName);
- // Future.delayed(Duration(seconds: 1), () {
- // startChartManage.sendTalkAcceptMessage();
- // // startChartManage.sendTalkRejectMessage();
- // });
- //
- // Future.delayed(Duration(seconds: 5), () {
- // startChartManage.sendTalkHangupMessage();
- // // startChartManage.sendTalkRejectMessage();
- // });
}
@override
@@ -46,7 +37,7 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle
// 收到对讲请求回复
final GenericResp genericResp = scpMessage.Payload;
if (genericResp.code == 0) {
- print('发送对讲成功');
+ print('发送对讲成功,已经收到对方的回复');
}
}
diff --git a/lib/talk/startChart/start_chart_manage.dart b/lib/talk/startChart/start_chart_manage.dart
index 59fb805f..0e877805 100644
--- a/lib/talk/startChart/start_chart_manage.dart
+++ b/lib/talk/startChart/start_chart_manage.dart
@@ -204,6 +204,7 @@ class StartChartManage {
// 发送上线消息
Future _sendOnlineMessage() async {
+ _log(text: '发送上线消息');
if (isOnlineStartChartServer) {
_log(text: '星图已上线,请勿重复发送上线消息');
return;
@@ -218,6 +219,10 @@ class StartChartManage {
// 发送对讲请求消息
Future sendCallRequestMessage({required String ToPeerId}) async {
+ if (talkStatus.status == TalkStatus.duringCall) {
+ _log(text: '已经在通话中,请勿重复发送对讲请求');
+ return;
+ }
// 组装上线消息
final message = MessageCommand.talkRequestMessage(
FromPeerId: FromPeerId,
@@ -248,12 +253,13 @@ class StartChartManage {
}
// 发送回声测试消息
- void sendEchoMessage({required String ToPeerId}) async {
+ void sendEchoMessage() async {
final message = MessageCommand.echoMessage(
- ToPeerId: ToPeerId,
+ ToPeerId: echoPeerId,
FromPeerId: FromPeerId,
);
await _sendMessage(message: message);
+ _log(text: '发送回声测试消息');
}
// 发送网关初始化消息
@@ -732,7 +738,6 @@ class StartChartManage {
seconds: talkPingIntervalTime,
),
(Timer timer) async {
- // 重新发送上线消息
await sendTalkPingMessage(
ToPeerId: ToPeerId,
FromPeerId: FromPeerId,
diff --git a/lib/talk/startChart/start_chart_talk_status.dart b/lib/talk/startChart/start_chart_talk_status.dart
index 013eac85..504e6aae 100644
--- a/lib/talk/startChart/start_chart_talk_status.dart
+++ b/lib/talk/startChart/start_chart_talk_status.dart
@@ -4,6 +4,7 @@ import 'package:star_lock/talk/startChart/events/talk_status_change_event.dart';
enum TalkStatus {
waitingAnswer, // 等待接听
+ waitingData, // 等待数据
duringCall, // 通话中
rejected, // 被拒绝
uninitialized, // 未初始化
@@ -106,6 +107,6 @@ class StartChartTalkStatus {
/// 设置状态为结束
void setEnd() {
_setStatus(TalkStatus.end);
- // 可以在这里添加特定于 "error" 状态的逻辑
+ // 可以在这里添加特定于 "end" 状态的逻辑
}
}
diff --git a/pubspec.yaml b/pubspec.yaml
index 3109fdae..e844e3e2 100755
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -298,6 +298,9 @@ flutter:
- images/mine/
- images/lockType/
- assets/
+ - assets/html/h264.html
+ - assets/demo.h264
+ - assets/talk.h264
- lan/
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware