Merge remote-tracking branch 'origin/develop_liyi' into develop_liyi

This commit is contained in:
liyi 2024-12-17 16:52:11 +08:00
commit f421f59325
10 changed files with 38 additions and 21 deletions

Binary file not shown.

View File

@ -235,12 +235,6 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
} }
} }
: null)), : null)),
SubmitBtn(
btnName: '跳转至通话',
onClick: () {
Get.toNamed(Routers.lockMonitoringPage);
},
),
SizedBox(height: 50.w), SizedBox(height: 50.w),
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,

View File

@ -16,18 +16,22 @@ class UdpHeartBeatHandler extends ScpMessageBaseHandle
@override @override
void handleResp(ScpMessage scpMessage) { void handleResp(ScpMessage scpMessage) {
// TODO:
final HeartbeatResponse heartbeatResponse = scpMessage.Payload; final HeartbeatResponse heartbeatResponse = scpMessage.Payload;
final statusCode = heartbeatResponse.statusCode; final statusCode = heartbeatResponse.statusCode;
if (statusCode != null && if (statusCode != null &&
statusCode != PayloadTypeConstant.heartHeatSuccessResponse) { statusCode != PayloadTypeConstant.heartHeatSuccessResponse) {
// 线 //
startChartManage.stopHeartbeat();
// 线
startChartManage.isOnlineStartChartServer = false;
startChartManage.reStartOnlineStartChartServer(); startChartManage.reStartOnlineStartChartServer();
} else {
//
startChartManage.heartbeatIntervalTime =
heartbeatResponse.nextPingTime ?? 1;
//
startChartManage.reStartHeartBeat();
} }
startChartManage.heartbeatIntervalTime =
heartbeatResponse.nextPingTime ?? 1;
//
startChartManage.reStartHeartBeat();
} }
@override @override

View File

@ -28,6 +28,7 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
if (checkGenericRespSuccess(genericResp)) { if (checkGenericRespSuccess(genericResp)) {
// //
_handleStartTalkPing(); _handleStartTalkPing();
// 2
Future.delayed(Duration(seconds: 2), () { Future.delayed(Duration(seconds: 2), () {
// //
_handleStartSendTalkExpectDataRequest(); _handleStartSendTalkExpectDataRequest();
@ -37,6 +38,7 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
// //
stopRingtone(); stopRingtone();
// //
talkStatus.setAnsweredSuccessfully();
talkStatus.setDuringCall(); talkStatus.setDuringCall();
} }
} }

View File

@ -51,12 +51,14 @@ class UdpTalkDataHandler extends ScpMessageBaseHandle
} }
} }
/// h264协议的数据
void _handleVideoH264(TalkData talkData) { void _handleVideoH264(TalkData talkData) {
final List<int> content = talkData.content; talkDataRepository.addTalkData(talkData);
talkDataRepository.addTalkData(content);
} }
///
void _handleVideoImage(TalkData talkData) {} void _handleVideoImage(TalkData talkData) {}
/// g711音频数据
void _handleVideoG711(TalkData talkData) {} void _handleVideoG711(TalkData talkData) {}
} }

View File

@ -22,6 +22,7 @@ class UdpTalkHangUpHandler extends ScpMessageBaseHandle
// //
startChartManage.stopTalkPingMessageTimer(); startChartManage.stopTalkPingMessageTimer();
startChartManage.stopTalkExpectMessageTimer(); startChartManage.stopTalkExpectMessageTimer();
talkStatus.setHangingUpDuring();
talkStatus.setEnd(); talkStatus.setEnd();
stopRingtone(); stopRingtone();
} }
@ -32,6 +33,7 @@ class UdpTalkHangUpHandler extends ScpMessageBaseHandle
// //
startChartManage.stopTalkPingMessageTimer(); startChartManage.stopTalkPingMessageTimer();
startChartManage.stopTalkExpectMessageTimer(); startChartManage.stopTalkExpectMessageTimer();
talkStatus.setHangingUpDuring();
talkStatus.setEnd(); talkStatus.setEnd();
stopRingtone(); stopRingtone();
} }

View File

@ -13,13 +13,13 @@ class TalkDataRepository {
static TalkDataRepository get instance => _instance; static TalkDataRepository get instance => _instance;
// StreamController // StreamController
final StreamController<List<int>> _talkDataStreamController = StreamController<List<int>>.broadcast(); final StreamController<TalkData> _talkDataStreamController = StreamController<TalkData>.broadcast();
// Stream // Stream
Stream<List<int>> get talkDataStream => _talkDataStreamController.stream; Stream<TalkData> get talkDataStream => _talkDataStreamController.stream;
// TalkData Stream // TalkData Stream
void addTalkData(List<int> talkData) { void addTalkData(TalkData talkData) {
_talkDataStreamController.add(talkData); _talkDataStreamController.add(talkData);
} }

View File

@ -4,8 +4,10 @@ import 'package:star_lock/talk/startChart/events/talk_status_change_event.dart';
enum TalkStatus { enum TalkStatus {
waitingAnswer, // waitingAnswer, //
answeredSuccessfully, //
waitingData, // waitingData, //
duringCall, // duringCall, //
hangingUpDuring, //
rejected, // rejected, //
uninitialized, // uninitialized, //
initializationCompleted, // initializationCompleted, //
@ -104,6 +106,16 @@ class StartChartTalkStatus {
// "error" // "error"
} }
///
void setHangingUpDuring() {
_setStatus(TalkStatus.hangingUpDuring);
// "hangingUpDuring"
} ///
void setAnsweredSuccessfully() {
_setStatus(TalkStatus.answeredSuccessfully);
// "hangingUpDuring"
}
/// ///
void setEnd() { void setEnd() {
_setStatus(TalkStatus.end); _setStatus(TalkStatus.end);

View File

@ -5,6 +5,7 @@ import 'package:flutter/services.dart' show ByteData, Uint8List, rootBundle;
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/talk/startChart/handle/other/talk_data_repository.dart'; import 'package:star_lock/talk/startChart/handle/other/talk_data_repository.dart';
import 'package:star_lock/talk/startChart/proto/talk_data.pbserver.dart';
import 'package:star_lock/tools/titleAppBar.dart'; import 'package:star_lock/tools/titleAppBar.dart';
import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter/webview_flutter.dart';
@ -70,15 +71,16 @@ class _H264WebViewState extends State<H264WebView> {
current++; current++;
List<int> frameData = byteData.sublist(start, end); List<int> frameData = byteData.sublist(start, end);
if (frameData.length == 0) timer.cancel(); if (frameData.length == 0) timer.cancel();
talkDataRepository.addTalkData(frameData);
talkDataRepository.addTalkData(TalkData(contentType: TalkData_ContentTypeE.H264,content: frameData));
start = end; start = end;
}); });
} }
void _sendFramesToHtml() async { void _sendFramesToHtml() async {
// //
talkDataRepository.talkDataStream.listen((event) async { talkDataRepository.talkDataStream.listen((TalkData event) async {
_buffer.addAll(event); _buffer.addAll(event.content);
}); });
// 800ms的数据 // 800ms的数据
_sendTimer ??= Timer.periodic( _sendTimer ??= Timer.periodic(

View File

@ -299,7 +299,6 @@ flutter:
- images/lockType/ - images/lockType/
- assets/ - assets/
- assets/html/h264.html - assets/html/h264.html
- assets/talk.h264
- lan/ - lan/
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware # https://flutter.dev/assets-and-images/#resolution-aware