From 5434c89b00d39d9f0d55a63fb33a02c5f10f7fd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Mon, 8 Jan 2024 11:32:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=93=9D=E7=89=99=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE=EF=BC=8C=E4=BF=AE=E5=A4=8Dudp=E5=BC=80=E9=94=81?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/ios/Podfile.lock | 10 ++++++ star_lock/lib/blue/blue_manage.dart | 13 ++++++- .../lcokSet/lockSet/lockSet_logic.dart | 13 ++++--- .../monitoring/lockMonitoring_logic.dart | 4 +-- .../monitoring/lockMonitoring_page.dart | 3 +- .../lockMian/lockMain/lockMain_logic.dart | 36 +++++++++++++++++++ star_lock/lib/mine/about/about_page.dart | 2 +- .../mine/mineSet/mineSet/mineSet_logic.dart | 2 ++ star_lock/lib/talk/call/callTalk.dart | 2 +- star_lock/lib/talk/udp/udp_help.dart | 15 ++++---- star_lock/lib/tools/baseGetXController.dart | 2 +- .../Flutter/GeneratedPluginRegistrant.swift | 2 ++ star_lock/pubspec.yaml | 2 ++ .../flutter/generated_plugin_registrant.cc | 3 ++ .../windows/flutter/generated_plugins.cmake | 1 + 15 files changed, 87 insertions(+), 23 deletions(-) diff --git a/star_lock/ios/Podfile.lock b/star_lock/ios/Podfile.lock index eb3ce1b3..e55abd46 100644 --- a/star_lock/ios/Podfile.lock +++ b/star_lock/ios/Podfile.lock @@ -35,6 +35,9 @@ PODS: - Flutter - camera_avfoundation (0.0.1): - Flutter + - connectivity_plus (0.0.1): + - Flutter + - ReachabilitySwift - device_info_plus (0.0.1): - Flutter - EMASRest (11.1.1.2) @@ -83,6 +86,7 @@ PODS: - permission_handler_apple (9.1.1): - Flutter - Protobuf (3.25.1) + - ReachabilitySwift (5.0.0) - reactive_ble_mobile (0.0.1): - Flutter - Protobuf (~> 3.5) @@ -112,6 +116,7 @@ DEPENDENCIES: - audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`) - auto_orientation (from `.symlinks/plugins/auto_orientation/ios`) - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) + - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - Flutter (from `Flutter`) - flutter_native_contact_picker (from `.symlinks/plugins/flutter_native_contact_picker/ios`) @@ -152,6 +157,7 @@ SPEC REPOS: - GoogleMaps - ios-voice-processor - Protobuf + - ReachabilitySwift - SwiftProtobuf - Toast @@ -172,6 +178,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/auto_orientation/ios" camera_avfoundation: :path: ".symlinks/plugins/camera_avfoundation/ios" + connectivity_plus: + :path: ".symlinks/plugins/connectivity_plus/ios" device_info_plus: :path: ".symlinks/plugins/device_info_plus/ios" Flutter: @@ -234,6 +242,7 @@ SPEC CHECKSUMS: audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40 auto_orientation: 102ed811a5938d52c86520ddd7ecd3a126b5d39d camera_avfoundation: 3125e8cd1a4387f6f31c6c63abb8a55892a9eeeb + connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed EMASRest: 8df6f87836767a9415ad5cc4af739bc9d215b475 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 @@ -256,6 +265,7 @@ SPEC CHECKSUMS: path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 Protobuf: d94761c33f1239c0a43a0817ca1a5f7f7c900241 + ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 reactive_ble_mobile: 9ce6723d37ccf701dbffd202d487f23f5de03b4c shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a diff --git a/star_lock/lib/blue/blue_manage.dart b/star_lock/lib/blue/blue_manage.dart index a981e995..bf620b7b 100644 --- a/star_lock/lib/blue/blue_manage.dart +++ b/star_lock/lib/blue/blue_manage.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; +import 'package:get/get.dart'; import 'io_tool/io_model.dart'; import 'io_tool/io_tool.dart'; @@ -120,7 +121,7 @@ class BlueManage { // 不存在的时候返回-1 然后循环5秒 var index = 0; Completer? completer = Completer(); - Timer.periodic(const Duration(milliseconds: 1000), (timer) { + Timer.periodic(const Duration(seconds: 1), (timer) { ///定时任务 // print("timer index0:$index"); if(index >= 9){ @@ -135,6 +136,7 @@ class BlueManage { }else{ // 每秒判断数组列表里面是否有这个设备 final knownDeviceIndex = scanDevices.indexWhere((d) => d.name == deviceName); + if (knownDeviceIndex >= 0) { // 存在的时候销毁定时器,赋值 completer.complete(); @@ -142,6 +144,15 @@ class BlueManage { timer.cancel(); // print("timer index2:$index"); connectDeviceMacAddress = scanDevices[knownDeviceIndex].id; + + // var uuidStr = (scanDevices[knownDeviceIndex].serviceUuids.isNotEmpty ? scanDevices[knownDeviceIndex].serviceUuids[0] : "").toString(); + // if(uuidStr[31] == "0"){ + // // 未配对 表示这把锁已被强制初始化 处于可添加状态 不再连接 + // EasyLoading.showToast("当前设备已被清除配对,请删除后重新添加", duration: 2000.milliseconds); + // Future.delayed(2100.milliseconds); + // connectStateCallBack(DeviceConnectionState.disconnected); + // return; + // } } else { // 不存在的时候返回-1 然后循环5秒 index++; diff --git a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart b/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart index 66810a5a..59498f9a 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/lockSet/lockSet_logic.dart @@ -502,7 +502,7 @@ class LockSetLogic extends BaseGetXController { Get.back(); if(BlueManage().deviceConnectionState == DeviceConnectionState.connected){ - // 已连接 + // 如果是已连接状态 直接调用协议 // 已配对 表示这把锁未被初始化,还处于被添加状态 if (state.lockSetInfoData.value.lockBasicInfo!.isLockOwner == 1) { // 如果是锁拥有者直接删除锁,调用初始化协议 @@ -514,9 +514,8 @@ class LockSetLogic extends BaseGetXController { return; } - // 当前设备是否已经扫描到了 if (state.currentDeviceUUid.value.isNotEmpty) { - // 已经扫描到了 停止扫描,直接删除锁 + // 已经扫描到了当前设备 停止扫描,直接删除锁 BlueManage().stopScan(); deletLockLogic(); } else { @@ -524,9 +523,8 @@ class LockSetLogic extends BaseGetXController { var index = 0; showEasyLoading(); state.deletWaitScanCompleter = Completer(); - state.deletWaitScanTimer = Timer.periodic(const Duration(milliseconds: 1000), (timer) { - ///定时任务 - // print("timer index0:$index"); + state.deletWaitScanTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + //定时任务 if(index >= 5){ // 当超过10秒的时候还是没有搜索到,完成任务,关闭扫描,取消定时器,弹窗提示 if(state.deletWaitScanTimer != null){ @@ -550,11 +548,12 @@ class LockSetLogic extends BaseGetXController { } BlueManage().stopScan(); dismissEasyLoading(); + deletLockLogic(); } else { // 不存在的时候返回-1 然后循环5秒 index++; - print("index:$index"); + // print("index:$index"); } } }); diff --git a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart index e14baf60..bbc832b8 100644 --- a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart +++ b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart @@ -101,7 +101,7 @@ class LockMonitoringLogic extends BaseGetXController { } /// 开门 - udpOpenDoorAction() async { + udpOpenDoorAction(List list) async { UDPSenderManage.sendMainProtocol( command: 150, commandTypeIsCalling: 1, @@ -110,7 +110,7 @@ class LockMonitoringLogic extends BaseGetXController { lockIP: UDPManage().host, userMobile: await state.userMobile, userMobileIP: await state.userMobileIP, - endData: []); + endData: list); Get.back(); } diff --git a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart index a75674bd..49c48337 100644 --- a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart +++ b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart @@ -274,8 +274,9 @@ class _LockMonitoringPageState extends State { return; } + List numbers = state.passwordTF.text.split('').map((char) => int.parse(char)).toList(); // 开锁 - logic.udpOpenDoorAction(); + logic.udpOpenDoorAction(numbers); }, cancelClick: () { Get.back(); diff --git a/star_lock/lib/main/lockMian/lockMain/lockMain_logic.dart b/star_lock/lib/main/lockMian/lockMain/lockMain_logic.dart index ba93459d..f3881d4f 100644 --- a/star_lock/lib/main/lockMian/lockMain/lockMain_logic.dart +++ b/star_lock/lib/main/lockMian/lockMain/lockMain_logic.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:typed_data'; +import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:get/get.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:star_lock/talk/udp/udp_senderManage.dart'; @@ -109,6 +110,36 @@ class LockMainLogic extends BaseGetXController { }); } + /// 获取联网类型 + void getConnectType() async { + var connectResult = await (Connectivity().checkConnectivity()); + + if (connectResult == ConnectivityResult.mobile) { + // _netType = "4G"; + print("4G 4G 4G 4G 4G"); + } else if (connectResult == ConnectivityResult.wifi) { + // _netType = "wifi"; + print("wifi wifi wifi wifi wifi"); + } else { + // _netType = "未连接"; + print("未连接 未连接 未连接 未连接 未连接"); + } + + } + + /// 判断网络是否连接 + Future isConnected() async { + var connectResult = await (Connectivity().checkConnectivity()); + return connectResult != ConnectivityResult.none; + } + + /// 设置网络切换监听 + connectListener() async { + Connectivity().onConnectivityChanged.listen((ConnectivityResult result) { + print("设置网络切换监听:$result"); + }); + } + @override void onReady() { // TODO: implement onReady @@ -128,6 +159,11 @@ class LockMainLogic extends BaseGetXController { print("onInit()"); // getLockInfo(); + // 设置网络变化监听 + // connectListener(); + // 获取网络连接状态 + // getConnectType(); + getStarLockInfo(); } diff --git a/star_lock/lib/mine/about/about_page.dart b/star_lock/lib/mine/about/about_page.dart index 50c7bc18..1541e3b0 100644 --- a/star_lock/lib/mine/about/about_page.dart +++ b/star_lock/lib/mine/about/about_page.dart @@ -38,7 +38,7 @@ class _AbountPageState extends State { ), SizedBox(height: 20.h), Text( - "星锁 1.0.0.03(preRelease-20231216)", + "星锁 1.0.0.03(preRelease-20240108)", style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor), ), SizedBox( diff --git a/star_lock/lib/mine/mineSet/mineSet/mineSet_logic.dart b/star_lock/lib/mine/mineSet/mineSet/mineSet_logic.dart index 1b474dfd..50576c6c 100644 --- a/star_lock/lib/mine/mineSet/mineSet/mineSet_logic.dart +++ b/star_lock/lib/mine/mineSet/mineSet/mineSet_logic.dart @@ -8,6 +8,7 @@ import 'package:star_lock/tools/storage.dart'; import '../../../../network/api_repository.dart'; import '../../../../tools/baseGetXController.dart'; import '../../../blue/blue_manage.dart'; +import '../../../talk/udp/udp_help.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/toast.dart'; @@ -52,6 +53,7 @@ class MineSetLogic extends BaseGetXController { Future userLogoutRequest() async { LoginEntity entity = await ApiRepository.to.userLogout(); if (entity.errorCode!.codeIsSuccessful) { + UdpHelp().closeUDP(); logOut(); // BlueManage().stopScan(); BlueManage().disconnect(BlueManage().connectDeviceMacAddress); diff --git a/star_lock/lib/talk/call/callTalk.dart b/star_lock/lib/talk/call/callTalk.dart index 9316a486..462afefc 100644 --- a/star_lock/lib/talk/call/callTalk.dart +++ b/star_lock/lib/talk/call/callTalk.dart @@ -153,7 +153,7 @@ class CallTalk { //停止接收音频数据 void stopPcmSound() { - FlutterPcmSound.setup(sampleRate: 8000, channelCount: 1); + // FlutterPcmSound.setup(sampleRate: 8000, channelCount: 1); FlutterPcmSound.pause(); FlutterPcmSound.clear(); FlutterPcmSound.stop(); diff --git a/star_lock/lib/talk/udp/udp_help.dart b/star_lock/lib/talk/udp/udp_help.dart index 63259acb..e7bee774 100644 --- a/star_lock/lib/talk/udp/udp_help.dart +++ b/star_lock/lib/talk/udp/udp_help.dart @@ -9,7 +9,7 @@ import 'udp_manage.dart'; import 'udp_senderManage.dart'; class UdpHelp { - Timer? timer; + Timer? udpHeartTimer; openUDP() async { // 从服务器获取ip跟端口 @@ -42,7 +42,7 @@ class UdpHelp { } var mobile = await Storage.getMobile(); - timer = Timer.periodic(1.seconds, (timer) async { + udpHeartTimer = Timer.periodic(1.seconds, (timer) async { UDPSenderManage.sendHeart( userName: mobile, ipList: serversList, @@ -52,15 +52,12 @@ class UdpHelp { } } - // Future getWifiLockServiceIpAndPort() async { - // var entity = await ApiRepository.to.getWifiLockServiceIpAndPort(); - // if(entity.errorCode! == 0){ - // - // } - // } + void closeUDP() { + udpHeartTimer!.cancel(); + } dispose() { - timer!.cancel(); + udpHeartTimer!.cancel(); } } diff --git a/star_lock/lib/tools/baseGetXController.dart b/star_lock/lib/tools/baseGetXController.dart index 6bbfba80..5875ece1 100644 --- a/star_lock/lib/tools/baseGetXController.dart +++ b/star_lock/lib/tools/baseGetXController.dart @@ -58,7 +58,7 @@ class BaseGetXController extends GetxController{ _timer!.cancel(); _timer = null; } - _timer = Timer.periodic(10.seconds, (timer) { + _timer = Timer.periodic(15.seconds, (timer) { if(action != null) { action(); } diff --git a/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift b/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift index 64299ab3..84d8c391 100644 --- a/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift @@ -8,6 +8,7 @@ import Foundation import aj_captcha_flutter import audio_session import audioplayers_darwin +import connectivity_plus import device_info_plus import file_selector_macos import flutter_pcm_sound @@ -23,6 +24,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AjCaptchaFlutterPlugin.register(with: registry.registrar(forPlugin: "AjCaptchaFlutterPlugin")) AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) + ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FlutterPcmSoundPlugin.register(with: registry.registrar(forPlugin: "FlutterPcmSoundPlugin")) diff --git a/star_lock/pubspec.yaml b/star_lock/pubspec.yaml index 55ce37d5..3d0aaea4 100644 --- a/star_lock/pubspec.yaml +++ b/star_lock/pubspec.yaml @@ -132,6 +132,8 @@ dependencies: # flutter_audio_capture: <1.1.5 flutter_voice_processor: ^1.1.0 + #监听网络连接状态 + connectivity_plus: ^5.0.2 dev_dependencies: flutter_test: sdk: flutter diff --git a/star_lock/windows/flutter/generated_plugin_registrant.cc b/star_lock/windows/flutter/generated_plugin_registrant.cc index c3bf33a2..6d6e78c3 100644 --- a/star_lock/windows/flutter/generated_plugin_registrant.cc +++ b/star_lock/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -17,6 +18,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("AjCaptchaFlutterPluginCApi")); AudioplayersWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin")); + ConnectivityPlusWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); PermissionHandlerWindowsPluginRegisterWithRegistrar( diff --git a/star_lock/windows/flutter/generated_plugins.cmake b/star_lock/windows/flutter/generated_plugins.cmake index f7d39f56..9dd314b5 100644 --- a/star_lock/windows/flutter/generated_plugins.cmake +++ b/star_lock/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST aj_captcha_flutter audioplayers_windows + connectivity_plus file_selector_windows permission_handler_windows url_launcher_windows