From 20c3b50efc96c80f87bbada612e7519a90cb6645 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Thu, 6 Feb 2025 13:57:18 +0800 Subject: [PATCH 01/54] =?UTF-8?q?ci:=20=E4=BF=AE=E5=A4=8Dxhj=20apkbundle?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0release=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 868db348..eeb98d56 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -151,8 +151,8 @@ create-release: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/StarLock-${StarLock_VERSION}-*" - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj-release-${CI_COMMIT_TAG}.apk "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj-release-${CI_COMMIT_TAG}.apk"' - - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj-release-${CI_COMMIT_TAG}.aab - "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj-release-${CI_COMMIT_TAG}.aab"' + - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj_bundle-release-${CI_COMMIT_TAG}.aab + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj_bundle-release-${CI_COMMIT_TAG}.aab"' - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.apk "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-sky-release-${CI_COMMIT_TAG}.apk"' - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.aab From e32b2191f37e2bb66941c130c4cb5c83adb32fa3 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Thu, 6 Mar 2025 15:43:50 +0800 Subject: [PATCH 02/54] build trigger From 12dcd5984a9ddd136ec5aa00c3ca3775783231f8 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Tue, 11 Mar 2025 14:47:38 +0800 Subject: [PATCH 03/54] =?UTF-8?q?fix=EF=BC=9A=20=E9=94=81=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=90=8C=E6=AD=A5=E6=97=B6=EF=BC=8C=E5=8D=95=E6=9D=A1?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E8=A7=A3=E6=9E=90=E5=A4=B1=E8=B4=A5=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E8=B7=B3=E8=BF=87=EF=BC=8C=E7=BB=A7=E7=BB=AD=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E5=90=8E=E7=BB=AD=E8=AE=B0=E5=BD=95=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E9=87=8D=E7=BD=AE=E6=97=B6=E9=97=B4=E7=BA=BF.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../doorLockLog/doorLockLog_logic.dart | 52 ++++++++++-------- .../lockDetail/lockDetail_logic.dart | 55 ++++++++++--------- 2 files changed, 59 insertions(+), 48 deletions(-) diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart index 4eb5137a..052ac7e8 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:get/get.dart'; import 'package:star_lock/apm/apm_helper.dart'; +import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_state.dart'; @@ -68,34 +69,38 @@ class DoorLockLogLogic extends BaseGetXController { final List uploadList = []; for (int i = 0; i < getList.length; i++) { final List indexList = getList[i]; - // AppLog.log("indexList:$indexList"); - final Map indexMap = {}; - indexMap['type'] = indexList[0].toString(); + try { + // AppLog.log("indexList:$indexList"); + final Map indexMap = {}; + indexMap['type'] = indexList[0].toString(); - final int userNo = (indexList[1] * 256) + indexList[2]; - indexMap['user'] = userNo.toString(); - // AppLog.log('userNouserNouserNouserNo:$userNo'); + final int userNo = (indexList[1] * 256) + indexList[2]; + indexMap['user'] = userNo.toString(); + // AppLog.log('userNouserNouserNouserNo:$userNo'); - final List passwordData = indexList.sublist(7, 17); - final String password = utf8String(passwordData); - indexMap['password'] = password.toString(); - // AppLog.log('passwordpasswordpassword:$password'); + final List passwordData = indexList.sublist(7, 17); + final String password = utf8String(passwordData); + indexMap['password'] = password.toString(); + // AppLog.log('passwordpasswordpassword:$password'); - indexMap['success'] = '1'; + indexMap['success'] = '1'; - final int time = (0xff & indexList[3]) << 24 | - (0xff & indexList[4]) << 16 | - (0xff & indexList[5]) << 8 | - (0xFF & indexList[6]); - final int operateDate = time * 1000; - final int serverTime = state.currentDate; - if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter( - DateTime.fromMillisecondsSinceEpoch(serverTime * 1000))) { - // AppLog.log('operateDate:$operateDate state.currentDate:${state.currentDate}'); - continue; + final int time = (0xff & indexList[3]) << 24 | + (0xff & indexList[4]) << 16 | + (0xff & indexList[5]) << 8 | + (0xFF & indexList[6]); + final int operateDate = time * 1000; + final int serverTime = state.currentDate; + if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter( + DateTime.fromMillisecondsSinceEpoch(serverTime * 1000))) { + // AppLog.log('operateDate:$operateDate state.currentDate:${state.currentDate}'); + continue; + } + indexMap['date'] = '$operateDate'; + uploadList.add(indexMap); + } catch (e) { + AppLog.log('操作记录:$indexList,解析失败,跳过该跳记录,进行下一条记录解析。'); } - indexMap['date'] = '$operateDate'; - uploadList.add(indexMap); } if (dataLength == state.logCountPage) { state.ifHaveNext = true; @@ -246,6 +251,7 @@ class DoorLockLogLogic extends BaseGetXController { /// 刷新门锁日志列表 StreamSubscription? _getDoorLockLogListRefreshUIEvent; + void _getDoorLockLogListRefreshUIAction() { _getDoorLockLogListRefreshUIEvent = eventBus .on() diff --git a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart index 5cef5acf..9a9bb1e3 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart @@ -296,38 +296,43 @@ class LockDetailLogic extends BaseGetXController { final List uploadList = []; for (int i = 0; i < getList.length; i++) { final List indexList = getList[i]; - AppLog.log('indexList:$indexList'); - final Map indexMap = {}; - indexMap['type'] = indexList[0].toString(); + try { + AppLog.log('indexList:$indexList'); + final Map indexMap = {}; + indexMap['type'] = indexList[0].toString(); - final int userNo = (indexList[1] * 256) + indexList[2]; - indexMap['user'] = userNo.toString(); - // AppLog.log('userNouserNouserNouserNo:$userNo'); + final int userNo = (indexList[1] * 256) + indexList[2]; + indexMap['user'] = userNo.toString(); + // AppLog.log('userNouserNouserNouserNo:$userNo'); - final List passwordData = indexList.sublist(7, 17); - final String password = utf8String(passwordData); - indexMap['password'] = password.toString(); - // AppLog.log('passwordpasswordpassword:$password'); + final List passwordData = indexList.sublist(7, 17); + final String password = utf8String(passwordData); + indexMap['password'] = password.toString(); + // AppLog.log('passwordpasswordpassword:$password'); - indexMap['success'] = '1'; + indexMap['success'] = '1'; - final int time = (0xff & indexList[3]) << 24 | - (0xff & indexList[4]) << 16 | - (0xff & indexList[5]) << 8 | - (0xFF & indexList[6]); - int operateDate = time * 1000; - if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter( - DateTime.fromMillisecondsSinceEpoch(getUTCNetTime() * 1000))) { - continue; - } + final int time = (0xff & indexList[3]) << 24 | + (0xff & indexList[4]) << 16 | + (0xff & indexList[5]) << 8 | + (0xFF & indexList[6]); + int operateDate = time * 1000; + if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter( + DateTime.fromMillisecondsSinceEpoch( + getUTCNetTime() * 1000))) { + continue; + } - indexMap['date'] = '$operateDate'; - uploadList.add(indexMap); + indexMap['date'] = '$operateDate'; + uploadList.add(indexMap); - if (i == getList.length - 1) { - //设置最后的时间戳 + if (i == getList.length - 1) { + //设置最后的时间戳 - state.operateDate = operateDate; + state.operateDate = operateDate; + } + } catch (e) { + AppLog.log('操作记录:$indexList,解析失败,跳过该跳记录,进行下一条记录解析。'); } } lockRecordUploadData(uploadList); From 9972b5ddeb245f048e03f748dc684683f028e90b Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 11 Mar 2025 15:47:31 +0800 Subject: [PATCH 04/54] =?UTF-8?q?feat:=E4=BF=AE=E5=A4=8D=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E9=80=89=E6=8B=A9=E5=9B=BD=E5=AE=B6=E6=97=B6?= =?UTF-8?q?=E4=B8=8D=E8=87=AA=E5=8A=A8=E8=BF=9B=E8=A1=8C=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/login/login/starLock_login_page.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/login/login/starLock_login_page.dart b/lib/login/login/starLock_login_page.dart index 0c39c91a..351125c0 100755 --- a/lib/login/login/starLock_login_page.dart +++ b/lib/login/login/starLock_login_page.dart @@ -108,7 +108,7 @@ class _StarLockLoginPageState extends State { if (result != null) { result as Map; state.countryCode.value = result['code']; - state.countryKey = result['countryName']; + state.countryKey.value = result['countryName']; logic.checkIpAction(); } }, From 1548934d34520def34fee6be21fd756d6b0bc554 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 11 Mar 2025 15:48:08 +0800 Subject: [PATCH 05/54] =?UTF-8?q?feat:=E4=BC=98=E5=8C=96=E6=9F=A5=E6=89=BE?= =?UTF-8?q?=E5=B8=A7=E5=87=BD=E6=95=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handle/impl/udp_talk_data_handler.dart | 73 +++++++++++++------ 1 file changed, 49 insertions(+), 24 deletions(-) diff --git a/lib/talk/starChart/handle/impl/udp_talk_data_handler.dart b/lib/talk/starChart/handle/impl/udp_talk_data_handler.dart index ac3e8a2f..35412daf 100644 --- a/lib/talk/starChart/handle/impl/udp_talk_data_handler.dart +++ b/lib/talk/starChart/handle/impl/udp_talk_data_handler.dart @@ -189,40 +189,65 @@ class UdpTalkDataHandler extends ScpMessageBaseHandle } Future> _processCompletePayload(Uint8List payload) async { - // 存储找到的所有完整帧 List frames = []; + int startIdx = -1; + final length = payload.length - 1; - // 手动遍历 payload - int i = 0; - while (i < payload.length - 1) { - // 寻找起始标志 0xFFD8 - if (payload[i] == 0xFF && payload[i + 1] == 0xD8) { - int startIdx = i; - i += 2; // 跳过起始标志 + for (int i = 0; i < length; i++) { + final currentByte = payload[i]; + final nextByte = payload[i + 1]; - // 寻找结束标志 0xFFD9 - while (i < payload.length - 1) { - if (payload[i] == 0xFF && payload[i + 1] == 0xD9) { - // 找到结束标志 0xFFD9 - int endIdx = i + 2; - // 使用 Uint8List.view 创建视图,避免内存分配 - frames.add( - Uint8List.view(payload.buffer, startIdx, endIdx - startIdx)); - i = endIdx; // 继续寻找下一个帧 - break; - } else { - i += 1; // 继续寻找结束标志 - } + if (currentByte == 0xFF) { + if (nextByte == 0xD8) { + startIdx = i; + i++; // Skip the next byte + } else if (nextByte == 0xD9 && startIdx != -1) { + frames + .add(Uint8List.view(payload.buffer, startIdx, i + 2 - startIdx)); + startIdx = -1; + i++; // Skip the next byte } - } else { - i += 1; // 继续寻找起始标志 } } - // 返回找到的所有完整帧 return frames; } +// Future> _processCompletePayload(Uint8List payload) async { +// // 存储找到的所有完整帧 +// List frames = []; +// +// // 手动遍历 payload +// int i = 0; +// while (i < payload.length - 1) { +// // 寻找起始标志 0xFFD8 +// if (payload[i] == 0xFF && payload[i + 1] == 0xD8) { +// int startIdx = i; +// i += 2; // 跳过起始标志 +// +// // 寻找结束标志 0xFFD9 +// while (i < payload.length - 1) { +// if (payload[i] == 0xFF && payload[i + 1] == 0xD9) { +// // 找到结束标志 0xFFD9 +// int endIdx = i + 2; +// // 使用 Uint8List.view 创建视图,避免内存分配 +// frames.add( +// Uint8List.view(payload.buffer, startIdx, endIdx - startIdx)); +// i = endIdx; // 继续寻找下一个帧 +// break; +// } else { +// i += 1; // 继续寻找结束标志 +// } +// } +// } else { +// i += 1; // 继续寻找起始标志 +// } +// } +// +// // 返回找到的所有完整帧 +// return frames; +// } + // Future> _processCompletePayload(Uint8List payload) async { // // 存储找到的所有完整帧 // List frames = []; From ec3990b0af7f7155a735c2d8bc37b048c2994982 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 11 Mar 2025 15:49:01 +0800 Subject: [PATCH 06/54] =?UTF-8?q?feat:=E4=BF=AE=E5=A4=8D=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=97=B6await=20DeviceInfoPlugin().androidIn?= =?UTF-8?q?fo;=E5=87=BA=E7=8E=B0=E7=9A=84=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/widget/permission/permission_dialog.dart | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/widget/permission/permission_dialog.dart b/lib/widget/permission/permission_dialog.dart index 998eab8c..23d9a6cc 100755 --- a/lib/widget/permission/permission_dialog.dart +++ b/lib/widget/permission/permission_dialog.dart @@ -213,10 +213,15 @@ class PermissionDialog { if (Get.context == null) { return false; } - final AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo; - final bool isAndroid33 = - AppPlatform.isAndroid && androidInfo.version.sdkInt >= 33; - + bool isAndroid33 = false; + try { + final AndroidDeviceInfo androidInfo = + await DeviceInfoPlugin().androidInfo; + isAndroid33 = AppPlatform.isAndroid && androidInfo.version.sdkInt >= 33; + } catch (e) { + // 如果获取设备信息失败,默认使用旧版本权限申请方式 + isAndroid33 = false; + } //通用的局部函数 List requestPermission() { List permissions; From bae56ad094aa7586e2b42311da60ff43a9c76e10 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 11 Mar 2025 15:50:50 +0800 Subject: [PATCH 07/54] =?UTF-8?q?feat:=E6=81=A2=E5=A4=8D=E9=94=81=E6=A0=A1?= =?UTF-8?q?=E5=87=86=E6=97=B6=E9=97=B4=E8=87=B3=E5=8E=9F=E6=9C=89=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart b/lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart index 6396bee5..6e2fdf36 100755 --- a/lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart +++ b/lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart @@ -86,11 +86,9 @@ class LockTimeLogic extends BaseGetXController { switch (status) { case 0x00: //成功 - // final String dataEime = - // DateTool().dateToYMDHNString('${state.serverTime}'); + final String dataEime = + DateTool().dateToYMDHNString('${state.serverTime}'); - final String dataEime = DateTool().dateToYMDHNString( - '${DateTime.now().millisecondsSinceEpoch ~/ 1000}'); state.dateTime.value = dataEime; state.sureBtnState.value = 0; From 5b84cfdffd80bfd535f4c17111b420a22563b203 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 11 Mar 2025 15:51:44 +0800 Subject: [PATCH 08/54] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lan/lan_ar.json | 11 ++++++++++- lan/lan_bg.json | 11 ++++++++++- lan/lan_bn.json | 19 ++++++++++++++----- lan/lan_cs.json | 11 ++++++++++- lan/lan_da.json | 11 ++++++++++- lan/lan_de.json | 11 ++++++++++- lan/lan_el.json | 11 ++++++++++- lan/lan_en.json | 7 +++++++ lan/lan_es.json | 11 ++++++++++- lan/lan_et.json | 11 ++++++++++- lan/lan_fi.json | 11 ++++++++++- lan/lan_fr.json | 11 ++++++++++- lan/lan_he.json | 11 ++++++++++- lan/lan_hi.json | 11 ++++++++++- lan/lan_hk.json | 11 ++++++++++- lan/lan_hr.json | 11 ++++++++++- lan/lan_hu.json | 11 ++++++++++- lan/lan_id.json | 11 ++++++++++- lan/lan_it.json | 11 ++++++++++- lan/lan_ja.json | 11 ++++++++++- lan/lan_keys.json | 10 ++++++++++ lan/lan_kk.json | 11 ++++++++++- lan/lan_ko.json | 11 ++++++++++- lan/lan_lt.json | 11 ++++++++++- lan/lan_ms.json | 11 ++++++++++- lan/lan_nl.json | 11 ++++++++++- lan/lan_pl.json | 11 ++++++++++- lan/lan_pt.json | 11 ++++++++++- lan/lan_ro.json | 11 ++++++++++- lan/lan_ru.json | 11 ++++++++++- lan/lan_sk.json | 11 ++++++++++- lan/lan_sr_cyrl.json | 11 ++++++++++- lan/lan_sv.json | 11 ++++++++++- lan/lan_th.json | 11 ++++++++++- lan/lan_tr.json | 11 ++++++++++- lan/lan_tw.json | 11 ++++++++++- lan/lan_uk.json | 11 ++++++++++- lan/lan_ur.json | 11 ++++++++++- lan/lan_vi.json | 11 ++++++++++- lan/lan_zh.json | 10 ++++++++++ 40 files changed, 401 insertions(+), 41 deletions(-) diff --git a/lan/lan_ar.json b/lan/lan_ar.json index 938e2aa1..fc977f2f 100644 --- a/lan/lan_ar.json +++ b/lan/lan_ar.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "وظيفة الفتح عن بعد لهذا القفل غير ممكنة", "下载完成,请到相册查看": "اكتملت عملية التحميل، الرجاء الذهاب إلى الألبوم لمشاهدته", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "عند ضبط عين على وضع توفير الطاقة لا يمكن إجراء المراقبة يرجى الانتقال إلى الأوضاع الأخرى في إعدادات", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "لا يمكن فتح القفل عن بعد عند ضبط عين على وضع توفير الطاقة يرجى الانتقال إلى وضع آخر في إعدادات عين القطة" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "لا يمكن فتح القفل عن بعد عند ضبط عين على وضع توفير الطاقة يرجى الانتقال إلى وضع آخر في إعدادات عين القطة", + "呼叫目标": "الاتصال الهدف", + "管理员APP": "برنامج التطبيقات الخاص بالمسؤول", + "可视门铃码": "رمز جرس الباب البصري", + "电子反锁": "جهاز إلكتروني لمنع القفل", + "双重认证": "المصادقة من عاملين", + "双锁联动": "وصلة القفل المزدوج", + "1.用智能锁APP添加锁和网关": "1. أضف أقفال وبوابات باستخدام تطبيق القفل الذكي", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. تمكين وظيفة الفتح عن بعد للقفل في APP (يتم إيقاف هذه الوظيفة بشكل افتراضي). إذا كان هذا الخيار غير متاح، لن يدعم القفل جوجل هوم", + "3.安装Google Home APP,点击左上角的加号按钮": "3. قم بتثبيت تطبيق Google Home وانقر فوق الزر زائد في الزاوية العلوية اليسرى" } \ No newline at end of file diff --git a/lan/lan_bg.json b/lan/lan_bg.json index 033c9ef5..ac25d40b 100644 --- a/lan/lan_bg.json +++ b/lan/lan_bg.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Функцията за дистанционно отключване на тази ключалка не е активирана", "下载完成,请到相册查看": "Изтеглянето е завършено, моля, отидете на албума, за да го видите", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Когато Cat Eye е настроен на режим на пестене на енергия, наблюдението не може да се извършва. Моля, превключете към други режими в настройките на Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Дистанционното отключване не е възможно, когато Cat Eye е настроен в режим на пестене на енергия. Моля, превключете на друг режим в настройките на Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Дистанционното отключване не е възможно, когато Cat Eye е настроен в режим на пестене на енергия. Моля, превключете на друг режим в настройките на Cat Eye", + "呼叫目标": "Цел на обаждане", + "管理员APP": "Приложение за администратор", + "可视门铃码": "Визуален код на звънеца", + "电子反锁": "Електронна анти блокировка", + "双重认证": "Двуфакторно удостоверяване", + "双锁联动": "Връзка с двойно заключване", + "1.用智能锁APP添加锁和网关": "1. Добавете брави и шлюзове с помощта на приложението Smart Lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Активирайте функцията за дистанционно отключване на ключалката в приложението (тази функция е изключена по подразбиране). Ако тази опция не е налице, заключването няма да поддържа Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Инсталирайте приложението Google Home и щракнете върху бутона плюс в горния ляв ъгъл" } \ No newline at end of file diff --git a/lan/lan_bn.json b/lan/lan_bn.json index 3a4df8b0..a2f980ee 100644 --- a/lan/lan_bn.json +++ b/lan/lan_bn.json @@ -177,7 +177,7 @@ "开启": "টেকওন", "确定要开启重置键?": "গানট্টটন?", "确定要关闭重置键?": "গানট্টটন?", - "隐藏无效开锁权限": "Hide ali▁alidaccessGenericName", + "隐藏无效开锁权限": "অবৈধ অনুমতি আড়াল করো", "APP开锁时需手机连网的锁": "ব্লকস্ক্রিয়ামিংফোনলাইন", "增值服务": "ওয়ার্ডেরিসিস", "关于": "কুবআউট", @@ -217,7 +217,7 @@ "重新通电": "পরীক্ষা", "指示灯": "কেয়ানারেটরলাইট", "选择网关": "সিওসিকারওয়ে", - "不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "5 gisnoteigpped,.", + "不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "5G ওয়াইফাই নেটওয়ার্ক সমর্থন করে না, কনফিগার করার জন্য 2.4G ওয়াইফাই নেটওয়ার্ক নির্বাচন করুন", "WiFi密码": "উইফিক", "请输入WiFi密码": "দ্বিতীয় ওয়ার্ড", "网关名称": "সমুদ্রনাম", @@ -1087,13 +1087,13 @@ "修改名字": "নেম", "时": "Hour", "分": "নিউট", - "Amazon Alexa": "Ammogonalexa", + "Amazon Alexa": "Amazon Alexa", "您可以使用Alexa进行开锁、闭锁和查看锁状态": "/অনুপন্থির", "支持的国家": "আদিবাস্য", "支持的国家值": "ইউসা, চা, uk, ঊর্ধ্ব, ডাইডিয়া, germany, ডিফায়েন্স, লি, ইম্পোসি, ইজেড", "操作流程": "ক্যামেশনprocesscess", "操作流程值": "1 বিরোধীদ্যালক্যান্ডgatkorethrouthhescartchlockParp\n\n2 দশমিক... ...সম্পোকলকিং... লকটিংয়ের (সংখ্যা ইংলিপিস অফবি-রফ-এফল্ট)। ফিফডোনট্যানস্ট্রিওপশন, থেলক ক্যান্টোনট\n\n3 বিদ্রোহী স্কুই ls টু-এক্সাআন্ড ঊর্ধ্বতন পোস্টার্থে\n\n৪লক্যাটথলকের দিন ইক্সাপপ্প, টেসিতে ইসোলাকক fun\n\n5thelockcanbe equavaedunderroughalexaxa", - "Google Home": "শ্রোগল", + "Google Home": "Google Home", "Action name": "কর্মসূচী", "ScienerSmart": "ইসিসিভার্ট", "支持的语言": "আদিবাস্য", @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "এই লকের রিমোট আনলকিং ফাংশন সক্ষম নেই", "下载完成,请到相册查看": "ডাউনলোড সম্পন্ন হয়েছে, দেখতে অনুগ্রহ করে অ্যালবামে যান", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "যখন ক্যাট আই পাওয়ার-সেভিং মোডে সেট করা থাকে, তখন পর্যবেক্ষণ করা যায় না। দয়া করে ক্যাট আই সেটিংসে অন্যান্য মোডে স্যুইচ করুন", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ক্যাট আই পাওয়ার-সাশ্রয় মোডে সেট করা থাকলে রিমোট আনলক করা সম্ভব নয়। দয়া করে ক্যাট আই সেটিংসে অন্য মোডে স্যুইচ করুন" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ক্যাট আই পাওয়ার-সাশ্রয় মোডে সেট করা থাকলে রিমোট আনলক করা সম্ভব নয়। দয়া করে ক্যাট আই সেটিংসে অন্য মোডে স্যুইচ করুন", + "呼叫目标": "কল টার্গেট", + "管理员APP": "প্রশাসক অ্যাপ", + "可视门铃码": "ভিজ্যুয়াল ডোরবেল কোড", + "电子反锁": "বৈদ্যুতিন বিরোধী লক", + "双重认证": "টু-ফ্যাক্টর অথেনটিকেশন", + "双锁联动": "ডাবল লক লিঙ্কেজ", + "1.用智能锁APP添加锁和网关": "1. স্মার্ট লক অ্যাপ ব্যবহার করে লক ও গেটওয়ে যোগ করুন", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. অ্যাপে লকের রিমোট আনলকিং ফাংশন সক্ষম করুন (এই ফাংশনটি ডিফল্টরূপে বন্ধ রয়েছে)। যদি এই বিকল্পটি উপলভ্য না হয় তবে লকটি গুগল হোম সমর্থন করবে না", + "3.安装Google Home APP,点击左上角的加号按钮": "গুগল হোম অ্যাপ্লিকেশনটি ইনস্টল করুন এবং উপরের বাম কোণে প্লাস বোতামটি ক্লিক করুন" } \ No newline at end of file diff --git a/lan/lan_cs.json b/lan/lan_cs.json index ceff8a23..33e659a2 100644 --- a/lan/lan_cs.json +++ b/lan/lan_cs.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Funkce dálkového odemykání tohoto zámku není povolena", "下载完成,请到相册查看": "Stahování dokončeno, přejděte prosím na album k zobrazení", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Když je Cat Eye nastaven do úsporného režimu, monitorování nelze provádět. Přepněte prosím do jiných režimů v nastavení Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Dálkové odemykání není možné, pokud je Cat Eye nastaven do úsporného režimu. Přepněte prosím do jiného režimu v nastavení Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Dálkové odemykání není možné, pokud je Cat Eye nastaven do úsporného režimu. Přepněte prosím do jiného režimu v nastavení Cat Eye", + "呼叫目标": "Cíl hovoru", + "管理员APP": "Aplikace správce", + "可视门铃码": "Vizuální kód zvonku", + "电子反锁": "Elektronické blokování", + "双重认证": "Dvoufaktorová autentizace", + "双锁联动": "Dvojitý zámek", + "1.用智能锁APP添加锁和网关": "1. Přidejte zámky a brány pomocí aplikace chytrého zámku", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Povolte funkci dálkového odemykání zámku v APP (tato funkce je ve výchozím nastavení vypnutá). Pokud tato možnost není k dispozici, zámek nebude podporovat Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Nainstalujte aplikaci Google Home a klikněte na tlačítko plus v levém horním rohu" } \ No newline at end of file diff --git a/lan/lan_da.json b/lan/lan_da.json index 09b0b141..3c6a2175 100644 --- a/lan/lan_da.json +++ b/lan/lan_da.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Fjernoplåsningsfunktionen for denne lås er ikke aktiveret", "下载完成,请到相册查看": "Download fuldført, gå til albummet for at se", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Når Cat Eye er indstillet til strømbesparende tilstand, kan overvågning ikke udføres. Skift venligst til andre tilstande i Cat Eye-indstillingerne", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Fjernoplåsning er ikke mulig, når Cat Eye er indstillet til strømbesparende tilstand. Skift venligst til en anden tilstand i Cat Eye-indstillinger" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Fjernoplåsning er ikke mulig, når Cat Eye er indstillet til strømbesparende tilstand. Skift venligst til en anden tilstand i Cat Eye-indstillinger", + "呼叫目标": "Mål for opkald", + "管理员APP": "Administrator APP", + "可视门铃码": "Visuel dørklokkekode", + "电子反锁": "Elektronisk anti-lås", + "双重认证": "To-faktor-godkendelse", + "双锁联动": "Dobbelt låseforbindelse", + "1.用智能锁APP添加锁和网关": "1. Tilføj låse og gateways ved hjælp af smart lock-appen", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Aktiver fjernoplåsningsfunktionen for låsen i APP'en (denne funktion er slået fra som standard). Hvis denne mulighed ikke er tilgængelig, understøtter låsen ikke Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installer Google Home-appen, og klik på plusknappen i øverste venstre hjørne" } \ No newline at end of file diff --git a/lan/lan_de.json b/lan/lan_de.json index e4b18d4d..3f68aeee 100644 --- a/lan/lan_de.json +++ b/lan/lan_de.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Die fernsteuerung des schlüssels nicht geöffnet", "下载完成,请到相册查看": "Die herunterladen ist abgeschlossen. Gehen sie ins fotoalbum", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Die überwachung kann nicht durchgeführt werden, wenn die katze auf schaltungsmodus eingestellt ist. Wechseln sie in die einstellungen für die katze auf einen anderen modus", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Die katze kann nicht aus der ferne entsperren, wenn sie so eingestellt ist, dass strom gespart wird Wechseln sie in die einstellungen für die katze auf einen anderen modus" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Die katze kann nicht aus der ferne entsperren, wenn sie so eingestellt ist, dass strom gespart wird Wechseln sie in die einstellungen für die katze auf einen anderen modus", + "呼叫目标": "Aktiviere ziel.", + "管理员APP": "Administrator tor wenden.", + "可视门铃码": "Achter türcode", + "电子反锁": "Die elektronische abwehrvorrichtung", + "双重认证": "Duale identität", + "双锁联动": "Ein doppelschloss verbindet sich", + "1.用智能锁APP添加锁和网关": "1. Schlösser und gateway mit der anwendung intelligente schlösser hinzufügen", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Entsichern in einer APP, die ein schloss öffnet (standard abschalten) Wenn diese option nicht verfügbar ist, wird das schloss google nicht unterstützen", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installiert die google-app und klicken auf den knopf hinzufügen in der oberen linken ecke" } \ No newline at end of file diff --git a/lan/lan_el.json b/lan/lan_el.json index 91697172..833e8146 100644 --- a/lan/lan_el.json +++ b/lan/lan_el.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Η λειτουργία απομακρυσμένου ξεκλειδώματος αυτής της κλειδαριάς δεν είναι ενεργοποιημένη", "下载完成,请到相册查看": "Η λήψη ολοκληρώθηκε, μεταβείτε στο άλμπουμ για προβολή", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Όταν το Cat Eye έχει ρυθμιστεί σε λειτουργία εξοικονόμησης ενέργειας, δεν είναι δυνατή η εκτέλεση παρακολούθησης. Μεταβείτε σε άλλες λειτουργίες στις ρυθμίσεις του Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Το απομακρυσμένο ξεκλείδωμα δεν είναι δυνατό όταν το Cat Eye έχει ρυθμιστεί σε λειτουργία εξοικονόμησης ενέργειας. Μεταβείτε σε άλλη λειτουργία στις ρυθμίσεις του Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Το απομακρυσμένο ξεκλείδωμα δεν είναι δυνατό όταν το Cat Eye έχει ρυθμιστεί σε λειτουργία εξοικονόμησης ενέργειας. Μεταβείτε σε άλλη λειτουργία στις ρυθμίσεις του Cat Eye", + "呼叫目标": "Στόχος κλήσης", + "管理员APP": "Εφαρμογή διαχειριστή", + "可视门铃码": "Οπτικός κωδικός κουδουνιού πόρτας", + "电子反锁": "Ηλεκτρονικό αντικλείδωμα", + "双重认证": "Έλεγχος ταυτότητας δύο παραγόντων", + "双锁联动": "Σύνδεσμος διπλού κλειδώματος", + "1.用智能锁APP添加锁和网关": "1. Προσθέστε κλειδαριές και πύλες χρησιμοποιώντας την εφαρμογή Smart Lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Ενεργοποιήστε τη λειτουργία απομακρυσμένου ξεκλειδώματος της κλειδαριάς στην εφαρμογή (αυτή η λειτουργία είναι απενεργοποιημένη από προεπιλογή). Εάν αυτή η επιλογή δεν είναι διαθέσιμη, το κλείδωμα δεν θα υποστηρίζει το Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Εγκαταστήστε την εφαρμογή Google Home και κάντε κλικ στο κουμπί συν στην επάνω αριστερή γωνία" } \ No newline at end of file diff --git a/lan/lan_en.json b/lan/lan_en.json index 1f5ac308..bf8243ca 100644 --- a/lan/lan_en.json +++ b/lan/lan_en.json @@ -1137,6 +1137,13 @@ "版本说明": "Version description", "呼叫目标": "Call target", "管理员APP": "Administrator APP", + "可视门铃码": "Visual doorbell code", + "电子反锁": "Electronic anti lock", + "双重认证": "Two-factor authentication", + "双锁联动": "Double lock linkage", + "1.用智能锁APP添加锁和网关": "1. Add locks and gateways using the smart lock app", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Enable the remote unlocking function of the lock in the APP (this function is turned off by default). If this option is not available, the lock will not support Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Install the Google Home app and click the plus button in the upper left corner", "网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "After the gateway is powered on, press and hold the reset button for 5 seconds. Click Next when the blue indicator light flashes", "网关添加成功": "Gateway added successfully" } diff --git a/lan/lan_es.json b/lan/lan_es.json index e1f203ba..efd54202 100644 --- a/lan/lan_es.json +++ b/lan/lan_es.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "La función de desbloqueo remoto de este bloqueo no está habilitada", "下载完成,请到相册查看": "Descargar completado, por favor vaya al álbum para ver", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Cuando Cat Eye está configurado en modo de ahorro de energía, no se puede realizar la monitorización. Cambie a otros modos en la configuración de ojo gato", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "El desbloqueo remoto no es posible cuando Cat Eye está en modo de ahorro de energía. Cambie a otro modo en la configuración de ojos de gato" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "El desbloqueo remoto no es posible cuando Cat Eye está en modo de ahorro de energía. Cambie a otro modo en la configuración de ojos de gato", + "呼叫目标": "Objetivo de la llamada", + "管理员APP": "Aplicación de administrador", + "可视门铃码": "Código de timbre Visual de la puerta", + "电子反锁": "Antibloqueo electrónico", + "双重认证": "Autenticación de dos factores", + "双锁联动": "Doble cierre", + "1.用智能锁APP添加锁和网关": "1. Agregue bloqueos y puertas de enlace con la aplicación smart lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Habilitar la función de desbloqueo remoto del bloqueo en la aplicación (esta función se desactiva por defecto). Si esta opción no está disponible, el bloqueo no será compatible con Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instale la aplicación de Google Home y haga clic en el botón más en la esquina superior izquierda" } \ No newline at end of file diff --git a/lan/lan_et.json b/lan/lan_et.json index c0a777f0..9fe1badb 100644 --- a/lan/lan_et.json +++ b/lan/lan_et.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Selle luku kaugavamise funktsioon pole lubatud", "下载完成,请到相册查看": "Allalaadimine on lõpetatud, vaatamiseks minge albumisse", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Kui Cat Eye on seatud energiasäästurežiimile, ei saa jälgimist teostada. Palun lülituge Cat Eye seadetes muudele režiimidele", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Kaugavamine ei ole võimalik, kui Cat Eye on seatud energiasäästurežiimile. Palun lülituge Cat Eye seadetes teisele režiimile" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Kaugavamine ei ole võimalik, kui Cat Eye on seatud energiasäästurežiimile. Palun lülituge Cat Eye seadetes teisele režiimile", + "呼叫目标": "Kõne sihtmärk", + "管理员APP": "Administraatori rakendus", + "可视门铃码": "Visuaalne uksekella kood", + "电子反锁": "Elektrooniline mitteblokeeruv", + "双重认证": "Kahefaktoriline autentimine", + "双锁联动": "Kahekordne lukustusühendus", + "1.用智能锁APP添加锁和网关": "1. Lisage lukke ja lüüse nutiluku rakenduse abil", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Lubage rakenduses APP luku kaugavamise funktsioon (see funktsioon on vaikimisi välja lülitatud). Kui see valik pole saadaval, ei toeta lukk Google Home'i", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installige rakendus Google Home ja klõpsake vasakus ülanurgas plussnuppu" } \ No newline at end of file diff --git a/lan/lan_fi.json b/lan/lan_fi.json index 079be028..0cd26944 100644 --- a/lan/lan_fi.json +++ b/lan/lan_fi.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Tämän lukon etälukituksen avaustoiminto ei ole käytössä", "下载完成,请到相册查看": "Lataus valmis, siirry albumiin nähdäksesi", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Kun Cat Eye on asetettu virransäästötilaan, valvontaa ei voi suorittaa. Vaihda muihin tiloihin Cat Eye -asetuksissa", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Lukituksen avaaminen ei ole mahdollista, kun Cat Eye on asetettu virransäästötilaan. Vaihda toiseen tilaan Cat Eye -asetuksissa" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Lukituksen avaaminen ei ole mahdollista, kun Cat Eye on asetettu virransäästötilaan. Vaihda toiseen tilaan Cat Eye -asetuksissa", + "呼叫目标": "Puhelun kohde", + "管理员APP": "Järjestelmänvalvojan APP", + "可视门铃码": "Visuaalinen ovikellon koodi", + "电子反锁": "Elektroninen lukkiutumaton", + "双重认证": "Kaksivaiheinen todennus", + "双锁联动": "Kaksinkertainen lukitus", + "1.用智能锁APP添加锁和网关": "1. Lisää lukkoja ja yhdyskäytäviä älylukkosovelluksella", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Ota lukon etälukituksen avaustoiminto käyttöön APP:ssa (tämä toiminto on oletuksena pois päältä). Jos tämä vaihtoehto ei ole käytettävissä, lukko ei tue Google Homea", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Asenna Google Home -sovellus ja napsauta vasemmassa yläkulmassa olevaa pluspainiketta" } \ No newline at end of file diff --git a/lan/lan_fr.json b/lan/lan_fr.json index 0df73d91..b0d0bd3d 100644 --- a/lan/lan_fr.json +++ b/lan/lan_fr.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "La fonction de déverrouillage à distance de ce verrou n’est pas activée", "下载完成,请到相册查看": "Téléchargement terminé, s’il vous plaît aller à l’album pour voir", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Lorsque l’oeil de chat est réglé en mode économie d’énergie, la surveillance ne peut pas être effectuée. S’il vous plaît passer à d’autres modes dans les paramètres de l’oeil de chat", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Le déverrouillage à distance n’est pas possible lorsque l’oeil de chat est réglé sur le mode d’économie d’énergie. Veuillez passer à un autre mode dans les paramètres des yeux de chat" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Le déverrouillage à distance n’est pas possible lorsque l’oeil de chat est réglé sur le mode d’économie d’énergie. Veuillez passer à un autre mode dans les paramètres des yeux de chat", + "呼叫目标": "Cible d’appel", + "管理员APP": "Application administrateur", + "可视门铃码": "Code visuel de sonnette", + "电子反锁": "Anti serrure électronique", + "双重认证": "Authentification à deux facteurs", + "双锁联动": "Double liaison de serrure", + "1.用智能锁APP添加锁和网关": "1. Ajoutez des serrures et des passerelles à l’aide de l’application smart lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Activez la fonction de déverrouillage à distance de la serrure dans l’application (cette fonction est désactivée par défaut). Si cette option n’est pas disponible, le verrou ne prendra pas en charge Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installez l’application Google Home et cliquez sur le bouton plus dans le coin supérieur gauche" } \ No newline at end of file diff --git a/lan/lan_he.json b/lan/lan_he.json index 96df165b..f1110789 100644 --- a/lan/lan_he.json +++ b/lan/lan_he.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "פונקציית ביטול הנעילה מרחוק של מנעול זה אינה מופעלת", "下载完成,请到相册查看": "ההורדה הושלמה, אנא עבור לאלבום לצפייה", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "כאשר Cat Eye מוגדר למצב חיסכון בחשמל, לא ניתן לבצע ניטור. עבור למצבים אחרים בהגדרות Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ביטול נעילה מרחוק אינו אפשרי כאשר Cat Eye מוגדר למצב חיסכון בחשמל. עבור למצב אחר בהגדרות Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ביטול נעילה מרחוק אינו אפשרי כאשר Cat Eye מוגדר למצב חיסכון בחשמל. עבור למצב אחר בהגדרות Cat Eye", + "呼叫目标": "יעד שיחה", + "管理员APP": "יישום מנהל מערכת", + "可视门铃码": "קוד פעמון דלת חזותי", + "电子反锁": "אנטי לוק אלקטרוני", + "双重认证": "אימות דו-שלבי", + "双锁联动": "הצמדת נעילה כפולה", + "1.用智能锁APP添加锁和网关": "1. הוסיפו מנעולים ושערים באמצעות אפליקציית Smart Lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. הפעל את פונקציית ביטול הנעילה מרחוק של המנעול באפליקציה (פונקציה זו כבויה כברירת מחדל). אם אפשרות זו אינה זמינה, המנעול לא יתמוך ב-Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. התקן את אפליקציית Google Home ולחץ על כפתור הפלוס בפינה השמאלית העליונה" } \ No newline at end of file diff --git a/lan/lan_hi.json b/lan/lan_hi.json index d32b69fc..1360cfd5 100644 --- a/lan/lan_hi.json +++ b/lan/lan_hi.json @@ -1136,5 +1136,14 @@ "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "रीसेट के बाद, लॉक का रिमोट कंट्रोल हटा दिया जाएगा। क्या आप इसे रीसेट करना चाहते हैं?", "版本说明": "संस्करण वर्णन", "网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "गेटवे चालू होने के बाद, रीसेट बटन को 5 सेकंड के लिए दबाकर रखें। जब नीला संकेतक हल्का फ्लैश हो, तो अगला क्लिक करें।", - "网关添加成功": "गेटवे सफलतापूर्वक जोड़ा गया" + "网关添加成功": "गेटवे सफलतापूर्वक जोड़ा गया", + "呼叫目标": "कॉल लक्ष्य", + "管理员APP": "व्यवस्थापक एप", + "可视门铃码": "Name", + "电子反锁": "इलेक्ट्रॉनिक विरोधी लॉक", + "双重认证": "द्वि-कारक प्रमाणीकरण", + "双锁联动": "द्वि पाश सहलग्नता", + "1.用智能锁APP添加锁和网关": "1. स्मार्ट लॉक ऐप का उपयोग करके लॉक्स और गेटवे जोड़ें", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. एप्लिकेशन में लॉक का रिमोट अनलॉकिंग फ़ंक्शन सक्षम करें (यह फ़ंक्शन डिफ़ॉल्ट रूप से बंद है). यदि यह विकल्प उपलब्ध नहीं है, तो लॉक आपके गूगल होम को सपोर्ट नहीं करेगा।", + "3.安装Google Home APP,点击左上角的加号按钮": "3. गूगल होम ऐप को इंस्टॉल करें और ऊपरी बाएं कोने में प्लस बटन पर क्लिक करें।" } \ No newline at end of file diff --git a/lan/lan_hk.json b/lan/lan_hk.json index 5c3b4bb1..3d42492f 100644 --- a/lan/lan_hk.json +++ b/lan/lan_hk.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "此鎖嘅遠程解鎖功能未啟用", "下载完成,请到相册查看": "下載完成,請至相冊查看", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "当Cat Eye設置為省電模式時,無法執行監控。 請喺Cat Eye設置中切換到其他模式", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "当Cat Eye設置為省電模式時,無法遠程解鎖。 請喺Cat Eye設置中切換到其他模式" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "当Cat Eye設置為省電模式時,無法遠程解鎖。 請喺Cat Eye設置中切換到其他模式", + "呼叫目标": "呼叫目標", + "管理员APP": "管理員APP", + "可视门铃码": "可視門鈴密碼", + "电子反锁": "電子防抱死", + "双重认证": "雙重認證", + "双锁联动": "雙鎖聯動", + "1.用智能锁APP添加锁和网关": "1.使用智能鎖應用程序添加鎖和網關", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2.喺APP中開啟鎖嘅遠程解鎖功能(此功能默認關閉)。 如果此選項不可用,則鎖將唔撐Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3.安裝Google Home應用,點擊左上角嘅加號掣" } \ No newline at end of file diff --git a/lan/lan_hr.json b/lan/lan_hr.json index 772bf665..70897559 100644 --- a/lan/lan_hr.json +++ b/lan/lan_hr.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Funkcija daljinskog otključavanja ove brave nije omogućena", "下载完成,请到相册查看": "Preuzimanje je završeno, idite na album za pregled", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Kada je Cat Eye postavljen na način rada za uštedu energije, nadzor se ne može izvršiti. Prebacite se na druge načine rada u postavkama Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Daljinsko otključavanje nije moguće kada je Cat Eye postavljen na način rada za uštedu energije. Prebacite se na drugi način rada u postavkama Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Daljinsko otključavanje nije moguće kada je Cat Eye postavljen na način rada za uštedu energije. Prebacite se na drugi način rada u postavkama Cat Eye", + "呼叫目标": "Cilj poziva", + "管理员APP": "Administratorska aplikacija", + "可视门铃码": "Vizualni kod zvona na vratima", + "电子反锁": "Elektronička zaštita od blokiranja", + "双重认证": "Dvofaktorska autentifikacija", + "双锁联动": "Dvostruka brava", + "1.用智能锁APP添加锁和网关": "1. Dodajte brave i pristupnike pomoću aplikacije pametne brave", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Omogućite funkciju daljinskog otključavanja brave u APP-u (ova je funkcija prema zadanim postavkama isključena). Ako ova opcija nije dostupna, zaključavanje neće podržavati Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instalirajte aplikaciju Google Home i kliknite gumb plus u gornjem lijevom kutu" } \ No newline at end of file diff --git a/lan/lan_hu.json b/lan/lan_hu.json index d93cdbfa..3c5d41ce 100644 --- a/lan/lan_hu.json +++ b/lan/lan_hu.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Ennek a zárnak a távoli feloldási funkciója nincs engedélyezve", "下载完成,请到相册查看": "A letöltés befejeződött, kérjük, menjen az albumra a megtekintéshez", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Ha a Cat Eye energiatakarékos üzemmódba van állítva, a felügyelet nem végezhető el. Kérjük, váltson más módokra a Cat Eye beállításaiban", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "A távoli feloldás nem lehetséges, ha a Cat Eye energiatakarékos üzemmódba van állítva. Kérjük, váltson másik módra a Cat Eye beállításaiban" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "A távoli feloldás nem lehetséges, ha a Cat Eye energiatakarékos üzemmódba van állítva. Kérjük, váltson másik módra a Cat Eye beállításaiban", + "呼叫目标": "Hívás cél", + "管理员APP": "Rendszergazdai alkalmazás", + "可视门铃码": "Vizuális csengő kód", + "电子反锁": "Elektronikus blokkolásgátló", + "双重认证": "Kétfaktoros hitelesítés", + "双锁联动": "Dupla reteszelő rudazat", + "1.用智能锁APP添加锁和网关": "1. Adjon hozzá zárakat és átjárókat az intelligens zár alkalmazással", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Engedélyezze a zár távoli feloldási funkcióját az APP-ban (ez a funkció alapértelmezés szerint ki van kapcsolva). Ha ez az opció nem érhető el, a zár nem támogatja a Google Home szolgáltatást", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Telepítse a Google Home alkalmazást, és kattintson a plusz gombra a bal felső sarokban" } \ No newline at end of file diff --git a/lan/lan_id.json b/lan/lan_id.json index 21934da7..224692f6 100644 --- a/lan/lan_id.json +++ b/lan/lan_id.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Fungsi unlocking jarak jauh dari kunci ini tidak diaktifkan", "下载完成,请到相册查看": "Download selesai, silakan pergi ke album untuk melihat", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Jika mata kucing disetel ke mode penyimpanan daya, pemantauan tidak dapat dilakukan. Silakan beralih ke mode lain di pengaturan mata kucing", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Membuka kunci jarak jauh tidak mungkin jika mata kucing diatur untuk mode menghemat daya. Silakan beralih ke mode lain di pengaturan mata kucing" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Membuka kunci jarak jauh tidak mungkin jika mata kucing diatur untuk mode menghemat daya. Silakan beralih ke mode lain di pengaturan mata kucing", + "呼叫目标": "Hubungi target.", + "管理员APP": "Aplikasi Administrator", + "可视门铃码": "Kode bel Visual", + "电子反锁": "Anti elektronik", + "双重认证": "Dua faktor otentikasi", + "双锁联动": "Kunci ganda hubungan", + "1.用智能锁APP添加锁和网关": "1. Tambahkan kunci dan gerbang menggunakan aplikasi smart lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Aktifkan fungsi kunci pengunci jarak jauh di aplikasi (fungsi ini dimatikan secara standar). Jika opsi ini tidak tersedia, kunci tidak akan mendukung Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instal aplikasi Google Home dan klik tombol plus di sudut kiri atas" } \ No newline at end of file diff --git a/lan/lan_it.json b/lan/lan_it.json index a87d0a27..6eb09aab 100644 --- a/lan/lan_it.json +++ b/lan/lan_it.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "La funzione di sblocco remoto di questa serratura non è abilitata", "下载完成,请到相册查看": "Scaricamento completato, vai all’ album da visualizzare", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Quando l’occhio gatto è impostato alla modalità risparmio energetico, il monitoraggio non può essere effettuato. Passa ad altre modalità nelle impostazioni degli occhi di gatto", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Lo sblocco a distanza non è possibile quando l’occhio gatto è impostato alla modalità risparmio energetico. Passa a un’altra modalità nelle impostazioni degli occhi di gatto" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Lo sblocco a distanza non è possibile quando l’occhio gatto è impostato alla modalità risparmio energetico. Passa a un’altra modalità nelle impostazioni degli occhi di gatto", + "呼叫目标": "Obiettivo chiamata", + "管理员APP": "Applicazione amministratore", + "可视门铃码": "Codice campanella visiva", + "电子反锁": "Antibloccaggio elettronico", + "双重认证": "Autenticazione a due fattori", + "双锁联动": "Collegamento a doppio bloccaggio", + "1.用智能锁APP添加锁和网关": "1. Aggiunge serrature e gateway usando l’applicazione smart lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Abilita la funzione di sblocco remoto del lock nella APP (questa funzione è disattivata in modo predefinito). Se questa opzione non è disponibile, il lock non supporta Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installa l’applicazione Home di Google e fai clic sul pulsante più nell’angolo in alto a sinistra" } \ No newline at end of file diff --git a/lan/lan_ja.json b/lan/lan_ja.json index 6df21bfe..7c81db90 100644 --- a/lan/lan_ja.json +++ b/lan/lan_ja.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "このロックのリモートロック解除機能は有効になっていません", "下载完成,请到相册查看": "ダウンロードが完了しましたので、アルバムでご覧ください", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "cat eyeが省電力モードに設定されている場合、監視はできません。cat eye設定で他のモードに切り替えてください", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "cat eyeが省電力モードに設定されている場合、リモートロック解除はできません。cat eye設定で別のモードに切り替えてください" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "cat eyeが省電力モードに設定されている場合、リモートロック解除はできません。cat eye設定で別のモードに切り替えてください", + "呼叫目标": "通話ターゲットの", + "管理员APP": "管理者アプリ", + "可视门铃码": "視覚チャイムコード", + "电子反锁": "電子反ロック", + "双重认证": "2ファクタ認証", + "双锁联动": "二重ロック連動", + "1.用智能锁APP添加锁和网关": "1. スマートロックappを使用してロックとゲートウェイを追加します", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. アプリでロックのリモートロック解除機能を有効にします(この機能はデフォルトでオフになっています)。このオプションが利用できない場合、ロックはgoogle homeをサポートしません", + "3.安装Google Home APP,点击左上角的加号按钮": "3. google homeアプリをインストールし、左上隅のプラスボタンをクリックします" } \ No newline at end of file diff --git a/lan/lan_keys.json b/lan/lan_keys.json index 62c5b3f0..f3d9487d 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1138,5 +1138,15 @@ "版本说明": "版本说明", "呼叫目标": "呼叫目标", "管理员APP": "管理员APP", + "可视门铃码": "可视门铃码", + "电子反锁": "电子反锁", + "双重认证": "双重认证", + "双锁联动": "双锁联动", + "1.用智能锁APP添加锁和网关": "1.用智能锁APP添加锁和网关", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3.安装Google Home APP,点击左上角的加号按钮", + "4.在设置页面,选择与Google协同工作": "4.在设置页面,选择与Google协同工作", + "5.搜索": "5.搜索", + ",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权", "网关添加成功": "网关添加成功" } diff --git a/lan/lan_kk.json b/lan/lan_kk.json index 8f1ed1da..27c9b22c 100644 --- a/lan/lan_kk.json +++ b/lan/lan_kk.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Бұғаттаудың қашықтан құлыптан босату функциясы қосылмаған", "下载完成,请到相册查看": "Жүктеу аяқталды, көру үшін альбомға өтуіңізді сұраймыз", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Cat Eye қуат үнемдейтін режимге орнатылғанда, мониторингті орындау мүмкін емес. Cat Eye параметрлеріндегі басқа режимдерге ауысуыңызды сұраймын", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Cat Eye қуат үнемдейтін режимге орнатылғанда қашықтан құлыптан босату мүмкін емес. Cat Eye параметрлерінде басқа режимге ауысуыңызды сұраймыз" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Cat Eye қуат үнемдейтін режимге орнатылғанда қашықтан құлыптан босату мүмкін емес. Cat Eye параметрлерінде басқа режимге ауысуыңызды сұраймыз", + "呼叫目标": "Қоңырау шалу мақсаты", + "管理员APP": "APP әкімшісі", + "可视门铃码": "Көзбен шолып есігінің коды", + "电子反锁": "Электрондық бұғаттауға қарсы", + "双重认证": "Екі факторлы аутентификация", + "双锁联动": "Қос бұғаттау сілтемесі", + "1.用智能锁APP添加锁和网关": "1. Смарт-құлыптау бағдарламасын пайдалана отырып құлыптар мен шлюздерді қосу", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. APP бағдарламасында құлыпты қашықтан ашу функциясын қосу (бұл функция әдепкі бойынша өшіріледі). Егер бұл параметр қол жетімді болмаса, бұғаттау Google Home-ды қолдамайды", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Google Home бағдарламасын орнатып, жоғарғы сол жақ бұрыштағы қосу түймешігін басыңыз" } \ No newline at end of file diff --git a/lan/lan_ko.json b/lan/lan_ko.json index f6b736e3..7dcdfdf3 100644 --- a/lan/lan_ko.json +++ b/lan/lan_ko.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "이 잠금의 원격 잠금 해제 기능을 사용할 수 없습니다", "下载完成,请到相册查看": "다운로드가 완료되었습니다. 보려면 앨범으로 이동하십시오", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Cat Eye 가 절전 모드로 설정되면 모니터링을 수행할 수 없습니다.캣아이 설정에서 다른 모드로 전환해 주세요", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Cat Eye 가 절전 모드로 설정된 경우에는 원격 잠금 해제가 불가능합니다.Cat Eye 설정에서 다른 모드로 전환해 주세요" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Cat Eye 가 절전 모드로 설정된 경우에는 원격 잠금 해제가 불가능합니다.Cat Eye 설정에서 다른 모드로 전환해 주세요", + "呼叫目标": "전화 대상", + "管理员APP": "관리자 앱", + "可视门铃码": "시각 초인종 부호", + "电子反锁": "전자식 anti lock", + "双重认证": "이중 인증", + "双锁联动": "2 중 잠금 연결", + "1.用智能锁APP添加锁和网关": "1. 스마트 잠금 앱을 사용하여 잠금 및 게이트웨이를 추가합니다", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. 앱에서 잠금의 원격 잠금 해제 기능을 활성화합니다 (이 기능은 기본적으로 꺼져 있습니다).이 옵션을 사용할 수 없는 경우 잠금은 Google Home을 지원하지 않습니다", + "3.安装Google Home APP,点击左上角的加号按钮": "3. 구글 홈 앱을 설치하고 왼쪽 상단 모서리에 있는 더하기 버튼을 클릭합니다" } \ No newline at end of file diff --git a/lan/lan_lt.json b/lan/lan_lt.json index 73a83706..9eedf503 100644 --- a/lan/lan_lt.json +++ b/lan/lan_lt.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Šio užrakto nuotolinio atrakinimo funkcija neįjungta", "下载完成,请到相册查看": "Atsisiuntimas baigtas, eikite į albumą, kad peržiūrėtumėte", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Kai \"Cat Eye\" nustatytas energijos taupymo režimas, stebėjimo atlikti negalima. \"Cat Eye\" nustatymuose perjunkite į kitus režimus", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Nuotolinis atrakinimas neįmanomas, kai \"Cat Eye\" nustatytas energijos taupymo režimas. \"Cat Eye\" nustatymuose perjunkite į kitą režimą" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Nuotolinis atrakinimas neįmanomas, kai \"Cat Eye\" nustatytas energijos taupymo režimas. \"Cat Eye\" nustatymuose perjunkite į kitą režimą", + "呼叫目标": "Skambučio tikslas", + "管理员APP": "Administratoriaus programa", + "可视门铃码": "Vaizdinis durų skambučio kodas", + "电子反锁": "Elektroninis antiblokavimas", + "双重认证": "Dviejų veiksnių autentifikavimas", + "双锁联动": "Dvigubo užrakto jungtis", + "1.用智能锁APP添加锁和网关": "1. Pridėkite spynas ir šliuzus naudodami \"smart lock\" programą", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Įjunkite užrakto nuotolinio atrakinimo funkciją APP (ši funkcija yra išjungta pagal numatytuosius nustatymus). Jei ši parinktis nepasiekiama, užraktas nepalaikys \"Google Home\"", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Įdiekite \"Google Home\" programą ir spustelėkite pliuso mygtuką viršutiniame kairiajame kampe" } \ No newline at end of file diff --git a/lan/lan_ms.json b/lan/lan_ms.json index 75e8bbc9..526575cc 100644 --- a/lan/lan_ms.json +++ b/lan/lan_ms.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Fungsi buka kunci jauh kunci ini tidak didayakan", "下载完成,请到相册查看": "Muat turun selesai, sila pergi ke album untuk melihat", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Apabila Cat Eye ditetapkan kepada mod penjimatan kuasa, pemantauan tidak boleh dilakukan. Sila tukar kepada mod lain dalam tetapan Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Buka kunci jauh tidak boleh dilakukan apabila Cat Eye ditetapkan kepada mod penjimatan kuasa. Sila tukar kepada mod lain dalam tetapan Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Buka kunci jauh tidak boleh dilakukan apabila Cat Eye ditetapkan kepada mod penjimatan kuasa. Sila tukar kepada mod lain dalam tetapan Cat Eye", + "呼叫目标": "Sasaran panggilan", + "管理员APP": "APP Pentadbir", + "可视门铃码": "Kod loceng pintu visual", + "电子反锁": "Anti kunci elektronik", + "双重认证": "Pengesahan dua faktor", + "双锁联动": "Pautan kunci berganda", + "1.用智能锁APP添加锁和网关": "1. Tambah kunci dan pintu masuk menggunakan apl kunci pintar", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Dayakan fungsi buka kunci jauh kunci dalam APP (fungsi ini dimatikan secara lalai). Jika pilihan ini tidak tersedia, kunci tidak akan menyokong Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Pasang apl Google Home dan klik butang tambah di penjuru kiri sebelah atas" } \ No newline at end of file diff --git a/lan/lan_nl.json b/lan/lan_nl.json index 56be2060..8f3575f0 100644 --- a/lan/lan_nl.json +++ b/lan/lan_nl.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "De remote unlock functie van het slot is niet ingeschakeld", "下载完成,请到相册查看": "De download is voltooid, ga naar het album om het te bekijken", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Wanneer 'kattenoog' is ingesteld op de energiebesparende modus, is monitoring niet mogelijk. Ga naar een andere modus in de kattenoog instellingen", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Wanneer cat eye is ingesteld op de energiebesparende modus, kan deze niet op afstand worden ontgrendeld. Ga naar een andere modus in de kattenoog instellingen" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Wanneer cat eye is ingesteld op de energiebesparende modus, kan deze niet op afstand worden ontgrendeld. Ga naar een andere modus in de kattenoog instellingen", + "呼叫目标": "Doel van de oproep", + "管理员APP": "Toepassing door de beheerder", + "可视门铃码": "Visuele deurbel code", + "电子反锁": "Elektronische abs", + "双重认证": "Twee-factor authenticatie", + "双锁联动": "Dubbele vergrendeling voor koppeling", + "1.用智能锁APP添加锁和网关": "1. Voeg sloten en gateways toe met de smart lock app", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Open het slot op afstand in de APP (standaard uitgeschakeld). Als deze optie niet beschikbaar is, wordt google Home niet ondersteund", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installeer de google home-app en klik op de plus-knop in de linkerbovenhoek" } \ No newline at end of file diff --git a/lan/lan_pl.json b/lan/lan_pl.json index 8c958c55..b9797859 100644 --- a/lan/lan_pl.json +++ b/lan/lan_pl.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Funkcja zdalnego odblokowania tego zamka nie jest włączona", "下载完成,请到相册查看": "Pobieranie zakończone, przejdź do albumu, aby wyświetlić", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Gdy Cat Eye jest ustawiony w trybie oszczędzania energii, nie można przeprowadzić monitorowania. Przełącz się na inne tryby w ustawieniach Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Zdalne odblokowanie nie jest możliwe, gdy Cat Eye jest ustawiony w trybie oszczędzania energii. Przełącz się na inny tryb w ustawieniach Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Zdalne odblokowanie nie jest możliwe, gdy Cat Eye jest ustawiony w trybie oszczędzania energii. Przełącz się na inny tryb w ustawieniach Cat Eye", + "呼叫目标": "Cel połączenia", + "管理员APP": "Aplikacja administratora", + "可视门铃码": "Wizualny kod dzwonka do drzwi", + "电子反锁": "Elektroniczny układ przeciwblokujący", + "双重认证": "Uwierzytelnianie dwuskładnikowe", + "双锁联动": "Podwójny zamek zawieszenia", + "1.用智能锁APP添加锁和网关": "1. Dodaj zamki i bramy za pomocą aplikacji inteligentnego zamka", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Włącz funkcję zdalnego odblokowywania zamka w aplikacji (ta funkcja jest domyślnie wyłączona). Jeśli ta opcja nie jest dostępna, zamek nie będzie obsługiwał Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Zainstaluj aplikację Google Home i kliknij przycisk plusa w lewym górnym rogu" } \ No newline at end of file diff --git a/lan/lan_pt.json b/lan/lan_pt.json index 9d0d2657..a4faac2a 100644 --- a/lan/lan_pt.json +++ b/lan/lan_pt.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "A função de desbloqueio remoto desta fechadura não está habilitada", "下载完成,请到相册查看": "Download concluído, por favor, vá para o álbum para ver", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Quando o Cat Eye está definido para o modo de economia de energia, o monitoramento não pode ser executado. Por favor, mude para outros modos nas configurações do Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "O desbloqueio remoto não é possível quando o Cat Eye está definido para o modo de economia de energia. Por favor, mude para outro modo nas configurações do Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "O desbloqueio remoto não é possível quando o Cat Eye está definido para o modo de economia de energia. Por favor, mude para outro modo nas configurações do Cat Eye", + "呼叫目标": "Destino da chamada", + "管理员APP": "Aplicativo Administrador", + "可视门铃码": "Código visual da campainha", + "电子反锁": "Anti bloqueio eletrônico", + "双重认证": "Autenticação de dois fatores", + "双锁联动": "Articulação de trava dupla", + "1.用智能锁APP添加锁和网关": "1. Adicione fechaduras e gateways usando o aplicativo Smart Lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Ative a função de desbloqueio remoto da fechadura no APP (esta função está desativada por padrão). Se esta opção não estiver disponível, o bloqueio não será compatível com o Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instale o aplicativo Google Home e clique no botão de adição no canto superior esquerdo" } \ No newline at end of file diff --git a/lan/lan_ro.json b/lan/lan_ro.json index 584e33af..635bb36a 100644 --- a/lan/lan_ro.json +++ b/lan/lan_ro.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Funcția de deblocare de la distanță a acestei încuietori nu este activată", "下载完成,请到相册查看": "Descărcare finalizată, vă rugăm să accesați albumul pentru a vizualiza", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Când Cat Eye este setat în modul de economisire a energiei, monitorizarea nu poate fi efectuată. Vă rugăm să comutați la alte moduri în setările Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Deblocarea de la distanță nu este posibilă atunci când Cat Eye este setat în modul de economisire a energiei. Vă rugăm să comutați la un alt mod în setările Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Deblocarea de la distanță nu este posibilă atunci când Cat Eye este setat în modul de economisire a energiei. Vă rugăm să comutați la un alt mod în setările Cat Eye", + "呼叫目标": "Țintă de apel", + "管理员APP": "Aplicație de administrator", + "可视门铃码": "Codul vizual al soneriei", + "电子反锁": "Antiblocare electronică", + "双重认证": "Autentificare cu doi factori", + "双锁联动": "Legătură dublă de blocare", + "1.用智能锁APP添加锁和网关": "1. Adăugați încuietori și gateway-uri folosind aplicația smart lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Activați funcția de deblocare de la distanță a încuietorului în aplicație (această funcție este dezactivată în mod implicit). Dacă această opțiune nu este disponibilă, blocarea nu va accepta Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instalați aplicația Google Home și faceți clic pe butonul plus din colțul din stânga sus" } \ No newline at end of file diff --git a/lan/lan_ru.json b/lan/lan_ru.json index 393a68f7..10da744f 100644 --- a/lan/lan_ru.json +++ b/lan/lan_ru.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Функция дистанционного разблокирования этого замка не включена", "下载完成,请到相册查看": "Загрузка завершена, пожалуйста, перейдите на альбом, чтобы посмотреть", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Когда кошачий глаз установлен в режим энергосбережения, мониторинг не может быть выполнен. Переключитесь на другие режимы в настройках кошачьего глаза", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Удаленная разблокировка невозможна, если кошачий глаз установлен в режим энергосбережения. Пожалуйста, переключитесь в другой режим в настройках кошачьего глаза" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Удаленная разблокировка невозможна, если кошачий глаз установлен в режим энергосбережения. Пожалуйста, переключитесь в другой режим в настройках кошачьего глаза", + "呼叫目标": "Звони в цель.", + "管理员APP": "Приложение для администратора", + "可视门铃码": "Визуальный код дверного звонка", + "电子反锁": "Электронный анти-блокировка", + "双重认证": "Двухфакторная аутентификация", + "双锁联动": "2.1.3 двойная блокировка", + "1.用智能锁APP添加锁和网关": "1. Добавить замки и шлюзы с помощью приложения smart lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Включите функцию удаленного разблокирования замка в приложении (эта функция выключается по умолчанию). Если эта опция не доступна, блокировка не будет поддерживать Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Установите приложение Google Home и нажмите кнопку plus в левом верхнем углу" } \ No newline at end of file diff --git a/lan/lan_sk.json b/lan/lan_sk.json index 176aab1b..284c99cb 100644 --- a/lan/lan_sk.json +++ b/lan/lan_sk.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Funkcia diaľkového odomykania tohto zámku nie je povolená", "下载完成,请到相册查看": "Sťahovanie dokončené, prejdite na album view", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Keď je Cat Eye nastavený na režim úspory energie, monitorovanie nie je možné vykonať. Prepnite na iné režimy v nastaveniach Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Diaľkové odomknutie nie je možné, keď je Cat Eye nastavený do režimu úspory energie. Prepnite do iného režimu v nastaveniach Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Diaľkové odomknutie nie je možné, keď je Cat Eye nastavený do režimu úspory energie. Prepnite do iného režimu v nastaveniach Cat Eye", + "呼叫目标": "Cieľ hovoru", + "管理员APP": "Aplikácia správcu", + "可视门铃码": "Vizuálny kód zvončeka", + "电子反锁": "Elektronický protiblokovací systém", + "双重认证": "Dvojfaktorová autentifikácia", + "双锁联动": "Dvojitý zámok", + "1.用智能锁APP添加锁和网关": "1. Pridajte zámky a brány pomocou aplikácie inteligentného zámku", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Povoľte funkciu diaľkového odomykania zámku v aplikácii APP (táto funkcia je predvolene vypnutá). Ak táto možnosť nie je k dispozícii, zámok nebude podporovať Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Nainštalujte si aplikáciu Google Home a kliknite na tlačidlo plus v ľavom hornom rohu" } \ No newline at end of file diff --git a/lan/lan_sr_cyrl.json b/lan/lan_sr_cyrl.json index 6ddf1a89..3c3b8dec 100644 --- a/lan/lan_sr_cyrl.json +++ b/lan/lan_sr_cyrl.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Функција даљинског откључавања ове браве није омогућена", "下载完成,请到相册查看": "Преузимање завршено, идите на албум да видите", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Када је Цат Еие подешен на режим за уштеду енергије, праћење се не може извршити. Молимо Вас да пређете на друге режиме у подешавањима Цат Еие", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Даљинско откључавање није могуће када је Цат Еие подешен на режим за уштеду енергије. Молимо Вас да пређете на други режим у подешавањима Цат Еие" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Даљинско откључавање није могуће када је Цат Еие подешен на режим за уштеду енергије. Молимо Вас да пређете на други режим у подешавањима Цат Еие", + "呼叫目标": "Циљ позива", + "管理员APP": "Администратор АПП", + "可视门铃码": "Визуелни код звона", + "电子反锁": "Електронски против блокирања", + "双重认证": "Двофакторска аутентификација", + "双锁联动": "Двострука брава веза", + "1.用智能锁APP添加锁和网关": "1 . Додајте браве и гатеваи помоћу апликације Смарт Лоцк", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2 . Омогућите функцију даљинског откључавања браве у АПП-у (ова функција је подразумевано искључена). Ако ова опција није доступна, брава неће подржати Гоогле Хоме", + "3.安装Google Home APP,点击左上角的加号按钮": "3 . Инсталирајте апликацију Гоогле Хоме и кликните на дугме плус у горњем левом углу" } \ No newline at end of file diff --git a/lan/lan_sv.json b/lan/lan_sv.json index 27a46c37..b81f6bef 100644 --- a/lan/lan_sv.json +++ b/lan/lan_sv.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Fjärrupplåsningsfunktionen för detta lås är inte aktiverad", "下载完成,请到相册查看": "Nedladdningen är klar, gå till albumet för att se", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "När Cat Eye är inställt på energisparläge kan övervakning inte utföras. Växla till andra lägen i Cat Eye-inställningarna", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Fjärrupplåsning är inte möjlig när Cat Eye är inställt på energisparläge. Byt till ett annat läge i Cat Eye-inställningarna" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Fjärrupplåsning är inte möjlig när Cat Eye är inställt på energisparläge. Byt till ett annat läge i Cat Eye-inställningarna", + "呼叫目标": "Anropa mål", + "管理员APP": "APP för administratör", + "可视门铃码": "Visuell dörrklockakod", + "电子反锁": "Elektroniskt låsningsfritt läge", + "双重认证": "Tvåfaktorsautentisering", + "双锁联动": "Dubbel låslänkage", + "1.用智能锁APP添加锁和网关": "1. Lägg till lås och gateways med hjälp av den smarta låsappen", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Aktivera fjärrupplåsningsfunktionen för låset i APP (den här funktionen är avstängd som standard). Om det här alternativet inte är tillgängligt kommer låset inte att stödja Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installera Google Home-appen och klicka på plusknappen i det övre vänstra hörnet" } \ No newline at end of file diff --git a/lan/lan_th.json b/lan/lan_th.json index 77c4451a..0bf0f6a4 100644 --- a/lan/lan_th.json +++ b/lan/lan_th.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "ไม่เปิดใช้ฟังก์ชันการปลดล็อคระยะไกลของการล็อคนี้", "下载完成,请到相册查看": "การดาวน์โหลดเสร็จสมบูรณ์แล้วโปรดไป ที่อัลบั้มเพื่อดู", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "เมื่อตั้งค่าตาแมวให้เป็นโหมดประหยัดพลังงานการตรวจสอบจะไม่สามารถทำงานได้ โปรดเปลี่ยนไปใช้โหมดอื่น ๆ ในการตั้งค่าตาแมว", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ไม่สามารถปลดล็อคระยะไกลได้เมื่อตั้งค่าดวงตาแมวให้เป็นโหมดประหยัดพลังงาน โปรดเปลี่ยนเป็นโหมดอื่นในการตั้งค่าตาแมว" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ไม่สามารถปลดล็อคระยะไกลได้เมื่อตั้งค่าดวงตาแมวให้เป็นโหมดประหยัดพลังงาน โปรดเปลี่ยนเป็นโหมดอื่นในการตั้งค่าตาแมว", + "呼叫目标": "เรียกเป้าหมาย", + "管理员APP": "แอพผู้ดูแลระบบ", + "可视门铃码": "รหัสประตูหน้า", + "电子反锁": "ล็อคป้องกันอิเล็กทรอนิกส์", + "双重认证": "การตรวจสอบสิทธิ์สองระดับ", + "双锁联动": "ดับเบิ้ลล็อคการเชื่อมต่อ", + "1.用智能锁APP添加锁和网关": "1. เพิ่มล็อค และเกตเวย์โดยใช้แอพสมาร์ทล็อค", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. เปิดใช้งานฟังก์ชันการปลดล็อคระยะไกลของการล็อคในแอพ (ฟังก์ชันนี้ จะถูกปิดโดยค่าเริ่มต้น) หากไม่มีตัวเลือกนี้ การล็อคจะไม่สนับสนุนกูเกิ้ลโฮม", + "3.安装Google Home APP,点击左上角的加号按钮": "3. ติดตั้ง googlehome แอพ และคลิกปุ่มบวก ที่มุมบนซ้าย" } \ No newline at end of file diff --git a/lan/lan_tr.json b/lan/lan_tr.json index 58d3e84e..d09053ca 100644 --- a/lan/lan_tr.json +++ b/lan/lan_tr.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Bu kilidin uzaktan kilit açma işlevi etkin değil", "下载完成,请到相册查看": "İndirme tamamlandı, görüntülemek için lütfen albüme gidin", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Cat Eye güç tasarrufu moduna ayarlandığında izleme yapılamaz. Lütfen Cat Eye ayarlarında diğer modlara geçin", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Cat Eye güç tasarrufu moduna ayarlandığında uzaktan kilit açma mümkün değildir. Lütfen Cat Eye ayarlarında başka bir moda geçin" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Cat Eye güç tasarrufu moduna ayarlandığında uzaktan kilit açma mümkün değildir. Lütfen Cat Eye ayarlarında başka bir moda geçin", + "呼叫目标": "Çağrı hedefi", + "管理员APP": "Yönetici APP", + "可视门铃码": "Görsel kapı zili kodu", + "电子反锁": "Elektronik kilitlenme önleyici", + "双重认证": "İki faktörlü kimlik doğrulama", + "双锁联动": "Çift kilit bağlantısı", + "1.用智能锁APP添加锁和网关": "1. Akıllı kilit uygulamasını kullanarak kilitler ve ağ geçitleri ekleyin", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. APP'de kilidin uzaktan kilit açma işlevini etkinleştirin (bu işlev varsayılan olarak kapalıdır). Bu seçenek mevcut değilse, kilit Google Home'u desteklemeyecektir", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Google Home uygulamasını yükleyin ve sol üst köşedeki artı düğmesini tıklayın" } \ No newline at end of file diff --git a/lan/lan_tw.json b/lan/lan_tw.json index eb5482df..c2d9cfe6 100644 --- a/lan/lan_tw.json +++ b/lan/lan_tw.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "未開啓該鎖的遠程解鎖功能", "下载完成,请到相册查看": "下載完成,請到相冊查看", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "當“貓眼”設置爲省電模式時,無法進行監控。請在貓眼設置中切換到其他模式", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "當貓眼設置爲省電模式時,無法遠程解鎖。請在貓眼設置中切換到其他模式" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "當貓眼設置爲省電模式時,無法遠程解鎖。請在貓眼設置中切換到其他模式", + "呼叫目标": "調用目標", + "管理员APP": "管理員應用", + "可视门铃码": "可視門鈴碼", + "电子反锁": "電子防抱死裝置", + "双重认证": "雙因素身份驗證", + "双锁联动": "雙鎖聯動", + "1.用智能锁APP添加锁和网关": "1. 使用智能鎖應用程序添加鎖和網關", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. 在APP中開啓鎖的遠程開鎖功能(默認關閉)。如果這個選項不可用,鎖將不支持谷歌Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. 安裝谷歌Home應用程序並單擊左上角的加號按鈕" } \ No newline at end of file diff --git a/lan/lan_uk.json b/lan/lan_uk.json index 46af9456..426cbc1a 100644 --- a/lan/lan_uk.json +++ b/lan/lan_uk.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Функція дистанційного розблокування цього замка не ввімкнена", "下载完成,请到相册查看": "Завантаження завершено, будь ласка, перейдіть до альбому для перегляду", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Коли функцію «Котяче око» переведено в режим енергозбереження, моніторинг неможливий. Будь ласка, перейдіть на інші режими в налаштуваннях Cat Eye", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Віддалене розблокування неможливе, коли Cat Eye переведено в режим енергозбереження. Будь ласка, перейдіть в інший режим у налаштуваннях Cat Eye" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Віддалене розблокування неможливе, коли Cat Eye переведено в режим енергозбереження. Будь ласка, перейдіть в інший режим у налаштуваннях Cat Eye", + "呼叫目标": "Ціль дзвінка", + "管理员APP": "Додаток адміністратора", + "可视门铃码": "Візуальний код дверного дзвінка", + "电子反锁": "Електронний антиблокувальний засіб", + "双重认证": "Двофакторна аутентифікація", + "双锁联动": "Важіль з подвійним замком", + "1.用智能锁APP添加锁和网关": "1. Додайте замки та шлюзи за допомогою програми Smart Lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Увімкніть функцію дистанційного розблокування замка в APP (ця функція вимкнена за замовчуванням). Якщо ця опція недоступна, замок не підтримуватиме Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Встановіть програму Google Home і натисніть кнопку плюс у верхньому лівому кутку" } \ No newline at end of file diff --git a/lan/lan_ur.json b/lan/lan_ur.json index c07e27d9..4c760df9 100644 --- a/lan/lan_ur.json +++ b/lan/lan_ur.json @@ -1136,5 +1136,14 @@ "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "ری سیٹ کرنے کے بعد ، لاک کا ریموٹ کنٹرول حذف کردیا جائے گا۔ کیا آپ اسے دوبارہ ترتیب دینا چاہتے ہیں؟", "版本说明": "ورژن کی تفصیل", "网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "گیٹ وے کے چلنے کے بعد ، ری سیٹ بٹن کو 5 سیکنڈ تک دبائیں اور پکڑیں۔ جب نیلے اشارے کی روشنی چمکتی ہے تو اگلا پر کلک کریں", - "网关添加成功": "گیٹ وے نے کامیابی کے ساتھ اضافہ کیا" + "网关添加成功": "گیٹ وے نے کامیابی کے ساتھ اضافہ کیا", + "呼叫目标": "کال ہدف", + "管理员APP": "Administrator APP", + "可视门铃码": "Visual doorbell code", + "电子反锁": "الیکٹرانک اینٹی لاک", + "双重认证": "دو عوامل کی تصدیق", + "双锁联动": "ڈبل لاک لنک", + "1.用智能锁APP添加锁和网关": "1. سمارٹ لاک ایپ کا استعمال کرتے ہوئے لاک اور گیٹ وے شامل کریں", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. اے پی پی میں لاک کے ریموٹ ان لاکنگ فنکشن کو فعال کریں (یہ فنکشن ڈیفالٹ طور پر بند ہے)۔ اگر یہ آپشن دستیاب نہیں ہے تو ، لاک گوگل ہوم کو سپورٹ نہیں کرے گا۔", + "3.安装Google Home APP,点击左上角的加号按钮": "3. گوگل ہوم ایپ انسٹال کریں اور اوپری بائیں کونے میں پلس بٹن پر کلک کریں۔" } \ No newline at end of file diff --git a/lan/lan_vi.json b/lan/lan_vi.json index 8a6c76d3..1517c8cf 100644 --- a/lan/lan_vi.json +++ b/lan/lan_vi.json @@ -1136,5 +1136,14 @@ "该锁的远程开锁功能未启用": "Chức năng mở khóa từ xa của khóa này không được kích hoạt", "下载完成,请到相册查看": "Hoàn tất tải về, xin hãy đến album để xem", "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Khi mắt mèo được thiết lập để tiết kiệm điện, giám sát không thể được thực hiện. Hãy chuyển sang chế độ khác trong mắt mèo", - "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Mở khóa từ xa là không thể khi mắt mèo được thiết lập ở chế độ tiết kiệm điện. Hãy chuyển sang chế độ khác trong thiết lập mắt mèo" + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Mở khóa từ xa là không thể khi mắt mèo được thiết lập ở chế độ tiết kiệm điện. Hãy chuyển sang chế độ khác trong thiết lập mắt mèo", + "呼叫目标": "Đặt mục tiêu", + "管理员APP": "Ứng dụng quản trị viên", + "可视门铃码": "Hình ảnh chuông cửa", + "电子反锁": "Khóa chống điện tử", + "双重认证": "Chứng thực hai yếu tố", + "双锁联动": "Liên kết hai khóa", + "1.用智能锁APP添加锁和网关": "1. Thêm khoá và cổng bằng ứng dụng Smart Lock", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Kích hoạt chức năng mở khóa từ xa trong ứng dụng (chức năng này bị tắt theo mặc định). Nếu tùy chọn này không có sẵn, khóa sẽ không hỗ trợ Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Cài đặt ứng dụng Google Home và nhấn nút Plus ở góc trên bên trái" } \ No newline at end of file diff --git a/lan/lan_zh.json b/lan/lan_zh.json index 2204763f..ea9e45d4 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -1138,5 +1138,15 @@ "版本说明": "版本说明", "呼叫目标": "呼叫目标", "管理员APP": "管理员APP", + "可视门铃码": "可视门铃码", + "电子反锁": "电子反锁", + "双重认证": "双重认证", + "双锁联动": "双锁联动", + "1.用智能锁APP添加锁和网关": "1.用智能锁APP添加锁和网关", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3.安装Google Home APP,点击左上角的加号按钮", + "4.在设置页面,选择与Google协同工作": "4.在设置页面,选择与Google协同工作", + "5.搜索": "5.搜索", + ",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权", "网关添加成功": "网关添加成功" } From cd00d3159daeb2c50b3ed9f7b49df5b64e0d9ad7 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 11 Mar 2025 16:49:56 +0800 Subject: [PATCH 09/54] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mine/mineSet/google_home/google_home_page.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mine/mineSet/google_home/google_home_page.dart b/lib/mine/mineSet/google_home/google_home_page.dart index afdee0e3..1c80ccf1 100644 --- a/lib/mine/mineSet/google_home/google_home_page.dart +++ b/lib/mine/mineSet/google_home/google_home_page.dart @@ -79,7 +79,7 @@ class _GoogleHomePageState extends State { final String instructions = '${'1.用智能锁APP添加锁和网关'.tr}\n\n' '${'2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home'.tr}\n\n' '${'3.安装Google Home APP,点击左上角的加号按钮'.tr}\n\n' - '${'4.在设置页面,选择"与Google协同工作'.tr}\n\n' + '${'4.在设置页面,选择与Google协同工作'.tr}\n\n' '${'5.搜索'.tr}"${state.googleHomeData.value.actionName ?? ''}"${',并用智能锁APP的账号和密码进行授权'.tr}'; return Container( From e1b9c1868ec30245d1dda91c901524b173e33ea7 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 11 Mar 2025 16:50:23 +0800 Subject: [PATCH 10/54] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4=E6=A0=A1=E5=87=86?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lockSet/lockTime/lockTime_logic.dart | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart b/lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart index 6e2fdf36..bb2e9962 100755 --- a/lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart +++ b/lib/main/lockDetail/lockSet/lockTime/lockTime_logic.dart @@ -50,10 +50,25 @@ class LockTimeLogic extends BaseGetXController { // 有效时间 final List indate = reply.data.sublist(150, 154); - final int indateValue = (0xff & indate[0]) << 24 | + int indateValue = (0xff & indate[0]) << 24 | (0xff & indate[1]) << 16 | (0xff & indate[2]) << 8 | (0xFF & indate[3]); + // 检查时间戳是否无效或超出范围 + if (indateValue == 0xffffffff || indateValue <= 0) { + // 使用当前系统时间戳(秒) + indateValue = DateTime.now().millisecondsSinceEpoch ~/ 1000; + AppLog.log('检测到无效时间戳,使用系统时间:$indateValue'); + } + + // 验证时间戳是否在合理范围内(例如:2000年到2100年之间) + final DateTime dateTime = + DateTime.fromMillisecondsSinceEpoch(indateValue * 1000); + if (dateTime.year < 2000 || dateTime.year > 2100) { + AppLog.log('时间戳超出合理范围: $indateValue'); + indateValue = DateTime.now().millisecondsSinceEpoch ~/ 1000; + } + AppLog.log( '====================indate:$indate indateValue:$indateValue'); state.dateTime.value = DateTool().dateToYMDHNString('$indateValue'); From 6769e9af5d8adb26b2844f9440b465fedf721f09 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Tue, 11 Mar 2025 18:55:23 +0800 Subject: [PATCH 11/54] =?UTF-8?q?fix=EF=BC=9A=20=E5=9C=A8=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=BD=91=E5=85=B3=E7=95=8C=E9=9D=A2=E5=BD=93=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=87=BA=E7=BD=91=E5=85=B3=E6=97=B6=E7=BD=91=E5=85=B3?= =?UTF-8?q?=E6=8B=94=E6=8E=89=E7=94=B5=E6=BA=90=EF=BC=8C=E5=B7=A6=E4=B8=8A?= =?UTF-8?q?=E9=94=AE=E8=BF=94=E5=9B=9E=E5=86=8D=E7=82=B9=E4=B8=8B=E4=B8=80?= =?UTF-8?q?=E6=AD=A5=E5=BA=94=E6=B2=A1=E6=9C=89=E8=AF=A5=E7=BD=91=E5=85=B3?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main_local.dart | 2 +- .../addGateway/selectGateway/selectGatewayList_logic.dart | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/main_local.dart b/lib/main_local.dart index 9e30d007..bd256362 100755 --- a/lib/main_local.dart +++ b/lib/main_local.dart @@ -4,7 +4,7 @@ import 'flavors.dart'; import 'main.dart' as runner; Future main() async { - F.appFlavor = Flavor.xhj; + F.appFlavor = Flavor.sky; // AppLog.log('local调用了main函数'); await runner.main(); } diff --git a/lib/mine/gateway/addGateway/selectGateway/selectGatewayList_logic.dart b/lib/mine/gateway/addGateway/selectGateway/selectGatewayList_logic.dart index 09222b9e..3de08509 100644 --- a/lib/mine/gateway/addGateway/selectGateway/selectGatewayList_logic.dart +++ b/lib/mine/gateway/addGateway/selectGateway/selectGatewayList_logic.dart @@ -121,6 +121,7 @@ class SelectGatewayListLogic extends BaseGetXController { Future stopScanBlueList() async { // BlueManage().disconnect(); + state.devices.clear(); await BlueManage().stopScan(); } From 42d9bfd2ec530f263da8a10a4639949adf3b6015 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Wed, 12 Mar 2025 11:01:55 +0800 Subject: [PATCH 12/54] =?UTF-8?q?fix=EF=BC=9A=20=E5=9C=A8=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=BD=91=E5=85=B3=E7=95=8C=E9=9D=A2=E5=BD=93=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=87=BA=E7=BD=91=E5=85=B3=E6=97=B6=E7=BD=91=E5=85=B3?= =?UTF-8?q?=E6=8B=94=E6=8E=89=E7=94=B5=E6=BA=90=EF=BC=8C=E5=B7=A6=E4=B8=8A?= =?UTF-8?q?=E9=94=AE=E8=BF=94=E5=9B=9E=E5=86=8D=E7=82=B9=E4=B8=8B=E4=B8=80?= =?UTF-8?q?=E6=AD=A5=E5=BA=94=E6=B2=A1=E6=9C=89=E8=AF=A5=E7=BD=91=E5=85=B3?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remoteUnlocking/remoteUnlocking_page.dart | 17 ++++-- .../gatewayDetail/gatewayDetail_logic.dart | 10 ++++ .../gatewayDetail/gatewayDetail_page.dart | 2 + .../selectGetewayList_entity.dart | 58 ++++++++++++++----- lib/network/api.dart | 1 + lib/network/api_provider.dart | 8 ++- lib/network/api_repository.dart | 12 +++- pubspec.lock | 8 +++ 8 files changed, 92 insertions(+), 24 deletions(-) diff --git a/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart b/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart index 3489df75..dd061929 100755 --- a/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart +++ b/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart @@ -1,4 +1,4 @@ - +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -19,7 +19,8 @@ class RemoteUnlockingPage extends StatefulWidget { State createState() => _RemoteUnlockingPageState(); } -class _RemoteUnlockingPageState extends State with RouteAware { +class _RemoteUnlockingPageState extends State + with RouteAware { final RemoteUnlockingLogic logic = Get.put(RemoteUnlockingLogic()); final RemoteUnlockingState state = Get.find().state; @@ -62,16 +63,20 @@ class _RemoteUnlockingPageState extends State with RouteAwa ], ); }), + Padding( + padding: EdgeInsets.only(top: 20.h), + child: Text('功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。'.tr, + style: TextStyle(fontSize: 20.sp)), + ), SizedBox( height: 40.h, ), Obx(() => SubmitBtn( - btnName: state.remoteEnable.value == 1 - ? '关闭'.tr - : '开启'.tr, + btnName: state.remoteEnable.value == 1 ? '关闭'.tr : '开启'.tr, onClick: () { //全自动锁只判断是否开启远程开锁 - bool isContains = BlueManage().connectDeviceName.contains('T9A'); + bool isContains = + BlueManage().connectDeviceName.contains('T9A'); if (isContains) { logic.remoteUnlockingOpenOrClose(); } else { diff --git a/lib/mine/gateway/gatewayDetail/gatewayDetail_logic.dart b/lib/mine/gateway/gatewayDetail/gatewayDetail_logic.dart index d7487983..cde446fc 100644 --- a/lib/mine/gateway/gatewayDetail/gatewayDetail_logic.dart +++ b/lib/mine/gateway/gatewayDetail/gatewayDetail_logic.dart @@ -5,6 +5,7 @@ import '../../../login/login/entity/LoginEntity.dart'; import '../../../network/api_repository.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/showTipView.dart'; +import '../../mineSet/transferGateway/selectGetewayList_entity.dart'; import 'gatewayDetail_state.dart'; class GatewayDetailLogic extends BaseGetXController { @@ -40,4 +41,13 @@ class GatewayDetailLogic extends BaseGetXController { }); } } + + Future getGatewayDetail() async { + final GetewayInfoEntity entity = await ApiRepository.to + .getGatewayDetailData( + gatewayId: state.getewayItemData.value.gatewayId ?? 0, timeout: 60); + if (entity.errorCode!.codeIsSuccessful) { + state.getewayItemData.value = entity.data!; + } + } } diff --git a/lib/mine/gateway/gatewayDetail/gatewayDetail_page.dart b/lib/mine/gateway/gatewayDetail/gatewayDetail_page.dart index b700ba28..612aba33 100755 --- a/lib/mine/gateway/gatewayDetail/gatewayDetail_page.dart +++ b/lib/mine/gateway/gatewayDetail/gatewayDetail_page.dart @@ -84,6 +84,8 @@ class _GatewayDetailPageState extends State { action: () { Get.toNamed(Routers.gatewayConnectionLockPage, arguments: { 'gatewayId': state.getewayItemData.value.gatewayId ?? 0 + })?.then((value) { + logic.getGatewayDetail(); }); }), // CommonItem( diff --git a/lib/mine/mineSet/transferGateway/selectGetewayList_entity.dart b/lib/mine/mineSet/transferGateway/selectGetewayList_entity.dart index e115265a..b6f476e2 100755 --- a/lib/mine/mineSet/transferGateway/selectGetewayList_entity.dart +++ b/lib/mine/mineSet/transferGateway/selectGetewayList_entity.dart @@ -1,5 +1,4 @@ class GetewayDataEntity { - GetewayDataEntity( {this.errorCode, this.description, this.errorMsg, this.data}); @@ -9,6 +8,7 @@ class GetewayDataEntity { errorMsg = json['errorMsg']; data = json['data'] != null ? GetewayListData.fromJson(json['data']) : null; } + int? errorCode; String? description; String? errorMsg; @@ -27,8 +27,8 @@ class GetewayDataEntity { } class GetewayListData { - - GetewayListData({this.list, this.pageNo, this.pageSize, this.pages, this.total}); + GetewayListData( + {this.list, this.pageNo, this.pageSize, this.pages, this.total}); GetewayListData.fromJson(Map json) { if (json['list'] != null) { @@ -42,6 +42,7 @@ class GetewayListData { pages = json['pages']; total = json['total']; } + List? list; int? pageNo; int? pageSize; @@ -62,20 +63,19 @@ class GetewayListData { } class GetewayItemData { - GetewayItemData( {this.serialNumber, - this.gatewayMac, - this.gatewayName, - this.gatewayType, - this.networkName, - this.networkMac, - this.lockNum, - this.isOnline, - this.firmwareInfo, - this.needUpgrade, - this.version, - this.gatewayId}); + this.gatewayMac, + this.gatewayName, + this.gatewayType, + this.networkName, + this.networkMac, + this.lockNum, + this.isOnline, + this.firmwareInfo, + this.needUpgrade, + this.version, + this.gatewayId}); GetewayItemData.fromJson(Map json) { serialNumber = json['serialNumber']; @@ -96,6 +96,7 @@ class GetewayItemData { version = json['version']; gatewayId = json['gatewayId']; } + String? serialNumber; String? gatewayMac; String? gatewayName; @@ -130,3 +131,30 @@ class GetewayItemData { } } +class GetewayInfoEntity { + GetewayInfoEntity( + {this.errorCode, this.description, this.errorMsg, this.data}); + + GetewayInfoEntity.fromJson(Map json) { + errorCode = json['errorCode']; + description = json['description']; + errorMsg = json['errorMsg']; + data = json['data'] != null ? GetewayItemData.fromJson(json['data']) : null; + } + + int? errorCode; + String? description; + String? errorMsg; + GetewayItemData? data; + + Map toJson() { + final Map data = {}; + data['errorCode'] = errorCode; + data['description'] = description; + data['errorMsg'] = errorMsg; + if (this.data != null) { + data['data'] = this.data!.toJson(); + } + return data; + } +} diff --git a/lib/network/api.dart b/lib/network/api.dart index a1be47c2..db9ccf33 100755 --- a/lib/network/api.dart +++ b/lib/network/api.dart @@ -158,6 +158,7 @@ abstract class Api { final String gatewaykListURL = '/gateway/list'; // 网关列表 final String addGatewayURL = '/gateway/add'; // 添加网关 final String deletGatewayURL = '/gateway/delete'; // 删除网关 + final String gatewayDetailURL = '/gateway/detail'; // 网关列表 final String transferGatewayConfirmURL = '/plug/transferPlugConfirm'; // 转移网关确认 final String transferGatewayURL = '/plug/transfer'; // 转移网关 diff --git a/lib/network/api_provider.dart b/lib/network/api_provider.dart index cf7b064e..4cad97cc 100755 --- a/lib/network/api_provider.dart +++ b/lib/network/api_provider.dart @@ -1742,6 +1742,11 @@ class ApiProvider extends BaseProvider { jsonEncode({'pageNo': pageNo, 'pageSize': pageSize}), timeout: timeout); + // 获取网关详情 + Future getGatewayDetailData(int gatewayId, int timeout) => + post(gatewayDetailURL.toUrl, jsonEncode({'gatewayId': gatewayId}), + timeout: timeout); + // 添加网关 Future addGatewayNetwork( String gatewayName, @@ -1823,7 +1828,8 @@ class ApiProvider extends BaseProvider { post(getGatewayConfigURL.toUrl, jsonEncode({}), timeout: timeout); Future getGatewayConfigurationNotLoading(int timeout) => - post(getGatewayConfigURL.toUrl, jsonEncode({}), timeout: timeout,isUnShowLoading: true); + post(getGatewayConfigURL.toUrl, jsonEncode({}), + timeout: timeout, isUnShowLoading: true); Future gatewayConnectionLockListLoadData( int gatewayId, int timeout) => diff --git a/lib/network/api_repository.dart b/lib/network/api_repository.dart index c2732880..b5e09c33 100755 --- a/lib/network/api_repository.dart +++ b/lib/network/api_repository.dart @@ -496,10 +496,12 @@ class ApiRepository { final res = await apiProvider.getLockSettingInfoData(lockId); return LockSetInfoEntity.fromJson(res.body); } + // 获取所有锁设置信息(不显示加载框) Future getLockSettingInfoDataIsNotLoadingIcon( {required String lockId}) async { - final res = await apiProvider.getLockSettingInfoDataIsNotLoadingIcon(lockId); + final res = + await apiProvider.getLockSettingInfoDataIsNotLoadingIcon(lockId); return LockSetInfoEntity.fromJson(res.body); } @@ -1928,6 +1930,13 @@ class ApiRepository { return GetewayDataEntity.fromJson(res.body); } + // 获取网关详情 + Future getGatewayDetailData( + {required int gatewayId, required int timeout}) async { + final res = await apiProvider.getGatewayDetailData(gatewayId, timeout); + return GetewayInfoEntity.fromJson(res.body); + } + // 添加网关 Future gatewayDistributionNetwork( {required String gatewayName, @@ -2027,7 +2036,6 @@ class ApiRepository { return GetGatewayConfigurationEntity.fromJson(res.body); } - // 移除坏锁 Future removeBrokenLockData( {required List lockIdList}) async { diff --git a/pubspec.lock b/pubspec.lock index 3eff3ffe..9b40c4b0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1045,6 +1045,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.13" + jverify: + dependency: "direct main" + description: + name: jverify + sha256: "26d1667d8c71403b77a2620a8c618625f8b4bfc950dac285b8f35ebc5e60fa5a" + url: "https://pub.dev" + source: hosted + version: "3.0.0" leak_tracker: dependency: transitive description: From 1ca854e435e2c64d1406842fc4145d7f8a1511f4 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Wed, 12 Mar 2025 11:51:14 +0800 Subject: [PATCH 13/54] =?UTF-8?q?fix=EF=BC=9A=E7=BD=91=E5=85=B3=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E4=BF=AE=E6=94=B9=E7=9A=84=E5=BC=B9=E6=A1=86=E8=AF=B7?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E5=A7=93=E5=90=8D=E5=BA=94=E6=98=AF=E8=AF=B7?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mine/gateway/gatewayDetail/gatewayDetail_page.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/mine/gateway/gatewayDetail/gatewayDetail_page.dart b/lib/mine/gateway/gatewayDetail/gatewayDetail_page.dart index 612aba33..795f2923 100755 --- a/lib/mine/gateway/gatewayDetail/gatewayDetail_page.dart +++ b/lib/mine/gateway/gatewayDetail/gatewayDetail_page.dart @@ -42,10 +42,10 @@ class _GatewayDetailPageState extends State { action: () { ShowTipView().showTFViewAlertDialog( state.changeGatewayNameController, - '请输入姓名'.tr, - '请输入姓名'.tr, () { + '请输入名称'.tr, + '请输入名称'.tr, () { if (state.changeGatewayNameController.text.isEmpty) { - logic.showToast('请输入姓名'.tr); + logic.showToast('请输入名称'.tr); return; } Get.back(); From 2fb3c7d2b557f8c8b43492fc234afb8cc1ca63a1 Mon Sep 17 00:00:00 2001 From: liyi Date: Wed, 12 Mar 2025 14:22:56 +0800 Subject: [PATCH 14/54] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E7=94=B5=E6=9C=BA?= =?UTF-8?q?=E5=8A=9F=E7=8E=87=E6=93=8D=E4=BD=9C=E6=88=90=E5=8A=9F=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E3=80=81=E4=B8=8D=E5=9C=A8=E9=94=81=E8=BE=B9=E5=BA=94?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=93=8D=E4=BD=9C=E5=A4=B1=E8=B4=A5=E3=80=81?= =?UTF-8?q?=E6=97=A0=E7=BD=91=E7=BB=9C=E5=9C=A8=E7=82=B9=E5=87=BB=E6=97=B6?= =?UTF-8?q?=E5=BA=94=E6=8F=90=E7=A4=BA=E7=BD=91=E7=BB=9C=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lockSet/motorPower/motorPower_logic.dart | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/main/lockDetail/lockSet/motorPower/motorPower_logic.dart b/lib/main/lockDetail/lockSet/motorPower/motorPower_logic.dart index 44b72e64..79f860ea 100755 --- a/lib/main/lockDetail/lockSet/motorPower/motorPower_logic.dart +++ b/lib/main/lockDetail/lockSet/motorPower/motorPower_logic.dart @@ -30,9 +30,10 @@ class MotorPowerLogic extends BaseGetXController { state.lockSetInfoData.value.lockSettingInfo!.openDirectionValue = state.motorTorsion.value; - eventBus - .fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value)); - showToast('操作成功'.tr); + showToast('操作成功'.tr, something: () { + eventBus + .fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value)); + }); } } @@ -80,6 +81,7 @@ class MotorPowerLogic extends BaseGetXController { switch (status) { case 0x00: //成功 + cancelBlueConnetctToastTimer(); _setLockSetGeneralSetting(); break; case 0x06: @@ -123,6 +125,10 @@ class MotorPowerLogic extends BaseGetXController { // 设置支持功能(带参数) Future sendOpenDoorDirection() async { + showEasyLoading(); + showBlueConnetctToastTimer(action: () { + dismissEasyLoading(); + }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { if (connectionState == BluetoothConnectionState.connected) { @@ -149,6 +155,10 @@ class MotorPowerLogic extends BaseGetXController { needAuthor: 1, publicKey: getPublicKeyList, privateKey: getPrivateKeyList); + } else if (connectionState == BluetoothConnectionState.disconnected) { + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + showBlueConnetctToast(); } }); } From 794bf8cf1127a9c15a0775b231b9ea3bc68e34a0 Mon Sep 17 00:00:00 2001 From: liyi Date: Wed, 12 Mar 2025 17:31:54 +0800 Subject: [PATCH 15/54] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=97=B6=E4=B8=80=E7=9B=B4=E8=BD=AC=E5=9C=88?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../doorLockLog/doorLockLog_logic.dart | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart index 052ac7e8..4999b8ed 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_logic.dart @@ -54,9 +54,11 @@ class DoorLockLogLogic extends BaseGetXController { switch (status) { case 0x00: + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); //成功 final int dataLength = (reply.data[5] << 8) + reply.data[6]; - // AppLog.log("dataLength:$dataLength"); + AppLog.log("dataLength:$dataLength"); // var dataLength = reply.data[5]; if (dataLength > 0) { reply.data.removeRange(0, 7); @@ -108,6 +110,8 @@ class DoorLockLogLogic extends BaseGetXController { state.ifHaveNext = false; } lockRecordUploadData(uploadList); + } else { + showToast('暂无最新记录'.tr); } break; case 0x06: @@ -117,6 +121,7 @@ class DoorLockLogLogic extends BaseGetXController { default: //失败 dismissEasyLoading(); + cancelBlueConnetctToastTimer(); break; } } @@ -148,30 +153,23 @@ class DoorLockLogLogic extends BaseGetXController { ).toString(); showEasyLoading(); - showBlueConnetctToastTimer( - isShowBlueConnetctToast: true, - action: () async { - cancelBlueConnetctToastTimer(); + showBlueConnetctToastTimer(action: () async { + dismissEasyLoading(); + final String getMobile = (await Storage.getMobile())!; + ApmHelper.instance.trackEvent('check_doorLockLog', { + 'lockName': state.keyInfos.value.lockName!, + 'account': + getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date': DateTool().getNowDateWithType(1), + 'open_lock_result': '超时', + }); - final String getMobile = (await Storage.getMobile())!; - ApmHelper.instance.trackEvent('check_doorLockLog', { - 'lockName': state.keyInfos.value.lockName!, - 'account': - getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, - 'date': DateTool().getNowDateWithType(1), - 'open_lock_result': '超时', - }); - - BuglyTool.uploadException( - message: '查询锁记录超时-查询锁记录失败', - detail: - '添加密码超时,查询锁记录失败--senderReferEventRecordTimeCommand:$command', - eventStr: '查询锁记录事件超时', - upload: true); - if (state.isLockReceiveResponse == false) { - dismissEasyLoading(); - } - }); + BuglyTool.uploadException( + message: '查询锁记录超时-查询锁记录失败', + detail: '添加密码超时,查询锁记录失败--senderReferEventRecordTimeCommand:$command', + eventStr: '查询锁记录事件超时', + upload: true); + }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionStateState) async { if (connectionStateState == BluetoothConnectionState.connected) { @@ -303,20 +301,22 @@ class DoorLockLogLogic extends BaseGetXController { lockId: state.keyInfos.value.lockId.toString(), records: list); final String getMobile = (await Storage.getMobile())!; if (entity.errorCode!.codeIsSuccessful) { - if (state.ifHaveNext == true) { - showEasyLoading(); - getLockRecordLastUploadDataTime(); - } else { - ApmHelper.instance.trackEvent('check_doorLockLog', { - 'lockName': state.keyInfos.value.lockName!, - 'account': - getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, - 'date': DateTool().getNowDateWithType(1), - 'open_lock_result': '成功', - }); - mockNetworkDataRequest(isRefresh: true); - } - dismissEasyLoading(); + showToast('操作成功'.tr, something: () async { + dismissEasyLoading(); + if (state.ifHaveNext == true) { + showEasyLoading(); + getLockRecordLastUploadDataTime(); + } else { + ApmHelper.instance.trackEvent('check_doorLockLog', { + 'lockName': state.keyInfos.value.lockName!, + 'account': + getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date': DateTool().getNowDateWithType(1), + 'open_lock_result': '成功', + }); + mockNetworkDataRequest(isRefresh: true); + } + }); } else { ApmHelper.instance.trackEvent('check_doorLockLog', { 'lockName': state.keyInfos.value.lockName!, From fcdd09fcb2448d0579bbbcf816e1a842311b96f3 Mon Sep 17 00:00:00 2001 From: liyi Date: Wed, 12 Mar 2025 17:32:26 +0800 Subject: [PATCH 16/54] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4IOS=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E5=88=86=E4=BA=AB=E9=80=89=E6=A8=A1=E6=9D=BF=E5=90=8E?= =?UTF-8?q?=E5=92=8C=E7=94=B5=E5=AD=90=E9=92=A5=E5=8C=99=E7=9F=AD=E4=BF=A1?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E9=94=AE=E7=9B=98=E6=97=A0=E6=B3=95=E6=94=B6?= =?UTF-8?q?=E8=B5=B7=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sendEmailNotification/sendEmailNotification_page.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/main/lockDetail/electronicKey/sendEmailNotification/sendEmailNotification_page.dart b/lib/main/lockDetail/electronicKey/sendEmailNotification/sendEmailNotification_page.dart index 90e4c33e..06efc928 100755 --- a/lib/main/lockDetail/electronicKey/sendEmailNotification/sendEmailNotification_page.dart +++ b/lib/main/lockDetail/electronicKey/sendEmailNotification/sendEmailNotification_page.dart @@ -95,6 +95,9 @@ class _SendEmailNotificationPageState extends State { maxLength: 1000, textAlign: TextAlign.start, controller: state.templateContentController, + keyboardType: TextInputType.multiline, // 多行文本键盘类型 + textInputAction: TextInputAction.done, // 键盘完成按钮 + onEditingComplete: () => FocusScope.of(context).unfocus(), // 点击完成 style: TextStyle( color: Colors.black, fontSize: 22.sp, From 0cdaa26fe5112d748c44b4a87e095dfb6d622b51 Mon Sep 17 00:00:00 2001 From: liyi Date: Wed, 12 Mar 2025 17:42:02 +0800 Subject: [PATCH 17/54] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4image=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E4=B8=8B=E5=AF=B9=E8=AE=B2=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/talkView/talk_view_logic.dart | 256 +++++++++++++++--- .../views/talkView/talk_view_page.dart | 24 +- .../views/talkView/talk_view_state.dart | 3 + 3 files changed, 228 insertions(+), 55 deletions(-) diff --git a/lib/talk/starChart/views/talkView/talk_view_logic.dart b/lib/talk/starChart/views/talkView/talk_view_logic.dart index 71473bee..111741e3 100644 --- a/lib/talk/starChart/views/talkView/talk_view_logic.dart +++ b/lib/talk/starChart/views/talkView/talk_view_logic.dart @@ -38,17 +38,25 @@ class TalkViewLogic extends BaseGetXController { final LockDetailState lockDetailState = Get.put(LockDetailLogic()).state; Timer? _syncTimer; // 音视频播放刷新率定时器 Timer? _audioTimer; // 音视频播放刷新率定时器 + Timer? _networkQualityTimer; // 网络质量监测定时器 + int _startTime = 0; // 开始播放时间戳,用于判断帧数据中的时间戳位置 int bufferSize = 40; // 缓冲区大小(以帧为单位) int audioBufferSize = 500; // 缓冲区大小(以帧为单位) + // 帧率监控相关 + final List _lastFewFps = []; // 存储最近的帧率数据 - int frameIntervalMs = 45; // 初始帧间隔设置为45毫秒(约22FPS) + int frameIntervalMs = 83; // 初始帧间隔设置为83毫秒(12FPS) int audioFrameIntervalMs = 20; // 初始帧间隔设置为45毫秒(约22FPS) - int minFrameIntervalMs = 30; // 最小帧间隔(约33 FPS) - int maxFrameIntervalMs = 100; // 最大帧间隔(约1 FPS) + int minFrameIntervalMs = 83; // 最小帧间隔(12 FPS) + int maxFrameIntervalMs = 166; // 最大帧间隔(约6 FPS) // 定义音频帧缓冲和发送函数 final List _bufferedAudioFrames = []; + // 在类的开始处添加缓存相关变量 + final int maxImageCacheCount = 40; // 最大图片缓存数量 + final Map _imageCache = {}; + /// 初始化音频播放器 void _initFlutterPcmSound() { const int sampleRate = 8000; @@ -150,63 +158,205 @@ class TalkViewLogic extends BaseGetXController { /// 播放视频数据 void _playVideoData(TalkData talkData) async { - state.listData.value = Uint8List.fromList(talkData.content); + try { + // 计算当前帧的哈希值作为缓存key + String cacheKey = talkData.content.hashCode.toString(); + + // 检查缓存 + if (_imageCache.containsKey(cacheKey)) { + // 使用缓存的解码图片 + state.currentImage.value = _imageCache[cacheKey]; + } else { + // 将 List 转换为 Uint8List + final Uint8List uint8Data = Uint8List.fromList(talkData.content); + // 在后台线程解码图片 + ui.Image? image = await decodeImageFromList(uint8Data); + + // 缓存管理:如果缓存太大则移除最早的项 + if (_imageCache.length >= maxImageCacheCount) { + _imageCache.remove(_imageCache.keys.first); + } + + // 添加到缓存 + _imageCache[cacheKey] = image; + state.currentImage.value = image; + } + + // 更新显示数据 + state.listData.value = Uint8List.fromList(talkData.content); + } catch (e) { + print('视频帧解码错误: $e'); + } + // state.listData.value = Uint8List.fromList(talkData.content); } /// 启动播放 void _startPlayback() { Future.delayed(Duration(milliseconds: 800), () { + // 添加网络质量监测 + _networkQualityTimer ??= + Timer.periodic(const Duration(seconds: 5), _checkNetworkQuality); _startTime = DateTime.now().millisecondsSinceEpoch; _syncTimer ??= Timer.periodic(Duration(milliseconds: frameIntervalMs), (timer) { // 动态调整帧间隔 _adjustFrameInterval(); + // 监控帧率稳定性 + _monitorFrameStability(); }); }); } /// 动态调整帧间隔 void _adjustFrameInterval() { - int newFrameIntervalMs = frameIntervalMs; - if (state.videoBuffer.length < 10 && frameIntervalMs < maxFrameIntervalMs) { - // 如果缓冲区较小且帧间隔小于最大值,则增加帧间隔 - frameIntervalMs += 5; - } else if (state.videoBuffer.length > 20 && - frameIntervalMs > minFrameIntervalMs) { - // 如果缓冲区较大且帧间隔大于最小值,则减少帧间隔 - frameIntervalMs -= 5; + // 计算目标帧间隔 + int targetInterval = _calculateTargetInterval(); + + // 平滑过渡到目标帧率,避免突变 + if (frameIntervalMs != targetInterval) { + // 每次最多调整2ms,使变化更平滑 + frameIntervalMs += (targetInterval > frameIntervalMs) ? 2 : -2; + + // 确保在合理范围内 + frameIntervalMs = + frameIntervalMs.clamp(minFrameIntervalMs, maxFrameIntervalMs); + + // 只在帧间隔变化超过阈值时才重建定时器 + if ((frameIntervalMs - targetInterval).abs() >= 5) { + _rebuildTimers(); + } } - // 只有在帧间隔发生变化时才重建定时器 - if (newFrameIntervalMs != frameIntervalMs) { - frameIntervalMs = newFrameIntervalMs; - // 取消旧的定时器 - _syncTimer?.cancel(); - _syncTimer = - Timer.periodic(Duration(milliseconds: frameIntervalMs), (timer) { - // 播放视频帧 - _playVideoFrames(); - }); + // int newFrameIntervalMs = frameIntervalMs; + // if (state.videoBuffer.length < 10 && frameIntervalMs < maxFrameIntervalMs) { + // // 如果缓冲区较小且帧间隔小于最大值,则增加帧间隔 + // frameIntervalMs += 5; + // } else if (state.videoBuffer.length > 20 && + // frameIntervalMs > minFrameIntervalMs) { + // // 如果缓冲区较大且帧间隔大于最小值,则减少帧间隔 + // frameIntervalMs -= 5; + // } + // // 只有在帧间隔发生变化时才重建定时器 + // if (newFrameIntervalMs != frameIntervalMs) { + // frameIntervalMs = newFrameIntervalMs; + // // 取消旧的定时器 + // _syncTimer?.cancel(); + // _syncTimer = + // Timer.periodic(Duration(milliseconds: frameIntervalMs), (timer) { + // // 播放视频帧 + // _playVideoFrames(); + // }); + // + // _audioTimer?.cancel(); + // _audioTimer = + // Timer.periodic(Duration(milliseconds: audioFrameIntervalMs), (timer) { + // final currentTime = DateTime.now().millisecondsSinceEpoch; + // final elapsedTime = currentTime - _startTime; + // + // // 播放合适的音频帧 + // if (state.audioBuffer.isNotEmpty && + // state.audioBuffer.first.durationMs <= elapsedTime) { + // // 判断音频开关是否打开 + // if (state.isOpenVoice.value) { + // _playAudioData(state.audioBuffer.removeAt(0)); + // } else { + // // 如果不播放音频,只从缓冲区中读取数据,但不移除 + // // 你可以根据需要调整此处逻辑,例如保留缓冲区的最大长度,防止无限增长 + // // 仅移除缓冲区数据但不播放音频,确保音频也是实时更新的 + // state.audioBuffer.removeAt(0); + // } + // } + // }); + // } + } - _audioTimer?.cancel(); - _audioTimer = - Timer.periodic(Duration(milliseconds: audioFrameIntervalMs), (timer) { - final currentTime = DateTime.now().millisecondsSinceEpoch; - final elapsedTime = currentTime - _startTime; + /// 监控帧率稳定性 + void _monitorFrameStability() { + const stabilityThreshold = 5; // 帧率波动阈值 + final currentFps = 1000 / frameIntervalMs; - // 播放合适的音频帧 - if (state.audioBuffer.isNotEmpty && - state.audioBuffer.first.durationMs <= elapsedTime) { - // 判断音频开关是否打开 - if (state.isOpenVoice.value) { - _playAudioData(state.audioBuffer.removeAt(0)); - } else { - // 如果不播放音频,只从缓冲区中读取数据,但不移除 - // 你可以根据需要调整此处逻辑,例如保留缓冲区的最大长度,防止无限增长 - // 仅移除缓冲区数据但不播放音频,确保音频也是实时更新的 - state.audioBuffer.removeAt(0); - } - } - }); + if (_lastFewFps.length >= 10) { + _lastFewFps.removeAt(0); + } + _lastFewFps.add(currentFps); + + // 计算帧率标准差 + if (_lastFewFps.length >= 5) { + double mean = _lastFewFps.reduce((a, b) => a + b) / _lastFewFps.length; + double variance = + _lastFewFps.map((fps) => pow(fps - mean, 2)).reduce((a, b) => a + b) / + _lastFewFps.length; + double stdDev = sqrt(variance); + + // 如果帧率波动过大,采取平滑措施 + if (stdDev > stabilityThreshold) { + _smoothFrameRate(mean); + } + } + } + + /// 检查网络质量 + void _checkNetworkQuality(Timer timer) { + final bufferHealth = state.videoBuffer.length / bufferSize; + + if (bufferHealth < 0.3) { + // 缓冲区不足30% + // 降低帧率以适应网络状况 + frameIntervalMs = min(frameIntervalMs + 10, maxFrameIntervalMs); + _rebuildTimers(); + } else if (bufferHealth > 0.7) { + // 缓冲区超过70% + // 提高帧率以提供更好体验 + frameIntervalMs = max(frameIntervalMs - 5, minFrameIntervalMs); + _rebuildTimers(); + } + } + + /// 计算目标帧间隔 + int _calculateTargetInterval() { + const int optimalBufferSize = 15; // 理想的缓冲区大小 + const int bufferTolerance = 5; // 缓冲区容差 + + if (state.videoBuffer.length < optimalBufferSize - bufferTolerance) { + // 缓冲区过小,降低帧率 + return (frameIntervalMs * 1.2).round(); + } else if (state.videoBuffer.length > optimalBufferSize + bufferTolerance) { + // 缓冲区过大,提高帧率 + return (frameIntervalMs * 0.8).round(); + } + return frameIntervalMs; + } + + /// 重建定时器 + void _rebuildTimers() { + // 取消现有定时器 + _syncTimer?.cancel(); + _audioTimer?.cancel(); + + // 创建新的视频定时器 + _syncTimer = + Timer.periodic(Duration(milliseconds: frameIntervalMs), (timer) { + _playVideoFrames(); + }); + + // 创建新的音频定时器,使用固定间隔 + _audioTimer = + Timer.periodic(Duration(milliseconds: audioFrameIntervalMs), (timer) { + _processAudioFrame(); + }); + } + + /// 处理音频帧 + void _processAudioFrame() { + final currentTime = DateTime.now().millisecondsSinceEpoch; + final elapsedTime = currentTime - _startTime; + + while (state.audioBuffer.isNotEmpty && + state.audioBuffer.first.durationMs <= elapsedTime) { + if (state.isOpenVoice.value) { + _playAudioData(state.audioBuffer.removeAt(0)); + } else { + state.audioBuffer.removeAt(0); + } } } @@ -404,6 +554,24 @@ class TalkViewLogic extends BaseGetXController { requestPermissions(); } + /// 平滑帧率 + void _smoothFrameRate(double targetFps) { + // 计算目标帧间隔 + int targetInterval = (1000 / targetFps).round(); + + // 使用加权平均来平滑过渡 + double weight = 0.3; // 权重因子,可以根据需要调整 + frameIntervalMs = + (frameIntervalMs * (1 - weight) + targetInterval * weight).round(); + + // 确保帧间隔在合理范围内 + frameIntervalMs = + frameIntervalMs.clamp(minFrameIntervalMs, maxFrameIntervalMs); + + // 重建定时器 + _rebuildTimers(); + } + @override void onClose() { _stopPlayG711Data(); // 停止播放音频 @@ -416,7 +584,13 @@ class TalkViewLogic extends BaseGetXController { _audioTimer = null; // 释放定时器引用 state.oneMinuteTimeTimer?.cancel(); state.oneMinuteTimeTimer = null; + // 添加新的清理代码 + _networkQualityTimer?.cancel(); + _lastFewFps.clear(); stopProcessingAudio(); + // 清理图片缓存 + _imageCache.clear(); + super.onClose(); } diff --git a/lib/talk/starChart/views/talkView/talk_view_page.dart b/lib/talk/starChart/views/talkView/talk_view_page.dart index 2059d0ac..021d1616 100644 --- a/lib/talk/starChart/views/talkView/talk_view_page.dart +++ b/lib/talk/starChart/views/talkView/talk_view_page.dart @@ -133,20 +133,16 @@ class _TalkViewPageState extends State child: SizedBox.expand( child: RotatedBox( quarterTurns: -1, - child: Image.memory( - state.listData.value, - width: ScreenUtil().scaleWidth, - height: ScreenUtil().scaleHeight, - gaplessPlayback: true, - fit: BoxFit.cover, - filterQuality: FilterQuality.high, - errorBuilder: ( - BuildContext context, - Object error, - StackTrace? stackTrace, - ) { - return Container(color: Colors.transparent); - }, + child: Obx( + () => state.currentImage.value != null + ? RawImage( + image: state.currentImage.value, + width: ScreenUtil().scaleWidth, + height: ScreenUtil().scaleHeight, + fit: BoxFit.cover, + filterQuality: FilterQuality.high, + ) + : Container(color: Colors.transparent), ), ), ), diff --git a/lib/talk/starChart/views/talkView/talk_view_state.dart b/lib/talk/starChart/views/talkView/talk_view_state.dart index 25538093..66974032 100644 --- a/lib/talk/starChart/views/talkView/talk_view_state.dart +++ b/lib/talk/starChart/views/talkView/talk_view_state.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'dart:typed_data'; +import 'dart:ui' as ui; import 'package:flutter/material.dart'; import 'package:flutter_voice_processor/flutter_voice_processor.dart'; @@ -89,4 +90,6 @@ class TalkViewState { RxBool isLongPressing = false.obs; // 旋转角度(以弧度为单位) RxBool hasAudioData = false.obs; // 是否有音频数据 RxInt lastAudioTimestamp = 0.obs; // 最后接收到的音频数据的时间戳 + // 添加图片状态变量 + final Rx currentImage = Rx(null); } From fc23d8f8513ba10266d4f0e32c19e3087e40d1dc Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 13 Mar 2025 13:38:59 +0800 Subject: [PATCH 18/54] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4=E5=AF=B9=E8=AE=B2?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E6=95=B0=E6=8D=AE=E7=BC=93=E5=86=B2=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/talkView/talk_view_logic.dart | 414 ++++++------------ .../views/talkView/talk_view_state.dart | 1 - 2 files changed, 146 insertions(+), 269 deletions(-) diff --git a/lib/talk/starChart/views/talkView/talk_view_logic.dart b/lib/talk/starChart/views/talkView/talk_view_logic.dart index 111741e3..63fbafc7 100644 --- a/lib/talk/starChart/views/talkView/talk_view_logic.dart +++ b/lib/talk/starChart/views/talkView/talk_view_logic.dart @@ -36,25 +36,22 @@ class TalkViewLogic extends BaseGetXController { final TalkViewState state = TalkViewState(); final LockDetailState lockDetailState = Get.put(LockDetailLogic()).state; - Timer? _syncTimer; // 音视频播放刷新率定时器 - Timer? _audioTimer; // 音视频播放刷新率定时器 - Timer? _networkQualityTimer; // 网络质量监测定时器 - int _startTime = 0; // 开始播放时间戳,用于判断帧数据中的时间戳位置 - int bufferSize = 40; // 缓冲区大小(以帧为单位) - int audioBufferSize = 500; // 缓冲区大小(以帧为单位) - // 帧率监控相关 - final List _lastFewFps = []; // 存储最近的帧率数据 + final int minBufferSize = 2; // 最小缓冲2帧,约166ms + final int maxBufferSize = 8; // 最大缓冲8帧,约666ms + int bufferSize = 3; // 初始化为默认大小 + // 修改音频相关的成员变量 + final int minAudioBufferSize = 1; // 音频最小缓冲1帧 + final int maxAudioBufferSize = 3; // 音频最大缓冲3帧 + int audioBufferSize = 2; // 音频默认缓冲2帧 + + // 添加开始时间记录 + int _startTime = 0; // 开始播放时间戳 + bool _isFirstFrame = true; // 是否是第一帧 - int frameIntervalMs = 83; // 初始帧间隔设置为83毫秒(12FPS) - int audioFrameIntervalMs = 20; // 初始帧间隔设置为45毫秒(约22FPS) - int minFrameIntervalMs = 83; // 最小帧间隔(12 FPS) - int maxFrameIntervalMs = 166; // 最大帧间隔(约6 FPS) // 定义音频帧缓冲和发送函数 final List _bufferedAudioFrames = []; - // 在类的开始处添加缓存相关变量 - final int maxImageCacheCount = 40; // 最大图片缓存数量 final Map _imageCache = {}; /// 初始化音频播放器 @@ -91,24 +88,153 @@ class TalkViewLogic extends BaseGetXController { void _startListenTalkData() { state.talkDataRepository.talkDataStream.listen((TalkData talkData) async { final contentType = talkData.contentType; + final currentTime = DateTime.now().millisecondsSinceEpoch; + + // 第一帧到达时记录开始时间 + if (_isFirstFrame) { + _startTime = currentTime; + _isFirstFrame = false; + } + // 判断数据类型,进行分发处理 switch (contentType) { case TalkData_ContentTypeE.G711: - if (state.audioBuffer.length >= audioBufferSize) { + if (state.audioBuffer.length >= bufferSize) { state.audioBuffer.removeAt(0); // 丢弃最旧的数据 } state.audioBuffer.add(talkData); // 添加新数据 + // 添加音频播放逻辑,与视频类似 + _playAudioFrames(); break; case TalkData_ContentTypeE.Image: + // 计算实际延迟:(当前系统时间 - 开始时间) - 帧的预期播放时间 + final expectedTime = _startTime + talkData.durationMs; + final videoDelay = currentTime - expectedTime; + // 动态调整缓冲区 + _adjustBufferSize(videoDelay); + // 然后添加到播放缓冲区 if (state.videoBuffer.length >= bufferSize) { - state.videoBuffer.removeAt(0); // 丢弃最旧的数据 + state.videoBuffer.removeAt(0); } - state.videoBuffer.add(talkData); // 添加新数据 + state.videoBuffer.add(talkData); + // 先进行解码和缓存 + await _decodeAndCacheFrame(talkData); + // 最后尝试播放 + _playVideoFrames(); break; } }); } + // 修改:视频帧播放逻辑 + void _playVideoFrames() { + // 如果缓冲区为空或未达到目标大小,不进行播放 + if (state.videoBuffer.isEmpty || state.videoBuffer.length < bufferSize) { + // AppLog.log('📊 缓冲中 - 当前缓冲区大小: ${state.videoBuffer.length}/${bufferSize}'); + return; + } + // 找出时间戳最小的帧(最旧的帧) + TalkData? oldestFrame; + int oldestIndex = -1; + for (int i = 0; i < state.videoBuffer.length; i++) { + if (oldestFrame == null || + state.videoBuffer[i].durationMs < oldestFrame.durationMs) { + oldestFrame = state.videoBuffer[i]; + oldestIndex = i; + } + } + // 确保找到了有效帧 + if (oldestFrame != null && oldestIndex != -1) { + final cacheKey = oldestFrame.content.hashCode.toString(); + + // 使用缓存的解码图片更新显示 + if (_imageCache.containsKey(cacheKey)) { + state.currentImage.value = _imageCache[cacheKey]; + state.listData.value = Uint8List.fromList(oldestFrame.content); + state.videoBuffer.removeAt(oldestIndex); // 移除已播放的帧 + + // AppLog.log('🎬 播放帧 - 缓冲区剩余: ${state.videoBuffer.length}/${bufferSize}, ' + // '播放延迟: ${currentTime - oldestFrame.durationMs}ms, ' + // '帧时间戳: ${oldestFrame.durationMs}'); + } else { + // AppLog.log('⚠️ 帧未找到缓存 - Key: $cacheKey'); + state.videoBuffer.removeAt(oldestIndex); // 移除无法播放的帧 + } + } + } + + // 新增:音频帧播放逻辑 + void _playAudioFrames() { + // 如果缓冲区为空或未达到目标大小,不进行播放 + // 音频缓冲区要求更小,以减少延迟 + if (state.audioBuffer.isEmpty || + state.audioBuffer.length < audioBufferSize) { + return; + } + + // 找出时间戳最小的音频帧 + TalkData? oldestFrame; + int oldestIndex = -1; + for (int i = 0; i < state.audioBuffer.length; i++) { + if (oldestFrame == null || + state.audioBuffer[i].durationMs < oldestFrame.durationMs) { + oldestFrame = state.audioBuffer[i]; + oldestIndex = i; + } + } + + // 确保找到了有效帧 + if (oldestFrame != null && oldestIndex != -1) { + if (state.isOpenVoice.value) { + // 播放音频 + _playAudioData(oldestFrame); + } + state.audioBuffer.removeAt(oldestIndex); + } + } + + // 新增:解码和缓存帧的方法 + Future _decodeAndCacheFrame(TalkData talkData) async { + try { + String cacheKey = talkData.content.hashCode.toString(); + + // 如果该帧还没有被缓存,则进行解码和缓存 + if (!_imageCache.containsKey(cacheKey)) { + final Uint8List uint8Data = Uint8List.fromList(talkData.content); + final ui.Image image = await decodeImageFromList(uint8Data); + + // 管理缓存大小 + if (_imageCache.length >= bufferSize) { + _imageCache.remove(_imageCache.keys.first); + } + + // 添加到缓存 + _imageCache[cacheKey] = image; + + // AppLog.log('📥 缓存新帧 - 缓存数: ${_imageCache.length}, Key: $cacheKey'); + } + } catch (e) { + AppLog.log('❌ 帧解码错误: $e'); + } + } + + // 新增:动态调整缓冲区大小的方法 + void _adjustBufferSize(int delay) { + const int delayThresholdHigh = 250; // 高延迟阈值(约3帧的时间) + const int delayThresholdLow = 166; // 低延迟阈值(约2帧的时间) + const int adjustInterval = 1; // 每次调整1帧 + + if (delay > delayThresholdHigh && bufferSize < maxBufferSize) { + // 延迟较大,增加缓冲区 + bufferSize = min(bufferSize + adjustInterval, maxBufferSize); + AppLog.log('📈 增加缓冲区 - 当前大小: $bufferSize, 延迟: ${delay}ms'); + } else if (delay < delayThresholdLow && bufferSize > minBufferSize) { + // 延迟较小,减少缓冲区 + bufferSize = max(bufferSize - adjustInterval, minBufferSize); + AppLog.log('📉 减少缓冲区 - 当前大小: $bufferSize, 延迟: ${delay}ms'); + } + } + /// 监听对讲状态 void _startListenTalkStatus() { state.startChartTalkStatus.statusStream.listen((talkStatus) { @@ -156,231 +282,6 @@ class TalkViewLogic extends BaseGetXController { } } - /// 播放视频数据 - void _playVideoData(TalkData talkData) async { - try { - // 计算当前帧的哈希值作为缓存key - String cacheKey = talkData.content.hashCode.toString(); - - // 检查缓存 - if (_imageCache.containsKey(cacheKey)) { - // 使用缓存的解码图片 - state.currentImage.value = _imageCache[cacheKey]; - } else { - // 将 List 转换为 Uint8List - final Uint8List uint8Data = Uint8List.fromList(talkData.content); - // 在后台线程解码图片 - ui.Image? image = await decodeImageFromList(uint8Data); - - // 缓存管理:如果缓存太大则移除最早的项 - if (_imageCache.length >= maxImageCacheCount) { - _imageCache.remove(_imageCache.keys.first); - } - - // 添加到缓存 - _imageCache[cacheKey] = image; - state.currentImage.value = image; - } - - // 更新显示数据 - state.listData.value = Uint8List.fromList(talkData.content); - } catch (e) { - print('视频帧解码错误: $e'); - } - // state.listData.value = Uint8List.fromList(talkData.content); - } - - /// 启动播放 - void _startPlayback() { - Future.delayed(Duration(milliseconds: 800), () { - // 添加网络质量监测 - _networkQualityTimer ??= - Timer.periodic(const Duration(seconds: 5), _checkNetworkQuality); - _startTime = DateTime.now().millisecondsSinceEpoch; - _syncTimer ??= - Timer.periodic(Duration(milliseconds: frameIntervalMs), (timer) { - // 动态调整帧间隔 - _adjustFrameInterval(); - // 监控帧率稳定性 - _monitorFrameStability(); - }); - }); - } - - /// 动态调整帧间隔 - void _adjustFrameInterval() { - // 计算目标帧间隔 - int targetInterval = _calculateTargetInterval(); - - // 平滑过渡到目标帧率,避免突变 - if (frameIntervalMs != targetInterval) { - // 每次最多调整2ms,使变化更平滑 - frameIntervalMs += (targetInterval > frameIntervalMs) ? 2 : -2; - - // 确保在合理范围内 - frameIntervalMs = - frameIntervalMs.clamp(minFrameIntervalMs, maxFrameIntervalMs); - - // 只在帧间隔变化超过阈值时才重建定时器 - if ((frameIntervalMs - targetInterval).abs() >= 5) { - _rebuildTimers(); - } - } - // int newFrameIntervalMs = frameIntervalMs; - // if (state.videoBuffer.length < 10 && frameIntervalMs < maxFrameIntervalMs) { - // // 如果缓冲区较小且帧间隔小于最大值,则增加帧间隔 - // frameIntervalMs += 5; - // } else if (state.videoBuffer.length > 20 && - // frameIntervalMs > minFrameIntervalMs) { - // // 如果缓冲区较大且帧间隔大于最小值,则减少帧间隔 - // frameIntervalMs -= 5; - // } - // // 只有在帧间隔发生变化时才重建定时器 - // if (newFrameIntervalMs != frameIntervalMs) { - // frameIntervalMs = newFrameIntervalMs; - // // 取消旧的定时器 - // _syncTimer?.cancel(); - // _syncTimer = - // Timer.periodic(Duration(milliseconds: frameIntervalMs), (timer) { - // // 播放视频帧 - // _playVideoFrames(); - // }); - // - // _audioTimer?.cancel(); - // _audioTimer = - // Timer.periodic(Duration(milliseconds: audioFrameIntervalMs), (timer) { - // final currentTime = DateTime.now().millisecondsSinceEpoch; - // final elapsedTime = currentTime - _startTime; - // - // // 播放合适的音频帧 - // if (state.audioBuffer.isNotEmpty && - // state.audioBuffer.first.durationMs <= elapsedTime) { - // // 判断音频开关是否打开 - // if (state.isOpenVoice.value) { - // _playAudioData(state.audioBuffer.removeAt(0)); - // } else { - // // 如果不播放音频,只从缓冲区中读取数据,但不移除 - // // 你可以根据需要调整此处逻辑,例如保留缓冲区的最大长度,防止无限增长 - // // 仅移除缓冲区数据但不播放音频,确保音频也是实时更新的 - // state.audioBuffer.removeAt(0); - // } - // } - // }); - // } - } - - /// 监控帧率稳定性 - void _monitorFrameStability() { - const stabilityThreshold = 5; // 帧率波动阈值 - final currentFps = 1000 / frameIntervalMs; - - if (_lastFewFps.length >= 10) { - _lastFewFps.removeAt(0); - } - _lastFewFps.add(currentFps); - - // 计算帧率标准差 - if (_lastFewFps.length >= 5) { - double mean = _lastFewFps.reduce((a, b) => a + b) / _lastFewFps.length; - double variance = - _lastFewFps.map((fps) => pow(fps - mean, 2)).reduce((a, b) => a + b) / - _lastFewFps.length; - double stdDev = sqrt(variance); - - // 如果帧率波动过大,采取平滑措施 - if (stdDev > stabilityThreshold) { - _smoothFrameRate(mean); - } - } - } - - /// 检查网络质量 - void _checkNetworkQuality(Timer timer) { - final bufferHealth = state.videoBuffer.length / bufferSize; - - if (bufferHealth < 0.3) { - // 缓冲区不足30% - // 降低帧率以适应网络状况 - frameIntervalMs = min(frameIntervalMs + 10, maxFrameIntervalMs); - _rebuildTimers(); - } else if (bufferHealth > 0.7) { - // 缓冲区超过70% - // 提高帧率以提供更好体验 - frameIntervalMs = max(frameIntervalMs - 5, minFrameIntervalMs); - _rebuildTimers(); - } - } - - /// 计算目标帧间隔 - int _calculateTargetInterval() { - const int optimalBufferSize = 15; // 理想的缓冲区大小 - const int bufferTolerance = 5; // 缓冲区容差 - - if (state.videoBuffer.length < optimalBufferSize - bufferTolerance) { - // 缓冲区过小,降低帧率 - return (frameIntervalMs * 1.2).round(); - } else if (state.videoBuffer.length > optimalBufferSize + bufferTolerance) { - // 缓冲区过大,提高帧率 - return (frameIntervalMs * 0.8).round(); - } - return frameIntervalMs; - } - - /// 重建定时器 - void _rebuildTimers() { - // 取消现有定时器 - _syncTimer?.cancel(); - _audioTimer?.cancel(); - - // 创建新的视频定时器 - _syncTimer = - Timer.periodic(Duration(milliseconds: frameIntervalMs), (timer) { - _playVideoFrames(); - }); - - // 创建新的音频定时器,使用固定间隔 - _audioTimer = - Timer.periodic(Duration(milliseconds: audioFrameIntervalMs), (timer) { - _processAudioFrame(); - }); - } - - /// 处理音频帧 - void _processAudioFrame() { - final currentTime = DateTime.now().millisecondsSinceEpoch; - final elapsedTime = currentTime - _startTime; - - while (state.audioBuffer.isNotEmpty && - state.audioBuffer.first.durationMs <= elapsedTime) { - if (state.isOpenVoice.value) { - _playAudioData(state.audioBuffer.removeAt(0)); - } else { - state.audioBuffer.removeAt(0); - } - } - } - - void _playVideoFrames() { - final currentTime = DateTime.now().millisecondsSinceEpoch; - final elapsedTime = currentTime - _startTime; - - // 播放合适的视频帧 - // 跳帧策略:如果缓冲区中有多个帧,且它们的时间戳都在当前时间之前,则播放最新的帧 - int maxFramesToProcess = 5; // 每次最多处理 5 帧 - int processedFrames = 0; - - while (state.videoBuffer.isNotEmpty && - state.videoBuffer.first.durationMs <= elapsedTime && - processedFrames < maxFramesToProcess) { - if (state.videoBuffer.length > 1) { - state.videoBuffer.removeAt(0); - } else { - _playVideoData(state.videoBuffer.removeAt(0)); - } - processedFrames++; - } - } - /// 停止播放音频 void _stopPlayG711Data() async { await FlutterPcmSound.pause(); @@ -546,7 +447,7 @@ class TalkViewLogic extends BaseGetXController { _initFlutterPcmSound(); // 启动播放定时器 - _startPlayback(); + // _startPlayback(); // 初始化录音控制器 _initAudioRecorder(); @@ -554,39 +455,16 @@ class TalkViewLogic extends BaseGetXController { requestPermissions(); } - /// 平滑帧率 - void _smoothFrameRate(double targetFps) { - // 计算目标帧间隔 - int targetInterval = (1000 / targetFps).round(); - - // 使用加权平均来平滑过渡 - double weight = 0.3; // 权重因子,可以根据需要调整 - frameIntervalMs = - (frameIntervalMs * (1 - weight) + targetInterval * weight).round(); - - // 确保帧间隔在合理范围内 - frameIntervalMs = - frameIntervalMs.clamp(minFrameIntervalMs, maxFrameIntervalMs); - - // 重建定时器 - _rebuildTimers(); - } - @override void onClose() { _stopPlayG711Data(); // 停止播放音频 state.listData.value = Uint8List(0); // 清空视频数据 state.audioBuffer.clear(); // 清空音频缓冲区 state.videoBuffer.clear(); // 清空视频缓冲区 - _syncTimer?.cancel(); // 取消定时器 - _syncTimer = null; // 释放定时器引用 - _audioTimer?.cancel(); - _audioTimer = null; // 释放定时器引用 + state.oneMinuteTimeTimer?.cancel(); state.oneMinuteTimeTimer = null; - // 添加新的清理代码 - _networkQualityTimer?.cancel(); - _lastFewFps.clear(); + stopProcessingAudio(); // 清理图片缓存 _imageCache.clear(); diff --git a/lib/talk/starChart/views/talkView/talk_view_state.dart b/lib/talk/starChart/views/talkView/talk_view_state.dart index 66974032..1ff29b5e 100644 --- a/lib/talk/starChart/views/talkView/talk_view_state.dart +++ b/lib/talk/starChart/views/talkView/talk_view_state.dart @@ -55,7 +55,6 @@ class TalkViewState { // 星图对讲相关状态 List audioBuffer = [].obs; - List audioBuffer2 = [].obs; List activeAudioBuffer = [].obs; List activeVideoBuffer = [].obs; From 5e781a5f00c0110b167ff453095d178ef5711b61 Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 13 Mar 2025 13:39:19 +0800 Subject: [PATCH 19/54] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4=E7=BB=84=E5=8C=85?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handle/scp_message_base_handle.dart | 104 ++++++++++++++---- 1 file changed, 84 insertions(+), 20 deletions(-) diff --git a/lib/talk/starChart/handle/scp_message_base_handle.dart b/lib/talk/starChart/handle/scp_message_base_handle.dart index c1225f0e..f4b68024 100644 --- a/lib/talk/starChart/handle/scp_message_base_handle.dart +++ b/lib/talk/starChart/handle/scp_message_base_handle.dart @@ -43,7 +43,7 @@ class ScpMessageBaseHandle { // 存储每个 messageId 对应的分包数据 static Map>> _packetBuffer = {}; final Map _packetTimers = {}; - final Duration _timeoutDuration = Duration(seconds: 10); // 分包组包最大超时时间 + final Duration _timeoutDuration = Duration(seconds: 3); // 分包组包最大超时时间 // 通话数据流的单例流数据处理类 final TalkDataRepository talkDataRepository = TalkDataRepository.instance; @@ -106,40 +106,104 @@ class ScpMessageBaseHandle { required int payloadType, }) { // 初始化分包列表 - String key = '$messageId-$payloadType'; - if (!_packetBuffer.containsKey(key)) { - _packetBuffer[key] = List.filled(spTotal, []); - _startTimer(key); - } + // 使用更高效的key生成方式 + final key = '${messageId}_$payloadType'; + + // 打印每个包的信息 + // AppLog.log( + // '📦 收到分包 - MessageId: $messageId, 总包数: $spTotal, 当前包序号: $spIndex'); // 检查分包索引是否在合法范围内 if (spIndex < 1 || spIndex > spTotal) { - // print( - // 'Invalid spTotal: $spTotal spIndex: $spIndex for messageId: $messageId'); + AppLog.log( + '❌ 分包序号异常 - MessageId: $messageId, 总包数: $spTotal, 无效包序号: $spIndex'); return null; } + // 检查分包索引是否在合法范围内(提前检查可以避免后续无效操作) + if (spIndex < 1 || spIndex > spTotal) return null; + + // 初始化分包列表(使用固定长度列表提高性能) + var packets = _packetBuffer[key]; + if (packets == null) { + // 预分配固定大小的列表,避免动态扩容 + packets = List>.filled(spTotal, const [], growable: false); + _packetBuffer[key] = packets; + _startTimer(key); + // AppLog.log('📝 新建分包缓存 - MessageId: $messageId, 预期总包数: $spTotal'); + } + // 存储当前分包 - _packetBuffer[key]![spIndex - 1] = byte; + packets[spIndex - 1] = byte; - // 检查是否接收到所有分包 - if (_packetBuffer[key]!.every((packet) => packet.isNotEmpty)) { - // 重组所有分包 - Uint8List completePayload = Uint8List.fromList( - _packetBuffer[key]!.expand((packet) => packet).toList()); - // 清除已重组和超时的分包数据 + // 优化检查逻辑,使用循环替代every + var isComplete = true; + var totalLength = 0; + for (var i = 0; i < packets.length; i++) { + if (packets[i].isEmpty) { + isComplete = false; + } else { + totalLength += packets[i].length; + } + } + + if (isComplete) { + // 预分配确切大小的buffer,避免扩容 + final buffer = Uint8List(totalLength); + var offset = 0; + + // 直接复制数据,避免使用expand + for (var packet in packets) { + buffer.setRange(offset, offset + packet.length, packet); + offset += packet.length; + } + + // 清理资源 _clearPacketData(key); - // 使用重组的包构造成TalkData + // 构造TalkData if (payloadType == PayloadTypeConstant.talkData) { final talkData = TalkData(); - talkData.mergeFromBuffer(completePayload); + talkData.mergeFromBuffer(buffer); return talkData; } - } else { - // 如果分包尚未接收完全,返回 null 或其他指示符 - return null; } + + return null; + + // if (!_packetBuffer.containsKey(key)) { + // _packetBuffer[key] = List.filled(spTotal, []); + // _startTimer(key); + // } + // + // // 检查分包索引是否在合法范围内 + // if (spIndex < 1 || spIndex > spTotal) { + // // print( + // // 'Invalid spTotal: $spTotal spIndex: $spIndex for messageId: $messageId'); + // return null; + // } + // + // // 存储当前分包 + // _packetBuffer[key]![spIndex - 1] = byte; + // + // // 检查是否接收到所有分包 + // if (_packetBuffer[key]!.every((packet) => packet.isNotEmpty)) { + // // 重组所有分包 + // Uint8List completePayload = Uint8List.fromList( + // _packetBuffer[key]!.expand((packet) => packet).toList()); + // // 清除已重组和超时的分包数据 + // _clearPacketData(key); + // + // // 使用重组的包构造成TalkData + // if (payloadType == PayloadTypeConstant.talkData) { + // final talkData = TalkData(); + // talkData.mergeFromBuffer(completePayload); + // return talkData; + // } + // } else { + // // 如果分包尚未接收完全,返回 null 或其他指示符 + // return null; + // } } // 启动定时器 From 0fa0e1f3408b7acc351398efc3f8b099d0465498 Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 13 Mar 2025 15:06:48 +0800 Subject: [PATCH 20/54] =?UTF-8?q?feat:=E5=BD=93=E4=B8=8D=E6=98=AF=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E4=B8=AD=E6=96=87=E4=B8=8D=E6=98=BE=E7=A4=BA=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sendElectronicKey/view/sendElectronicKeyView_page.dart | 3 ++- .../sendElectronicKey/view/sendElectronicKeyView_state.dart | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_page.dart b/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_page.dart index 8fee41fd..da455907 100755 --- a/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_page.dart +++ b/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_page.dart @@ -531,7 +531,8 @@ class _SendElectronicKeyViewState extends State SizedBox( height: 10.h, ), - if (logic.emailOrPhone != null) + if (logic.emailOrPhone != null && + logic.state.currentLanguage.value == 'zh_CN') OutLineBtn( btnName: '微信通知'.tr, onClick: () { diff --git a/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_state.dart b/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_state.dart index 353d884a..7ada2123 100755 --- a/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_state.dart +++ b/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_state.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart'; import 'package:get/get.dart'; import 'package:star_lock/tools/dateTool.dart'; +import 'package:star_lock/translations/current_locale_tool.dart'; class SendElectronicKeyViewState { //循环 @@ -42,4 +43,7 @@ class SendElectronicKeyViewState { final String permanentTips = '接收者可以使用此App开关锁'.tr; //永久 final String onceLimitTips = '单次钥匙有效期为1小时,只能使用一次'.tr; //单次 final String cycleLimitTips = '接收者可以在有效期内的固定时间段里,不限次数使用'.tr; + + RxString currentLanguage = + CurrentLocaleTool.getCurrentLocaleString().obs; // 当前选择语言 } From face4dfd4545e833d7a86b1b1a5363c94baa7884 Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 13 Mar 2025 15:07:13 +0800 Subject: [PATCH 21/54] =?UTF-8?q?feat:=E4=BC=98=E5=8C=96=E5=B8=A7=E7=BC=93?= =?UTF-8?q?=E5=86=B2=E5=8C=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/talkView/talk_view_logic.dart | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/lib/talk/starChart/views/talkView/talk_view_logic.dart b/lib/talk/starChart/views/talkView/talk_view_logic.dart index 63fbafc7..c901d5ab 100644 --- a/lib/talk/starChart/views/talkView/talk_view_logic.dart +++ b/lib/talk/starChart/views/talkView/talk_view_logic.dart @@ -47,7 +47,9 @@ class TalkViewLogic extends BaseGetXController { // 添加开始时间记录 int _startTime = 0; // 开始播放时间戳 + int _startAudioTime = 0; // 开始播放时间戳 bool _isFirstFrame = true; // 是否是第一帧 + bool _isFirstAudioFrame = true; // 是否是第一帧 // 定义音频帧缓冲和发送函数 final List _bufferedAudioFrames = []; @@ -90,16 +92,28 @@ class TalkViewLogic extends BaseGetXController { final contentType = talkData.contentType; final currentTime = DateTime.now().millisecondsSinceEpoch; - // 第一帧到达时记录开始时间 - if (_isFirstFrame) { - _startTime = currentTime; - _isFirstFrame = false; - } - // 判断数据类型,进行分发处理 switch (contentType) { case TalkData_ContentTypeE.G711: - if (state.audioBuffer.length >= bufferSize) { + // 第一帧到达时记录开始时间 + if (_isFirstAudioFrame) { + _startAudioTime = currentTime; + _isFirstAudioFrame = false; + } + + // 计算音频延迟 + final expectedTime = _startAudioTime + talkData.durationMs; + final audioDelay = currentTime - expectedTime; + + // 如果延迟太大,清空缓冲区并直接播放 + if (audioDelay > 500) { + state.audioBuffer.clear(); + if (state.isOpenVoice.value) { + _playAudioFrames(); + } + return; + } + if (state.audioBuffer.length >= audioBufferSize) { state.audioBuffer.removeAt(0); // 丢弃最旧的数据 } state.audioBuffer.add(talkData); // 添加新数据 @@ -107,9 +121,17 @@ class TalkViewLogic extends BaseGetXController { _playAudioFrames(); break; case TalkData_ContentTypeE.Image: - // 计算实际延迟:(当前系统时间 - 开始时间) - 帧的预期播放时间 + // 第一帧到达时记录开始时间 + if (_isFirstFrame) { + _startTime = currentTime; + _isFirstFrame = false; + AppLog.log('记录第一帧的时间戳${currentTime},${talkData.durationMs}'); + } + + // 计算实际延迟:当前时间 - 预期播放时间 final expectedTime = _startTime + talkData.durationMs; - final videoDelay = currentTime - expectedTime; + final videoDelay = currentTime - expectedTime; // 修改延迟计算方式 + // 动态调整缓冲区 _adjustBufferSize(videoDelay); // 然后添加到播放缓冲区 From f4c55687f531a76531d940ee146c22a3d13572ac Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 13 Mar 2025 15:07:26 +0800 Subject: [PATCH 22/54] =?UTF-8?q?style:=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../register/starLock_register_page.dart | 123 ++++++++++-------- 1 file changed, 67 insertions(+), 56 deletions(-) diff --git a/lib/login/register/starLock_register_page.dart b/lib/login/register/starLock_register_page.dart index 2e8174df..e9d599e9 100755 --- a/lib/login/register/starLock_register_page.dart +++ b/lib/login/register/starLock_register_page.dart @@ -1,4 +1,4 @@ - +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -87,7 +87,8 @@ class _StarLockRegisterPageState extends State { onTap: () { state.isIphoneType.value = true; }, - child: Obx(() => Container( + child: Obx( + () => Container( width: 170.w, height: 60.h, decoration: state.isIphoneType.value @@ -99,39 +100,52 @@ class _StarLockRegisterPageState extends State { width: 1.0, color: AppColors.greyLineColor)) : null, child: Center( - child: Text( - '手机'.tr, - style: TextStyle( - color: state.isIphoneType.value - ? Colors.white - : Colors.black), - )))), + child: Text( + '手机'.tr, + style: TextStyle( + color: state.isIphoneType.value + ? Colors.white + : Colors.black), + ), + ), + ), + ), ), Expanded( child: GestureDetector( onTap: () { state.isIphoneType.value = false; }, - child: Obx(() => Container( + child: Obx( + () => Container( height: 60.h, // color: Colors.red, decoration: state.isIphoneType.value ? null : BoxDecoration( color: AppColors.mainColor, - borderRadius: - BorderRadius.all(Radius.circular(30.h)), + borderRadius: BorderRadius.all( + Radius.circular( + 30.h, + ), + ), border: Border.all( - width: 1.0, - color: AppColors.greyLineColor)), + width: 1.0, + color: AppColors.greyLineColor, + ), + ), child: Center( - child: Text( - '邮箱'.tr, - style: TextStyle( + child: Text( + '邮箱'.tr, + style: TextStyle( color: state.isIphoneType.value ? Colors.black - : Colors.white), - )))), + : Colors.white, + ), + ), + ), + ), + ), ), ), ], @@ -157,8 +171,7 @@ class _StarLockRegisterPageState extends State { children: [ SizedBox(width: 5.w), Expanded( - child: Text( - '你所在的国家/地区'.tr, + child: Text('你所在的国家/地区'.tr, style: TextStyle( fontSize: 26.sp, color: AppColors.blackColor))), SizedBox(width: 20.w), @@ -213,8 +226,7 @@ class _StarLockRegisterPageState extends State { height: 30.w, ), ), - hintText: - state.isIphoneType.value ? '请输入手机号'.tr : '请输入邮箱'.tr, + hintText: state.isIphoneType.value ? '请输入手机号'.tr : '请输入邮箱'.tr, keyboardType: TextInputType.number, inputFormatters: [ // FilteringTextInputFormatter.allow(RegExp('[0-9]')), @@ -236,7 +248,7 @@ class _StarLockRegisterPageState extends State { height: 30.w, ), ), - hintText:'请输入密码'.tr, + hintText: '请输入密码'.tr, inputFormatters: [ LengthLimitingTextInputFormatter(20), ]), @@ -282,8 +294,7 @@ class _StarLockRegisterPageState extends State { height: 30.w, ), ), - hintText: - '请输入验证码'.tr, + hintText: '请输入验证码'.tr, inputFormatters: [ LengthLimitingTextInputFormatter(20), ]), @@ -292,29 +303,29 @@ class _StarLockRegisterPageState extends State { width: 20.w, ), Obx(() => GestureDetector( - onTap: - (state.canSendCode.value && state.canResend.value) - ? () async { - // Navigator.pushNamed(context, Routers.safetyVerificationPage, arguments: {"countryCode":"+86", "account":state.phoneOrEmailStr.value}); - final Object? result = await Navigator.pushNamed( - context, Routers.safetyVerificationPage, - arguments: { - 'countryCode': state.countryCode, - 'account': state.phoneOrEmailStr.value - }); - state.xWidth.value = - (result! as Map)['xWidth']; - logic.sendValidationCode(); - } - : null, + onTap: (state.canSendCode.value && state.canResend.value) + ? () async { + // Navigator.pushNamed(context, Routers.safetyVerificationPage, arguments: {"countryCode":"+86", "account":state.phoneOrEmailStr.value}); + final Object? result = await Navigator.pushNamed( + context, Routers.safetyVerificationPage, + arguments: { + 'countryCode': state.countryCode, + 'account': state.phoneOrEmailStr.value + }); + state.xWidth.value = + (result! as Map)['xWidth']; + logic.sendValidationCode(); + } + : null, child: Container( width: 180.w, // height: 60.h, padding: EdgeInsets.all(10.h), decoration: BoxDecoration( - color: (state.canSendCode.value && state.canResend.value) - ? AppColors.mainColor - : Colors.grey, + color: + (state.canSendCode.value && state.canResend.value) + ? AppColors.mainColor + : Colors.grey, borderRadius: BorderRadius.circular(5)), child: Center( child: Text(state.btnText.value, @@ -361,29 +372,29 @@ class _StarLockRegisterPageState extends State { WidgetSpan( alignment: PlaceholderAlignment.middle, child: GestureDetector( - child: Text( - '《${'用户协议'.tr}》', + child: Text('《${'用户协议'.tr}》', style: TextStyle( color: AppColors.mainColor, fontSize: 20.sp)), onTap: () { - Get.toNamed(Routers.webviewShowPage, arguments: { - 'url': XSConstantMacro.userAgreementURL, - 'title': '用户协议'.tr - }); + Get.toNamed(Routers.webviewShowPage, + arguments: { + 'url': XSConstantMacro.userAgreementURL, + 'title': '用户协议'.tr + }); }, )), WidgetSpan( alignment: PlaceholderAlignment.middle, child: GestureDetector( - child: Text( - '《${'隐私政策'.tr}》', + child: Text('《${'隐私政策'.tr}》', style: TextStyle( color: AppColors.mainColor, fontSize: 20.sp)), onTap: () { - Get.toNamed(Routers.webviewShowPage, arguments: { - 'url': XSConstantMacro.privacyPolicyURL, - 'title': '隐私政策'.tr - }); + Get.toNamed(Routers.webviewShowPage, + arguments: { + 'url': XSConstantMacro.privacyPolicyURL, + 'title': '隐私政策'.tr + }); }, )), ], From a59edfcfff6172bfc2e3938cff049caf2ef72e0e Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 13 Mar 2025 15:07:39 +0800 Subject: [PATCH 23/54] =?UTF-8?q?style:=E5=A2=9E=E5=8A=A0=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lan/lan_en.json | 1 + lan/lan_hk.json | 22 +++++++++++----------- lan/lan_keys.json | 1 + lan/lan_tw.json | 12 ++++++------ lan/lan_zh.json | 1 + 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/lan/lan_en.json b/lan/lan_en.json index bf8243ca..f7fb0c49 100644 --- a/lan/lan_en.json +++ b/lan/lan_en.json @@ -1145,5 +1145,6 @@ "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Enable the remote unlocking function of the lock in the APP (this function is turned off by default). If this option is not available, the lock will not support Google Home", "3.安装Google Home APP,点击左上角的加号按钮": "3. Install the Google Home app and click the plus button in the upper left corner", "网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "After the gateway is powered on, press and hold the reset button for 5 seconds. Click Next when the blue indicator light flashes", + "暂无最新记录": "There are currently no latest records available", "网关添加成功": "Gateway added successfully" } diff --git a/lan/lan_hk.json b/lan/lan_hk.json index 3d42492f..a314542e 100644 --- a/lan/lan_hk.json +++ b/lan/lan_hk.json @@ -1,10 +1,10 @@ { - "星锁": "星空鎖", - "锁通通": "鎖定直通", - "点击开锁,长按闭锁": "掂解鎖,按住鎖定", + "星锁": "星鎖", + "锁通通": "鎖通通", + "点击开锁,长按闭锁": "點擊開鎖,長按閉鎖", "考勤": "出席", "考勤设置": "考勤設置", - "电子钥匙": "eKey", + "电子钥匙": "電子鑰匙", "添加卡": "添加卡", "卡号": "卡號", "添加指纹": "添加指紋", @@ -185,7 +185,7 @@ "退出": "註銷", "删除账号": "刪除帳戶", "个人信息": "賬戶信息", - "头像": "化身", + "头像": "頭像", "昵称": "暱稱", "请输入昵称": "請輸入您的暱稱", "修改昵称": "重命名", @@ -373,7 +373,7 @@ "未打卡": "暫無記錄", "钥匙将在": "此ekey將在", "天后失效": "天", - "电量更新时间:": "電池更新時間:", + "电量更新时间:": "電量更新時間:", "新增配件": "加", "钥匙不可用": "密鑰不可用", "正在开锁中...": "解鎖。。。", @@ -505,7 +505,7 @@ "您的钥匙已过期": "您的密鑰已過期", "常开模式开启": "鎖處於Passage Mode", "超级管理员": "超級管理員", - "授权管理员": "設為admin", + "授权管理员": "授權管理員", "普通用户": "普通用戶", "余": "平衡", "天": "日", @@ -718,7 +718,7 @@ "钥匙无效": "密鑰無效", "操作失败,请确认锁是否在附近,或重启手机蓝牙后再试。": "無法連接到鎖。請重新啟動手機嘅Blutooth並重試。", "如果是全自动锁,请使屏幕变亮": "如果係全自動鎖,請讓屏幕更光", - "正在尝试闭锁……": "嘗試鎖定。 請稍候。。。", + "正在尝试闭锁……": "正在嘗試閉鎖……", "清空记录": "清除記錄", "是否要删除操作记录?": "繼續刪除記錄?", "被删除的记录不能恢复": "刪除後無法恢復記錄。", @@ -815,7 +815,7 @@ "配置网络": "配置網絡", "你好": "你好", "成功": "成功的", - "类型选择": "鍵入select", + "类型选择": "類型選擇", "请选择要使用哪种类型": "請選擇要使用的類型", "系统邮件(推荐)": "系統電子郵件(推薦)", "系统短信(推荐)": "系統短信(推薦)", @@ -1100,8 +1100,8 @@ "英语": "英文", "Google Home操作流程的值": "1.使用智能鎖APP添加鎖和網關\n\n2.喺APP中開啟鎖嘅遠程解鎖功能(此功能默認關閉)。 如果冇此選項,鎖唔撐Google Home\n\n3.安裝Google Home APP,點擊左上角嘅“+”按鈕\n\n4.在“設置”頁面上,選擇“與Google合作”\n\n5.搜索“ScienerSmart”,使用智能鎖APP賬號和密碼進行授權", "密码需至少包含数字/字母/字符中的2种组合": "密碼必須至少包含以下2個:數字、字母同特殊字符", - "已开锁": "解鎖", - "已闭锁": "鎖", + "已开锁": "已開鎖", + "已闭锁": "已閉鎖", "两次密码不一致哦": "密碼不一緻", "中功率": "中等功率", "常规使用": "經常使用", diff --git a/lan/lan_keys.json b/lan/lan_keys.json index f3d9487d..81ba73e9 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1148,5 +1148,6 @@ "4.在设置页面,选择与Google协同工作": "4.在设置页面,选择与Google协同工作", "5.搜索": "5.搜索", ",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权", + "暂无最新记录": "暂无最新记录", "网关添加成功": "网关添加成功" } diff --git a/lan/lan_tw.json b/lan/lan_tw.json index c2d9cfe6..46f4aaf7 100644 --- a/lan/lan_tw.json +++ b/lan/lan_tw.json @@ -1,6 +1,6 @@ { - "星锁": "星形鎖", - "锁通通": "鎖定通過", + "星锁": "星鎖", + "锁通通": "鎖通通", "点击开锁,长按闭锁": "觸摸以解鎖,按住以鎖定", "考勤": "出席情況", "考勤设置": "考勤設置", @@ -267,9 +267,9 @@ "您可通过邮件将密码、电子钥匙信息发给接收人。": "電子郵件可用於向收件人發送密碼和ekey信息。", "购买实名认证提示": "啟用該功能後,您需要使用指紋,臉部或帳戶密碼才能打開該應用程序。 3分鐘不用再驗證", "请选择你希望的实名认证频次": "請選擇您想要的實名認證頻率", - "仅首次": "第一次", + "仅首次": "僅首次", "每日一次": "每天一次", - "每周一次": "每周一次", + "每周一次": "每週一次", "每月一次": "每月一次", "当前状态": "當前狀態", "试用中": "在審判中", @@ -1081,8 +1081,8 @@ "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 是否確實要重置?", "在线": "在線", "离线": "離線", - "购买记录": "採購記錄", - "使用记录": "用戶記錄", + "购买记录": "購買記錄", + "使用记录": "使用記錄", "失效时间要大于当前时间": "過期時間必須長於當前時間", "修改名字": "編輯名稱", "时": "小時", diff --git a/lan/lan_zh.json b/lan/lan_zh.json index ea9e45d4..2a91849d 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -1148,5 +1148,6 @@ "4.在设置页面,选择与Google协同工作": "4.在设置页面,选择与Google协同工作", "5.搜索": "5.搜索", ",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权", + "暂无最新记录": "暂无最新记录", "网关添加成功": "网关添加成功" } From 3762ade84a05f99c5503153b88eddf54689d9709 Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 13 Mar 2025 16:04:06 +0800 Subject: [PATCH 24/54] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E6=98=B5=E7=A7=B0?= =?UTF-8?q?=E8=BF=87=E9=95=BF=E6=BA=A2=E5=87=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../value_added_services_record_page.dart | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_page.dart b/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_page.dart index 3366fca2..1808074b 100755 --- a/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_page.dart +++ b/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_page.dart @@ -71,6 +71,7 @@ class _ValueAddedServicesRecordPageState // 购买记录 class _PurchaseRecords extends StatelessWidget { const _PurchaseRecords({required this.buyRecordList, required this.logic}); + final List buyRecordList; final ValueAddedServicesRecordLogic logic; @@ -134,6 +135,7 @@ class _PurchaseRecords extends StatelessWidget { // 使用记录 class _UseRecordsTable extends StatelessWidget { const _UseRecordsTable({required this.useRecordList, required this.logic}); + final List useRecordList; final ValueAddedServicesRecordLogic logic; @@ -172,9 +174,12 @@ class _UseRecordsTable extends StatelessWidget { Text( logic.state.useCountStr.value, style: TextStyle( - fontSize: 24.sp, - color: AppColors.blackColor, - fontWeight: FontWeight.bold), + fontSize: 24.sp, + color: AppColors.blackColor, + fontWeight: FontWeight.bold, + ), + overflow: TextOverflow.ellipsis, // 超出显示省略号 + maxLines: 1, // 限制为单行 ), Expanded(child: Container()), if (itemData.authStatus == 0) From 92093b318287557622e6322c486943aa1a61549e Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 13 Mar 2025 16:13:14 +0800 Subject: [PATCH 25/54] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E9=93=83=E5=A3=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/res/raw/ring.mp3 | Bin 0 -> 254379 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 android/app/src/main/res/raw/ring.mp3 diff --git a/android/app/src/main/res/raw/ring.mp3 b/android/app/src/main/res/raw/ring.mp3 new file mode 100755 index 0000000000000000000000000000000000000000..eee971acf6eef51a3718964c9d9ffe5563c74b03 GIT binary patch literal 254379 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%0D#ZOgTY@g&5qSL?XT&uxbCMwa0kn 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 Date: Fri, 14 Mar 2025 11:59:09 +0800 Subject: [PATCH 26/54] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E9=85=8D=E7=BD=91?= =?UTF-8?q?=E6=97=B6=E8=AF=BB=E5=8F=96=E6=89=8B=E6=9C=BA=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?wifi=EF=BC=8C=E5=B9=B6=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E6=98=AF5G=E7=BD=91=E7=BB=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configuringWifi/configuringWifi_page.dart | 11 +++++++++ .../configuringWifi_state.dart | 11 +++++---- .../wifiList/wifiList_page.dart | 23 +++++++++++++++---- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart index 89ea1ee1..4e8f238a 100755 --- a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart +++ b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart @@ -51,6 +51,17 @@ class _ConfiguringWifiPageState extends State logic.senderConfiguringWifiAction(); }, ), + SizedBox( + height: 20.h, + ), + Text( + '请确保网络是2.4GHz Wi-Fi ', + style: TextStyle( + color: AppColors.blackColor, + fontSize: 20.sp, + fontWeight: FontWeight.w500, + ), + ), ], )); } diff --git a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_state.dart b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_state.dart index 1a090780..513fede2 100755 --- a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_state.dart +++ b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_state.dart @@ -1,13 +1,13 @@ - import 'dart:async'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:network_info_plus/network_info_plus.dart'; import '../../lockSet/lockSetInfo_entity.dart'; import 'configuringWifiEntity.dart'; -class ConfiguringWifiState{ +class ConfiguringWifiState { ConfiguringWifiState() { var map = Get.arguments; lockSetInfoData.value = map['lockSetInfoData']; @@ -18,6 +18,7 @@ class ConfiguringWifiState{ wifiNameController.text = wifiName.value; } } + Rx configuringWifiEntity = ConfiguringWifiEntity().obs; Rx lockSetInfoData = LockSetInfoData().obs; Rx lockBasicInfo = LockBasicInfo().obs; @@ -25,12 +26,12 @@ class ConfiguringWifiState{ RxString wifiName = ''.obs; RxString pageName = ''.obs; RxBool ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示 - RxInt sureBtnState = 0.obs;// 0普通状态(可用) 1连接中(不可用) + RxInt sureBtnState = 0.obs; // 0普通状态(可用) 1连接中(不可用) TextEditingController wifiNameController = TextEditingController(); TextEditingController wifiPWDController = TextEditingController(); String getGatewayConfigurationStr = ''; - RxBool isLoading=false.obs; + RxBool isLoading = false.obs; Timer? loadingTimer; -} \ No newline at end of file +} diff --git a/lib/main/lockDetail/lockSet/configuringWifi/wifiList/wifiList_page.dart b/lib/main/lockDetail/lockSet/configuringWifi/wifiList/wifiList_page.dart index d00e360d..2508cc27 100755 --- a/lib/main/lockDetail/lockSet/configuringWifi/wifiList/wifiList_page.dart +++ b/lib/main/lockDetail/lockSet/configuringWifi/wifiList/wifiList_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:network_info_plus/network_info_plus.dart'; import 'package:star_lock/main/lockDetail/lockSet/configuringWifi/wifiList/wifiList_state.dart'; import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; @@ -91,11 +92,23 @@ class _WifiListPageState extends State { fontSize: 28.sp, borderRadius: 20.w, padding: EdgeInsets.only(top: 25.w, bottom: 25.w), - onClick: () { - Get.toNamed(Routers.configuringWifiPage, arguments: { - 'lockSetInfoData': state.lockSetInfoData.value, - 'pageName': state.pageName.value, - }); + onClick: () async { + // 如果没有传wifi昵称,则使用当前系统连接的wifi + final info = NetworkInfo(); + + final wifiName = + (await info.getWifiName())?.replaceAll('"', '') ?? ''; + + // 判断是否为5G WiFi + if (wifiName.toLowerCase().contains('5g')) { + logic.showToast('请将手机切换至2.4G WiFi进行手动连接'.tr); + } else { + Get.toNamed(Routers.configuringWifiPage, arguments: { + 'lockSetInfoData': state.lockSetInfoData.value, + 'pageName': state.pageName.value, + 'wifiName': wifiName, + }); + } }, ), SizedBox( From 09ed89f90fcd74713788d776f9b79df6d52519e3 Mon Sep 17 00:00:00 2001 From: liyi Date: Fri, 14 Mar 2025 13:37:07 +0800 Subject: [PATCH 27/54] =?UTF-8?q?fix:=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/test.jpg | Bin 218614 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/test.jpg diff --git a/assets/test.jpg b/assets/test.jpg deleted file mode 100644 index f74d412c2bf8ac6b77220eb3fc631e89b7d3d3ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218614 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 From bb085767d5e1dbd5f2f23cc4fea39ce87f7b5315 Mon Sep 17 00:00:00 2001 From: liyi Date: Fri, 14 Mar 2025 16:12:30 +0800 Subject: [PATCH 28/54] =?UTF-8?q?fix:=E6=9B=B4=E6=96=B0=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lan/lan_ar.json | 4 +++- lan/lan_bg.json | 4 +++- lan/lan_bn.json | 4 +++- lan/lan_cs.json | 4 +++- lan/lan_da.json | 4 +++- lan/lan_de.json | 4 +++- lan/lan_el.json | 4 +++- lan/lan_en.json | 1 + lan/lan_es.json | 4 +++- lan/lan_et.json | 4 +++- lan/lan_fi.json | 4 +++- lan/lan_fr.json | 4 +++- lan/lan_he.json | 4 +++- lan/lan_hi.json | 4 +++- lan/lan_hk.json | 4 +++- lan/lan_hr.json | 4 +++- lan/lan_hu.json | 4 +++- lan/lan_id.json | 4 +++- lan/lan_it.json | 4 +++- lan/lan_ja.json | 4 +++- lan/lan_keys.json | 1 + lan/lan_kk.json | 4 +++- lan/lan_ko.json | 4 +++- lan/lan_lt.json | 4 +++- lan/lan_ms.json | 4 +++- lan/lan_nl.json | 4 +++- lan/lan_pl.json | 4 +++- lan/lan_pt.json | 4 +++- lan/lan_ro.json | 4 +++- lan/lan_ru.json | 4 +++- lan/lan_sk.json | 4 +++- lan/lan_sr_cyrl.json | 4 +++- lan/lan_sv.json | 4 +++- lan/lan_th.json | 4 +++- lan/lan_tr.json | 4 +++- lan/lan_tw.json | 14 ++++++++------ lan/lan_uk.json | 4 +++- lan/lan_ur.json | 4 +++- lan/lan_vi.json | 4 +++- lan/lan_zh.json | 1 + 40 files changed, 119 insertions(+), 42 deletions(-) diff --git a/lan/lan_ar.json b/lan/lan_ar.json index fc977f2f..e53131c6 100644 --- a/lan/lan_ar.json +++ b/lan/lan_ar.json @@ -1145,5 +1145,7 @@ "双锁联动": "وصلة القفل المزدوج", "1.用智能锁APP添加锁和网关": "1. أضف أقفال وبوابات باستخدام تطبيق القفل الذكي", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. تمكين وظيفة الفتح عن بعد للقفل في APP (يتم إيقاف هذه الوظيفة بشكل افتراضي). إذا كان هذا الخيار غير متاح، لن يدعم القفل جوجل هوم", - "3.安装Google Home APP,点击左上角的加号按钮": "3. قم بتثبيت تطبيق Google Home وانقر فوق الزر زائد في الزاوية العلوية اليسرى" + "3.安装Google Home APP,点击左上角的加号按钮": "3. قم بتثبيت تطبيق Google Home وانقر فوق الزر زائد في الزاوية العلوية اليسرى", + "暂无最新记录": "لا توجد حاليا أحدث السجلات المتاحة", + "请将手机切换至2.4G WiFi进行手动连接": "الرجاء تحويل هاتفك إلى \"واي فاي 2.4\" للاتصال اليدوي" } \ No newline at end of file diff --git a/lan/lan_bg.json b/lan/lan_bg.json index ac25d40b..15c1f133 100644 --- a/lan/lan_bg.json +++ b/lan/lan_bg.json @@ -1145,5 +1145,7 @@ "双锁联动": "Връзка с двойно заключване", "1.用智能锁APP添加锁和网关": "1. Добавете брави и шлюзове с помощта на приложението Smart Lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Активирайте функцията за дистанционно отключване на ключалката в приложението (тази функция е изключена по подразбиране). Ако тази опция не е налице, заключването няма да поддържа Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Инсталирайте приложението Google Home и щракнете върху бутона плюс в горния ляв ъгъл" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Инсталирайте приложението Google Home и щракнете върху бутона плюс в горния ляв ъгъл", + "暂无最新记录": "В момента няма най-новите налични записи", + "请将手机切换至2.4G WiFi进行手动连接": "Моля, превключете телефона си на 2.4G WiFi за ръчно свързване" } \ No newline at end of file diff --git a/lan/lan_bn.json b/lan/lan_bn.json index a2f980ee..994bcdf0 100644 --- a/lan/lan_bn.json +++ b/lan/lan_bn.json @@ -1145,5 +1145,7 @@ "双锁联动": "ডাবল লক লিঙ্কেজ", "1.用智能锁APP添加锁和网关": "1. স্মার্ট লক অ্যাপ ব্যবহার করে লক ও গেটওয়ে যোগ করুন", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. অ্যাপে লকের রিমোট আনলকিং ফাংশন সক্ষম করুন (এই ফাংশনটি ডিফল্টরূপে বন্ধ রয়েছে)। যদি এই বিকল্পটি উপলভ্য না হয় তবে লকটি গুগল হোম সমর্থন করবে না", - "3.安装Google Home APP,点击左上角的加号按钮": "গুগল হোম অ্যাপ্লিকেশনটি ইনস্টল করুন এবং উপরের বাম কোণে প্লাস বোতামটি ক্লিক করুন" + "3.安装Google Home APP,点击左上角的加号按钮": "গুগল হোম অ্যাপ্লিকেশনটি ইনস্টল করুন এবং উপরের বাম কোণে প্লাস বোতামটি ক্লিক করুন", + "暂无最新记录": "বর্তমানে কোনও সাম্প্রতিকতম রেকর্ড সুলভ নেই", + "请将手机切换至2.4G WiFi进行手动连接": "ম্যানুয়াল সংযোগের জন্য দয়া করে আপনার ফোনটি 2.4 জি ওয়াইফাইতে স্যুইচ করুন" } \ No newline at end of file diff --git a/lan/lan_cs.json b/lan/lan_cs.json index 33e659a2..4830ba9c 100644 --- a/lan/lan_cs.json +++ b/lan/lan_cs.json @@ -1145,5 +1145,7 @@ "双锁联动": "Dvojitý zámek", "1.用智能锁APP添加锁和网关": "1. Přidejte zámky a brány pomocí aplikace chytrého zámku", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Povolte funkci dálkového odemykání zámku v APP (tato funkce je ve výchozím nastavení vypnutá). Pokud tato možnost není k dispozici, zámek nebude podporovat Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Nainstalujte aplikaci Google Home a klikněte na tlačítko plus v levém horním rohu" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Nainstalujte aplikaci Google Home a klikněte na tlačítko plus v levém horním rohu", + "暂无最新记录": "Momentálně nejsou k dispozici žádné nejnovější záznamy", + "请将手机切换至2.4G WiFi进行手动连接": "Přepněte prosím svůj telefon na 2.4G WiFi pro ruční připojení" } \ No newline at end of file diff --git a/lan/lan_da.json b/lan/lan_da.json index 3c6a2175..af956511 100644 --- a/lan/lan_da.json +++ b/lan/lan_da.json @@ -1145,5 +1145,7 @@ "双锁联动": "Dobbelt låseforbindelse", "1.用智能锁APP添加锁和网关": "1. Tilføj låse og gateways ved hjælp af smart lock-appen", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Aktiver fjernoplåsningsfunktionen for låsen i APP'en (denne funktion er slået fra som standard). Hvis denne mulighed ikke er tilgængelig, understøtter låsen ikke Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Installer Google Home-appen, og klik på plusknappen i øverste venstre hjørne" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installer Google Home-appen, og klik på plusknappen i øverste venstre hjørne", + "暂无最新记录": "Der er i øjeblikket ingen nyeste optegnelser tilgængelige", + "请将手机切换至2.4G WiFi进行手动连接": "Skift venligst din telefon til 2.4G WiFi for manuel forbindelse" } \ No newline at end of file diff --git a/lan/lan_de.json b/lan/lan_de.json index 3f68aeee..fc9ada5c 100644 --- a/lan/lan_de.json +++ b/lan/lan_de.json @@ -1145,5 +1145,7 @@ "双锁联动": "Ein doppelschloss verbindet sich", "1.用智能锁APP添加锁和网关": "1. Schlösser und gateway mit der anwendung intelligente schlösser hinzufügen", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Entsichern in einer APP, die ein schloss öffnet (standard abschalten) Wenn diese option nicht verfügbar ist, wird das schloss google nicht unterstützen", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Installiert die google-app und klicken auf den knopf hinzufügen in der oberen linken ecke" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installiert die google-app und klicken auf den knopf hinzufügen in der oberen linken ecke", + "暂无最新记录": "Wir haben keine neuen daten", + "请将手机切换至2.4G WiFi进行手动连接": "Wenn manuelle verbindung hergestellt wird, schalten sie das handy auf 2,4 G WiFi" } \ No newline at end of file diff --git a/lan/lan_el.json b/lan/lan_el.json index 833e8146..673d0f5b 100644 --- a/lan/lan_el.json +++ b/lan/lan_el.json @@ -1145,5 +1145,7 @@ "双锁联动": "Σύνδεσμος διπλού κλειδώματος", "1.用智能锁APP添加锁和网关": "1. Προσθέστε κλειδαριές και πύλες χρησιμοποιώντας την εφαρμογή Smart Lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Ενεργοποιήστε τη λειτουργία απομακρυσμένου ξεκλειδώματος της κλειδαριάς στην εφαρμογή (αυτή η λειτουργία είναι απενεργοποιημένη από προεπιλογή). Εάν αυτή η επιλογή δεν είναι διαθέσιμη, το κλείδωμα δεν θα υποστηρίζει το Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Εγκαταστήστε την εφαρμογή Google Home και κάντε κλικ στο κουμπί συν στην επάνω αριστερή γωνία" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Εγκαταστήστε την εφαρμογή Google Home και κάντε κλικ στο κουμπί συν στην επάνω αριστερή γωνία", + "暂无最新记录": "Προς το παρόν δεν υπάρχουν διαθέσιμες τελευταίες εγγραφές", + "请将手机切换至2.4G WiFi进行手动连接": "Αλλάξτε το τηλέφωνό σας σε 2.4G WiFi για χειροκίνητη σύνδεση" } \ No newline at end of file diff --git a/lan/lan_en.json b/lan/lan_en.json index f7fb0c49..748227b8 100644 --- a/lan/lan_en.json +++ b/lan/lan_en.json @@ -1146,5 +1146,6 @@ "3.安装Google Home APP,点击左上角的加号按钮": "3. Install the Google Home app and click the plus button in the upper left corner", "网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "After the gateway is powered on, press and hold the reset button for 5 seconds. Click Next when the blue indicator light flashes", "暂无最新记录": "There are currently no latest records available", + "请将手机切换至2.4G WiFi进行手动连接": "Please switch your phone to 2.4G WiFi for manual connection", "网关添加成功": "Gateway added successfully" } diff --git a/lan/lan_es.json b/lan/lan_es.json index efd54202..21e4cf83 100644 --- a/lan/lan_es.json +++ b/lan/lan_es.json @@ -1145,5 +1145,7 @@ "双锁联动": "Doble cierre", "1.用智能锁APP添加锁和网关": "1. Agregue bloqueos y puertas de enlace con la aplicación smart lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Habilitar la función de desbloqueo remoto del bloqueo en la aplicación (esta función se desactiva por defecto). Si esta opción no está disponible, el bloqueo no será compatible con Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Instale la aplicación de Google Home y haga clic en el botón más en la esquina superior izquierda" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instale la aplicación de Google Home y haga clic en el botón más en la esquina superior izquierda", + "暂无最新记录": "Actualmente no hay registros más recientes disponibles", + "请将手机切换至2.4G WiFi进行手动连接": "Por favor cambia tu teléfono a 2.4G WiFi para la conexión manual" } \ No newline at end of file diff --git a/lan/lan_et.json b/lan/lan_et.json index 9fe1badb..8493c8cf 100644 --- a/lan/lan_et.json +++ b/lan/lan_et.json @@ -1145,5 +1145,7 @@ "双锁联动": "Kahekordne lukustusühendus", "1.用智能锁APP添加锁和网关": "1. Lisage lukke ja lüüse nutiluku rakenduse abil", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Lubage rakenduses APP luku kaugavamise funktsioon (see funktsioon on vaikimisi välja lülitatud). Kui see valik pole saadaval, ei toeta lukk Google Home'i", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Installige rakendus Google Home ja klõpsake vasakus ülanurgas plussnuppu" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installige rakendus Google Home ja klõpsake vasakus ülanurgas plussnuppu", + "暂无最新记录": "Praegu pole uusimaid andmeid saadaval", + "请将手机切换至2.4G WiFi进行手动连接": "Käsitsi ühendamiseks lülitage telefon 2.4G WiFi-le" } \ No newline at end of file diff --git a/lan/lan_fi.json b/lan/lan_fi.json index 0cd26944..c51e11f8 100644 --- a/lan/lan_fi.json +++ b/lan/lan_fi.json @@ -1145,5 +1145,7 @@ "双锁联动": "Kaksinkertainen lukitus", "1.用智能锁APP添加锁和网关": "1. Lisää lukkoja ja yhdyskäytäviä älylukkosovelluksella", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Ota lukon etälukituksen avaustoiminto käyttöön APP:ssa (tämä toiminto on oletuksena pois päältä). Jos tämä vaihtoehto ei ole käytettävissä, lukko ei tue Google Homea", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Asenna Google Home -sovellus ja napsauta vasemmassa yläkulmassa olevaa pluspainiketta" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Asenna Google Home -sovellus ja napsauta vasemmassa yläkulmassa olevaa pluspainiketta", + "暂无最新记录": "Viimeisimpiä tietoja ei ole tällä hetkellä saatavilla", + "请将手机切换至2.4G WiFi进行手动连接": "Vaihda puhelimesi 2.4G WiFi-verkkoon manuaalista yhteyttä varten" } \ No newline at end of file diff --git a/lan/lan_fr.json b/lan/lan_fr.json index b0d0bd3d..fcb50558 100644 --- a/lan/lan_fr.json +++ b/lan/lan_fr.json @@ -1145,5 +1145,7 @@ "双锁联动": "Double liaison de serrure", "1.用智能锁APP添加锁和网关": "1. Ajoutez des serrures et des passerelles à l’aide de l’application smart lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Activez la fonction de déverrouillage à distance de la serrure dans l’application (cette fonction est désactivée par défaut). Si cette option n’est pas disponible, le verrou ne prendra pas en charge Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Installez l’application Google Home et cliquez sur le bouton plus dans le coin supérieur gauche" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installez l’application Google Home et cliquez sur le bouton plus dans le coin supérieur gauche", + "暂无最新记录": "Il n’y a actuellement aucun dernier enregistrement disponible", + "请将手机切换至2.4G WiFi进行手动连接": "Veuillez passer votre téléphone à 2.4G WiFi pour une connexion manuelle" } \ No newline at end of file diff --git a/lan/lan_he.json b/lan/lan_he.json index f1110789..151f02c7 100644 --- a/lan/lan_he.json +++ b/lan/lan_he.json @@ -1145,5 +1145,7 @@ "双锁联动": "הצמדת נעילה כפולה", "1.用智能锁APP添加锁和网关": "1. הוסיפו מנעולים ושערים באמצעות אפליקציית Smart Lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. הפעל את פונקציית ביטול הנעילה מרחוק של המנעול באפליקציה (פונקציה זו כבויה כברירת מחדל). אם אפשרות זו אינה זמינה, המנעול לא יתמוך ב-Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. התקן את אפליקציית Google Home ולחץ על כפתור הפלוס בפינה השמאלית העליונה" + "3.安装Google Home APP,点击左上角的加号按钮": "3. התקן את אפליקציית Google Home ולחץ על כפתור הפלוס בפינה השמאלית העליונה", + "暂无最新记录": "אין כרגע רשומות עדכניות זמינות", + "请将手机切换至2.4G WiFi进行手动连接": "אנא העבר את הטלפון שלך ל- WiFi 2.4G לחיבור ידני" } \ No newline at end of file diff --git a/lan/lan_hi.json b/lan/lan_hi.json index 1360cfd5..463d1d90 100644 --- a/lan/lan_hi.json +++ b/lan/lan_hi.json @@ -1145,5 +1145,7 @@ "双锁联动": "द्वि पाश सहलग्नता", "1.用智能锁APP添加锁和网关": "1. स्मार्ट लॉक ऐप का उपयोग करके लॉक्स और गेटवे जोड़ें", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. एप्लिकेशन में लॉक का रिमोट अनलॉकिंग फ़ंक्शन सक्षम करें (यह फ़ंक्शन डिफ़ॉल्ट रूप से बंद है). यदि यह विकल्प उपलब्ध नहीं है, तो लॉक आपके गूगल होम को सपोर्ट नहीं करेगा।", - "3.安装Google Home APP,点击左上角的加号按钮": "3. गूगल होम ऐप को इंस्टॉल करें और ऊपरी बाएं कोने में प्लस बटन पर क्लिक करें।" + "3.安装Google Home APP,点击左上角的加号按钮": "3. गूगल होम ऐप को इंस्टॉल करें और ऊपरी बाएं कोने में प्लस बटन पर क्लिक करें।", + "暂无最新记录": "वर्तमान में कोई नवीनतम रिकॉर्ड उपलब्ध नहीं हैं", + "请将手机切换至2.4G WiFi进行手动连接": "मैन्युअल कनेक्शन के लिए कृपया अपना फोन 2.4 जी वाईफ़ाई पर स्विच करें।" } \ No newline at end of file diff --git a/lan/lan_hk.json b/lan/lan_hk.json index a314542e..be282c4f 100644 --- a/lan/lan_hk.json +++ b/lan/lan_hk.json @@ -1145,5 +1145,7 @@ "双锁联动": "雙鎖聯動", "1.用智能锁APP添加锁和网关": "1.使用智能鎖應用程序添加鎖和網關", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2.喺APP中開啟鎖嘅遠程解鎖功能(此功能默認關閉)。 如果此選項不可用,則鎖將唔撐Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3.安裝Google Home應用,點擊左上角嘅加號掣" + "3.安装Google Home APP,点击左上角的加号按钮": "3.安裝Google Home應用,點擊左上角嘅加號掣", + "暂无最新记录": "目前冇可用嘅最新記錄", + "请将手机切换至2.4G WiFi进行手动连接": "請把手機切換到2.4G WiFi進行手動連接" } \ No newline at end of file diff --git a/lan/lan_hr.json b/lan/lan_hr.json index 70897559..fd246ef3 100644 --- a/lan/lan_hr.json +++ b/lan/lan_hr.json @@ -1145,5 +1145,7 @@ "双锁联动": "Dvostruka brava", "1.用智能锁APP添加锁和网关": "1. Dodajte brave i pristupnike pomoću aplikacije pametne brave", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Omogućite funkciju daljinskog otključavanja brave u APP-u (ova je funkcija prema zadanim postavkama isključena). Ako ova opcija nije dostupna, zaključavanje neće podržavati Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Instalirajte aplikaciju Google Home i kliknite gumb plus u gornjem lijevom kutu" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instalirajte aplikaciju Google Home i kliknite gumb plus u gornjem lijevom kutu", + "暂无最新记录": "Trenutno nema dostupnih najnovijih podataka", + "请将手机切换至2.4G WiFi进行手动连接": "Prebacite telefon na 2.4G WiFi za ručno povezivanje" } \ No newline at end of file diff --git a/lan/lan_hu.json b/lan/lan_hu.json index 3c5d41ce..38a5662e 100644 --- a/lan/lan_hu.json +++ b/lan/lan_hu.json @@ -1145,5 +1145,7 @@ "双锁联动": "Dupla reteszelő rudazat", "1.用智能锁APP添加锁和网关": "1. Adjon hozzá zárakat és átjárókat az intelligens zár alkalmazással", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Engedélyezze a zár távoli feloldási funkcióját az APP-ban (ez a funkció alapértelmezés szerint ki van kapcsolva). Ha ez az opció nem érhető el, a zár nem támogatja a Google Home szolgáltatást", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Telepítse a Google Home alkalmazást, és kattintson a plusz gombra a bal felső sarokban" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Telepítse a Google Home alkalmazást, és kattintson a plusz gombra a bal felső sarokban", + "暂无最新记录": "Jelenleg nem állnak rendelkezésre legfrissebb rekordok", + "请将手机切换至2.4G WiFi进行手动连接": "Kérjük, kapcsolja át telefonját 2.4G WiFi-re a kézi csatlakozáshoz" } \ No newline at end of file diff --git a/lan/lan_id.json b/lan/lan_id.json index 224692f6..5adea3d9 100644 --- a/lan/lan_id.json +++ b/lan/lan_id.json @@ -1145,5 +1145,7 @@ "双锁联动": "Kunci ganda hubungan", "1.用智能锁APP添加锁和网关": "1. Tambahkan kunci dan gerbang menggunakan aplikasi smart lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Aktifkan fungsi kunci pengunci jarak jauh di aplikasi (fungsi ini dimatikan secara standar). Jika opsi ini tidak tersedia, kunci tidak akan mendukung Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Instal aplikasi Google Home dan klik tombol plus di sudut kiri atas" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instal aplikasi Google Home dan klik tombol plus di sudut kiri atas", + "暂无最新记录": "Saat ini tidak ada catatan terbaru yang tersedia", + "请将手机切换至2.4G WiFi进行手动连接": "Silahkan beralih ke 2.4G WiFi untuk koneksi manual" } \ No newline at end of file diff --git a/lan/lan_it.json b/lan/lan_it.json index 6eb09aab..1cbf97ea 100644 --- a/lan/lan_it.json +++ b/lan/lan_it.json @@ -1145,5 +1145,7 @@ "双锁联动": "Collegamento a doppio bloccaggio", "1.用智能锁APP添加锁和网关": "1. Aggiunge serrature e gateway usando l’applicazione smart lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Abilita la funzione di sblocco remoto del lock nella APP (questa funzione è disattivata in modo predefinito). Se questa opzione non è disponibile, il lock non supporta Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Installa l’applicazione Home di Google e fai clic sul pulsante più nell’angolo in alto a sinistra" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installa l’applicazione Home di Google e fai clic sul pulsante più nell’angolo in alto a sinistra", + "暂无最新记录": "Attualmente non sono disponibili dati più recenti", + "请将手机切换至2.4G WiFi进行手动连接": "Passa il telefono a 2,4g WiFi per la connessione manuale" } \ No newline at end of file diff --git a/lan/lan_ja.json b/lan/lan_ja.json index 7c81db90..cea8a5d0 100644 --- a/lan/lan_ja.json +++ b/lan/lan_ja.json @@ -1145,5 +1145,7 @@ "双锁联动": "二重ロック連動", "1.用智能锁APP添加锁和网关": "1. スマートロックappを使用してロックとゲートウェイを追加します", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. アプリでロックのリモートロック解除機能を有効にします(この機能はデフォルトでオフになっています)。このオプションが利用できない場合、ロックはgoogle homeをサポートしません", - "3.安装Google Home APP,点击左上角的加号按钮": "3. google homeアプリをインストールし、左上隅のプラスボタンをクリックします" + "3.安装Google Home APP,点击左上角的加号按钮": "3. google homeアプリをインストールし、左上隅のプラスボタンをクリックします", + "暂无最新记录": "最新の記録は残っていない", + "请将手机切换至2.4G WiFi进行手动连接": "手動接続のため、携帯電話を2.4 g wifiに切り替えてください" } \ No newline at end of file diff --git a/lan/lan_keys.json b/lan/lan_keys.json index 81ba73e9..6d2f3936 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1149,5 +1149,6 @@ "5.搜索": "5.搜索", ",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权", "暂无最新记录": "暂无最新记录", + "请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接", "网关添加成功": "网关添加成功" } diff --git a/lan/lan_kk.json b/lan/lan_kk.json index 27c9b22c..728c1946 100644 --- a/lan/lan_kk.json +++ b/lan/lan_kk.json @@ -1145,5 +1145,7 @@ "双锁联动": "Қос бұғаттау сілтемесі", "1.用智能锁APP添加锁和网关": "1. Смарт-құлыптау бағдарламасын пайдалана отырып құлыптар мен шлюздерді қосу", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. APP бағдарламасында құлыпты қашықтан ашу функциясын қосу (бұл функция әдепкі бойынша өшіріледі). Егер бұл параметр қол жетімді болмаса, бұғаттау Google Home-ды қолдамайды", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Google Home бағдарламасын орнатып, жоғарғы сол жақ бұрыштағы қосу түймешігін басыңыз" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Google Home бағдарламасын орнатып, жоғарғы сол жақ бұрыштағы қосу түймешігін басыңыз", + "暂无最新记录": "Қазіргі уақытта қол жетімді соңғы жазбалар жоқ", + "请将手机切换至2.4G WiFi进行手动连接": "Телефонды қолмен қосу үшін 2.4G WiFi бағдарламасына ауыстыруыңызды сұраймыз" } \ No newline at end of file diff --git a/lan/lan_ko.json b/lan/lan_ko.json index 7dcdfdf3..af0fab29 100644 --- a/lan/lan_ko.json +++ b/lan/lan_ko.json @@ -1145,5 +1145,7 @@ "双锁联动": "2 중 잠금 연결", "1.用智能锁APP添加锁和网关": "1. 스마트 잠금 앱을 사용하여 잠금 및 게이트웨이를 추가합니다", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. 앱에서 잠금의 원격 잠금 해제 기능을 활성화합니다 (이 기능은 기본적으로 꺼져 있습니다).이 옵션을 사용할 수 없는 경우 잠금은 Google Home을 지원하지 않습니다", - "3.安装Google Home APP,点击左上角的加号按钮": "3. 구글 홈 앱을 설치하고 왼쪽 상단 모서리에 있는 더하기 버튼을 클릭합니다" + "3.安装Google Home APP,点击左上角的加号按钮": "3. 구글 홈 앱을 설치하고 왼쪽 상단 모서리에 있는 더하기 버튼을 클릭합니다", + "暂无最新记录": "현재 사용 가능한 최신 레코드가 없습니다", + "请将手机切换至2.4G WiFi进行手动连接": "수동 연결을 위해 핸드폰을 2.4G WiFi로 바꿔주세요" } \ No newline at end of file diff --git a/lan/lan_lt.json b/lan/lan_lt.json index 9eedf503..4a84d77b 100644 --- a/lan/lan_lt.json +++ b/lan/lan_lt.json @@ -1145,5 +1145,7 @@ "双锁联动": "Dvigubo užrakto jungtis", "1.用智能锁APP添加锁和网关": "1. Pridėkite spynas ir šliuzus naudodami \"smart lock\" programą", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Įjunkite užrakto nuotolinio atrakinimo funkciją APP (ši funkcija yra išjungta pagal numatytuosius nustatymus). Jei ši parinktis nepasiekiama, užraktas nepalaikys \"Google Home\"", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Įdiekite \"Google Home\" programą ir spustelėkite pliuso mygtuką viršutiniame kairiajame kampe" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Įdiekite \"Google Home\" programą ir spustelėkite pliuso mygtuką viršutiniame kairiajame kampe", + "暂无最新记录": "Šiuo metu nėra naujausių įrašų", + "请将手机切换至2.4G WiFi进行手动连接": "Perjunkite telefoną į 2.4G WiFi, kad galėtumėte prisijungti rankiniu būdu" } \ No newline at end of file diff --git a/lan/lan_ms.json b/lan/lan_ms.json index 526575cc..a85297b6 100644 --- a/lan/lan_ms.json +++ b/lan/lan_ms.json @@ -1145,5 +1145,7 @@ "双锁联动": "Pautan kunci berganda", "1.用智能锁APP添加锁和网关": "1. Tambah kunci dan pintu masuk menggunakan apl kunci pintar", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Dayakan fungsi buka kunci jauh kunci dalam APP (fungsi ini dimatikan secara lalai). Jika pilihan ini tidak tersedia, kunci tidak akan menyokong Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Pasang apl Google Home dan klik butang tambah di penjuru kiri sebelah atas" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Pasang apl Google Home dan klik butang tambah di penjuru kiri sebelah atas", + "暂无最新记录": "Pada masa ini tiada rekod terkini tersedia", + "请将手机切换至2.4G WiFi进行手动连接": "Sila tukar telefon anda kepada WiFi 2.4G untuk sambungan manual" } \ No newline at end of file diff --git a/lan/lan_nl.json b/lan/lan_nl.json index 8f3575f0..ff92c9b7 100644 --- a/lan/lan_nl.json +++ b/lan/lan_nl.json @@ -1145,5 +1145,7 @@ "双锁联动": "Dubbele vergrendeling voor koppeling", "1.用智能锁APP添加锁和网关": "1. Voeg sloten en gateways toe met de smart lock app", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Open het slot op afstand in de APP (standaard uitgeschakeld). Als deze optie niet beschikbaar is, wordt google Home niet ondersteund", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Installeer de google home-app en klik op de plus-knop in de linkerbovenhoek" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installeer de google home-app en klik op de plus-knop in de linkerbovenhoek", + "暂无最新记录": "Er zijn momenteel geen recente gegevens beschikbaar", + "请将手机切换至2.4G WiFi进行手动连接": "Stel uw telefoon in op 2. 4g WiFi bij handmatige verbinding" } \ No newline at end of file diff --git a/lan/lan_pl.json b/lan/lan_pl.json index b9797859..9449d4c0 100644 --- a/lan/lan_pl.json +++ b/lan/lan_pl.json @@ -1145,5 +1145,7 @@ "双锁联动": "Podwójny zamek zawieszenia", "1.用智能锁APP添加锁和网关": "1. Dodaj zamki i bramy za pomocą aplikacji inteligentnego zamka", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Włącz funkcję zdalnego odblokowywania zamka w aplikacji (ta funkcja jest domyślnie wyłączona). Jeśli ta opcja nie jest dostępna, zamek nie będzie obsługiwał Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Zainstaluj aplikację Google Home i kliknij przycisk plusa w lewym górnym rogu" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Zainstaluj aplikację Google Home i kliknij przycisk plusa w lewym górnym rogu", + "暂无最新记录": "Obecnie nie ma dostępnych najnowszych rekordów", + "请将手机切换至2.4G WiFi进行手动连接": "Przełącz telefon na 2.4G Wi-Fi, aby uzyskać ręczne połączenie" } \ No newline at end of file diff --git a/lan/lan_pt.json b/lan/lan_pt.json index a4faac2a..0365fbd6 100644 --- a/lan/lan_pt.json +++ b/lan/lan_pt.json @@ -1145,5 +1145,7 @@ "双锁联动": "Articulação de trava dupla", "1.用智能锁APP添加锁和网关": "1. Adicione fechaduras e gateways usando o aplicativo Smart Lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Ative a função de desbloqueio remoto da fechadura no APP (esta função está desativada por padrão). Se esta opção não estiver disponível, o bloqueio não será compatível com o Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Instale o aplicativo Google Home e clique no botão de adição no canto superior esquerdo" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instale o aplicativo Google Home e clique no botão de adição no canto superior esquerdo", + "暂无最新记录": "Atualmente não há registros mais recentes disponíveis", + "请将手机切换至2.4G WiFi进行手动连接": "Mude seu telefone para WiFi 2.4G para conexão manual" } \ No newline at end of file diff --git a/lan/lan_ro.json b/lan/lan_ro.json index 635bb36a..c25f3051 100644 --- a/lan/lan_ro.json +++ b/lan/lan_ro.json @@ -1145,5 +1145,7 @@ "双锁联动": "Legătură dublă de blocare", "1.用智能锁APP添加锁和网关": "1. Adăugați încuietori și gateway-uri folosind aplicația smart lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Activați funcția de deblocare de la distanță a încuietorului în aplicație (această funcție este dezactivată în mod implicit). Dacă această opțiune nu este disponibilă, blocarea nu va accepta Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Instalați aplicația Google Home și faceți clic pe butonul plus din colțul din stânga sus" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instalați aplicația Google Home și faceți clic pe butonul plus din colțul din stânga sus", + "暂无最新记录": "În prezent nu există cele mai recente înregistrări disponibile", + "请将手机切换至2.4G WiFi进行手动连接": "Vă rugăm să comutați telefonul la WiFi 2.4G pentru conectarea manuală" } \ No newline at end of file diff --git a/lan/lan_ru.json b/lan/lan_ru.json index 10da744f..9daeed87 100644 --- a/lan/lan_ru.json +++ b/lan/lan_ru.json @@ -1145,5 +1145,7 @@ "双锁联动": "2.1.3 двойная блокировка", "1.用智能锁APP添加锁和网关": "1. Добавить замки и шлюзы с помощью приложения smart lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Включите функцию удаленного разблокирования замка в приложении (эта функция выключается по умолчанию). Если эта опция не доступна, блокировка не будет поддерживать Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Установите приложение Google Home и нажмите кнопку plus в левом верхнем углу" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Установите приложение Google Home и нажмите кнопку plus в левом верхнем углу", + "暂无最新记录": "В настоящее время последние данные отсутствуют", + "请将手机切换至2.4G WiFi进行手动连接": "Пожалуйста, переключите телефон на 2.4G WiFi для ручного подключения" } \ No newline at end of file diff --git a/lan/lan_sk.json b/lan/lan_sk.json index 284c99cb..4faea5d9 100644 --- a/lan/lan_sk.json +++ b/lan/lan_sk.json @@ -1145,5 +1145,7 @@ "双锁联动": "Dvojitý zámok", "1.用智能锁APP添加锁和网关": "1. Pridajte zámky a brány pomocou aplikácie inteligentného zámku", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Povoľte funkciu diaľkového odomykania zámku v aplikácii APP (táto funkcia je predvolene vypnutá). Ak táto možnosť nie je k dispozícii, zámok nebude podporovať Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Nainštalujte si aplikáciu Google Home a kliknite na tlačidlo plus v ľavom hornom rohu" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Nainštalujte si aplikáciu Google Home a kliknite na tlačidlo plus v ľavom hornom rohu", + "暂无最新记录": "Momentálne nie sú k dispozícii žiadne najnovšie záznamy", + "请将手机切换至2.4G WiFi进行手动连接": "Pre manuálne pripojenie prepnite telefón na 2.4G WiFi" } \ No newline at end of file diff --git a/lan/lan_sr_cyrl.json b/lan/lan_sr_cyrl.json index 3c3b8dec..7c61e6cd 100644 --- a/lan/lan_sr_cyrl.json +++ b/lan/lan_sr_cyrl.json @@ -1145,5 +1145,7 @@ "双锁联动": "Двострука брава веза", "1.用智能锁APP添加锁和网关": "1 . Додајте браве и гатеваи помоћу апликације Смарт Лоцк", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2 . Омогућите функцију даљинског откључавања браве у АПП-у (ова функција је подразумевано искључена). Ако ова опција није доступна, брава неће подржати Гоогле Хоме", - "3.安装Google Home APP,点击左上角的加号按钮": "3 . Инсталирајте апликацију Гоогле Хоме и кликните на дугме плус у горњем левом углу" + "3.安装Google Home APP,点击左上角的加号按钮": "3 . Инсталирајте апликацију Гоогле Хоме и кликните на дугме плус у горњем левом углу", + "暂无最新记录": "Тренутно нема доступних најновијих података", + "请将手机切换至2.4G WiFi进行手动连接": "Пребаците телефон на КСНУМКСГ ВиФи за ручно повезивање" } \ No newline at end of file diff --git a/lan/lan_sv.json b/lan/lan_sv.json index b81f6bef..4ec91309 100644 --- a/lan/lan_sv.json +++ b/lan/lan_sv.json @@ -1145,5 +1145,7 @@ "双锁联动": "Dubbel låslänkage", "1.用智能锁APP添加锁和网关": "1. Lägg till lås och gateways med hjälp av den smarta låsappen", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Aktivera fjärrupplåsningsfunktionen för låset i APP (den här funktionen är avstängd som standard). Om det här alternativet inte är tillgängligt kommer låset inte att stödja Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Installera Google Home-appen och klicka på plusknappen i det övre vänstra hörnet" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Installera Google Home-appen och klicka på plusknappen i det övre vänstra hörnet", + "暂无最新记录": "Det finns för närvarande inga senaste poster tillgängliga", + "请将手机切换至2.4G WiFi进行手动连接": "Byt din telefon till 2.4G WiFi för manuell anslutning" } \ No newline at end of file diff --git a/lan/lan_th.json b/lan/lan_th.json index 0bf0f6a4..234fce02 100644 --- a/lan/lan_th.json +++ b/lan/lan_th.json @@ -1145,5 +1145,7 @@ "双锁联动": "ดับเบิ้ลล็อคการเชื่อมต่อ", "1.用智能锁APP添加锁和网关": "1. เพิ่มล็อค และเกตเวย์โดยใช้แอพสมาร์ทล็อค", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. เปิดใช้งานฟังก์ชันการปลดล็อคระยะไกลของการล็อคในแอพ (ฟังก์ชันนี้ จะถูกปิดโดยค่าเริ่มต้น) หากไม่มีตัวเลือกนี้ การล็อคจะไม่สนับสนุนกูเกิ้ลโฮม", - "3.安装Google Home APP,点击左上角的加号按钮": "3. ติดตั้ง googlehome แอพ และคลิกปุ่มบวก ที่มุมบนซ้าย" + "3.安装Google Home APP,点击左上角的加号按钮": "3. ติดตั้ง googlehome แอพ และคลิกปุ่มบวก ที่มุมบนซ้าย", + "暂无最新记录": "ปัจจุบันยังไม่มีบันทึกล่าสุด ที่มีอยู่", + "请将手机切换至2.4G WiFi进行手动连接": "กรุณาเปลี่ยนโทรศัพท์เป็น 2.4 GWiFi สำหรับการเชื่อมต่อด้วยตนเอง" } \ No newline at end of file diff --git a/lan/lan_tr.json b/lan/lan_tr.json index d09053ca..34f5ab7e 100644 --- a/lan/lan_tr.json +++ b/lan/lan_tr.json @@ -1145,5 +1145,7 @@ "双锁联动": "Çift kilit bağlantısı", "1.用智能锁APP添加锁和网关": "1. Akıllı kilit uygulamasını kullanarak kilitler ve ağ geçitleri ekleyin", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. APP'de kilidin uzaktan kilit açma işlevini etkinleştirin (bu işlev varsayılan olarak kapalıdır). Bu seçenek mevcut değilse, kilit Google Home'u desteklemeyecektir", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Google Home uygulamasını yükleyin ve sol üst köşedeki artı düğmesini tıklayın" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Google Home uygulamasını yükleyin ve sol üst köşedeki artı düğmesini tıklayın", + "暂无最新记录": "Şu anda en son kayıt mevcut değil", + "请将手机切换至2.4G WiFi进行手动连接": "Manuel bağlantı için lütfen telefonunuzu 2.4G WiFi'ye getirin" } \ No newline at end of file diff --git a/lan/lan_tw.json b/lan/lan_tw.json index 46f4aaf7..69fd23f7 100644 --- a/lan/lan_tw.json +++ b/lan/lan_tw.json @@ -1125,11 +1125,11 @@ "网关添加成功": "已成功添加網關", "功能开启后,你将可以通过网关远程开锁。": "啓用該功能後,您可以通過網關遠程解鎖。", "录屏已保存到相册": "屏幕錄製文件保存到相冊", - "通话未接通,已挂断": "電話未接通,掛了", + "通话未接通,已挂断": "電話未接通,已掛斷", "通话异常中断": "異常呼叫中斷", "通话连接失败": "呼叫連接失敗", - "已挂断": "掛", - "正在说话...": "說現在…", + "已挂断": "已掛斷", + "正在说话...": "正在說話…", "设备不在线": "設備未在線", "设备未配网": "設備未連接到網絡", "已静音": "聲音已被關掉了", @@ -1140,10 +1140,12 @@ "呼叫目标": "調用目標", "管理员APP": "管理員應用", "可视门铃码": "可視門鈴碼", - "电子反锁": "電子防抱死裝置", - "双重认证": "雙因素身份驗證", + "电子反锁": "電子反鎖", + "双重认证": "雙重認證", "双锁联动": "雙鎖聯動", "1.用智能锁APP添加锁和网关": "1. 使用智能鎖應用程序添加鎖和網關", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. 在APP中開啓鎖的遠程開鎖功能(默認關閉)。如果這個選項不可用,鎖將不支持谷歌Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. 安裝谷歌Home應用程序並單擊左上角的加號按鈕" + "3.安装Google Home APP,点击左上角的加号按钮": "3. 安裝谷歌Home應用程序並單擊左上角的加號按鈕", + "暂无最新记录": "目前沒有最新的記錄", + "请将手机切换至2.4G WiFi进行手动连接": "手動連接時請將手機調至2.4G WiFi" } \ No newline at end of file diff --git a/lan/lan_uk.json b/lan/lan_uk.json index 426cbc1a..0ddc8868 100644 --- a/lan/lan_uk.json +++ b/lan/lan_uk.json @@ -1145,5 +1145,7 @@ "双锁联动": "Важіль з подвійним замком", "1.用智能锁APP添加锁和网关": "1. Додайте замки та шлюзи за допомогою програми Smart Lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Увімкніть функцію дистанційного розблокування замка в APP (ця функція вимкнена за замовчуванням). Якщо ця опція недоступна, замок не підтримуватиме Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Встановіть програму Google Home і натисніть кнопку плюс у верхньому лівому кутку" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Встановіть програму Google Home і натисніть кнопку плюс у верхньому лівому кутку", + "暂无最新记录": "Наразі немає останніх доступних записів", + "请将手机切换至2.4G WiFi进行手动连接": "Будь ласка, перемкніть свій телефон на 2.4G WiFi для ручного підключення" } \ No newline at end of file diff --git a/lan/lan_ur.json b/lan/lan_ur.json index 4c760df9..7bf3a227 100644 --- a/lan/lan_ur.json +++ b/lan/lan_ur.json @@ -1145,5 +1145,7 @@ "双锁联动": "ڈبل لاک لنک", "1.用智能锁APP添加锁和网关": "1. سمارٹ لاک ایپ کا استعمال کرتے ہوئے لاک اور گیٹ وے شامل کریں", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. اے پی پی میں لاک کے ریموٹ ان لاکنگ فنکشن کو فعال کریں (یہ فنکشن ڈیفالٹ طور پر بند ہے)۔ اگر یہ آپشن دستیاب نہیں ہے تو ، لاک گوگل ہوم کو سپورٹ نہیں کرے گا۔", - "3.安装Google Home APP,点击左上角的加号按钮": "3. گوگل ہوم ایپ انسٹال کریں اور اوپری بائیں کونے میں پلس بٹن پر کلک کریں۔" + "3.安装Google Home APP,点击左上角的加号按钮": "3. گوگل ہوم ایپ انسٹال کریں اور اوپری بائیں کونے میں پلس بٹن پر کلک کریں۔", + "暂无最新记录": "فی الحال کوئی تازہ ترین ریکارڈ دستیاب نہیں ہے", + "请将手机切换至2.4G WiFi进行手动连接": "براہ کرم دستی کنکشن کے لئے اپنے فون کو 2.4 جی وائی فائی پر سوئچ کریں" } \ No newline at end of file diff --git a/lan/lan_vi.json b/lan/lan_vi.json index 1517c8cf..e91661df 100644 --- a/lan/lan_vi.json +++ b/lan/lan_vi.json @@ -1145,5 +1145,7 @@ "双锁联动": "Liên kết hai khóa", "1.用智能锁APP添加锁和网关": "1. Thêm khoá và cổng bằng ứng dụng Smart Lock", "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Kích hoạt chức năng mở khóa từ xa trong ứng dụng (chức năng này bị tắt theo mặc định). Nếu tùy chọn này không có sẵn, khóa sẽ không hỗ trợ Google Home", - "3.安装Google Home APP,点击左上角的加号按钮": "3. Cài đặt ứng dụng Google Home và nhấn nút Plus ở góc trên bên trái" + "3.安装Google Home APP,点击左上角的加号按钮": "3. Cài đặt ứng dụng Google Home và nhấn nút Plus ở góc trên bên trái", + "暂无最新记录": "Hiện tại không có hồ sơ mới nhất", + "请将手机切换至2.4G WiFi进行手动连接": "Vui lòng chuyển điện thoại sang 2.4G WiFi để kết nối bằng tay" } \ No newline at end of file diff --git a/lan/lan_zh.json b/lan/lan_zh.json index 2a91849d..62c3fca0 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -1149,5 +1149,6 @@ "5.搜索": "5.搜索", ",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权", "暂无最新记录": "暂无最新记录", + "请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接", "网关添加成功": "网关添加成功" } From fe6480430f2f40a2610a6a7e7f8e4113b4f7880b Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 20 Mar 2025 16:52:55 +0800 Subject: [PATCH 29/54] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=88=B0=E4=BF=84=E8=AF=AD=E6=96=87=E6=9C=AC=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E6=BA=A2=E5=87=BA=E7=9A=84=E6=83=85=E5=86=B5=E3=80=81=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=83=A8=E5=88=86=E5=9B=BD=E9=99=85=E5=8C=96=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lan/lan_keys.json | 1 + lan/lan_ru.json | 3 +- lan/lan_zh.json | 1 + .../catEyeCustomMode_page.dart | 13 ++- .../catEyeWorkMode/catEyeWorkMode_page.dart | 93 ++++++++++--------- .../lockSet/liveVideo/liveVideo_page.dart | 2 +- .../msgNotification/msgNotification_page.dart | 14 ++- lib/tools/commonItem.dart | 14 ++- 8 files changed, 87 insertions(+), 54 deletions(-) diff --git a/lan/lan_keys.json b/lan/lan_keys.json index 6d2f3936..0ca0b455 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1150,5 +1150,6 @@ ",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权", "暂无最新记录": "暂无最新记录", "请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接", + "请扫描可视门铃码二维码": "请扫描可视门铃码二维码", "网关添加成功": "网关添加成功" } diff --git a/lan/lan_ru.json b/lan/lan_ru.json index 9daeed87..75878b41 100644 --- a/lan/lan_ru.json +++ b/lan/lan_ru.json @@ -504,7 +504,7 @@ "您的钥匙已过期": "Срок действия вашего ключа истек", "常开模式开启": "Замок находится в режиме прохода", "超级管理员": "Супер админ", - "授权管理员": "Авторизованный администратор", + "授权管理员": "Автор. администратор", "普通用户": "Обычный пользователь", "余": "Баланс", "天": "День", @@ -1147,5 +1147,6 @@ "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Включите функцию удаленного разблокирования замка в приложении (эта функция выключается по умолчанию). Если эта опция не доступна, блокировка не будет поддерживать Google Home", "3.安装Google Home APP,点击左上角的加号按钮": "3. Установите приложение Google Home и нажмите кнопку plus в левом верхнем углу", "暂无最新记录": "В настоящее время последние данные отсутствуют", + "请扫描可视门铃码二维码": "Сканируйте код вызова", "请将手机切换至2.4G WiFi进行手动连接": "Пожалуйста, переключите телефон на 2.4G WiFi для ручного подключения" } \ No newline at end of file diff --git a/lan/lan_zh.json b/lan/lan_zh.json index 62c3fca0..4bf1ac49 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -1150,5 +1150,6 @@ ",并用智能锁APP的账号和密码进行授权": ",并用智能锁APP的账号和密码进行授权", "暂无最新记录": "暂无最新记录", "请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接", + "请扫描可视门铃码二维码": "请扫描可视门铃码二维码", "网关添加成功": "网关添加成功" } diff --git a/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart b/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart index 45fed154..6e472015 100755 --- a/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart +++ b/lib/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart @@ -48,9 +48,18 @@ class _CatEyeCustomModePageState extends State { isHaveLine: false, isHaveDirection: true, isHaveRightWidget: true, - rightWidget: Text(state.selectVideoSlot.value, + rightWidget: Container( + constraints: BoxConstraints(maxWidth: 150.w), // 限制最大宽度 + child: Text( + state.selectVideoSlot.value, style: TextStyle( - fontSize: 22.sp, color: AppColors.darkGrayTextColor)), + fontSize: 22.sp, color: AppColors.darkGrayTextColor), + textAlign: TextAlign.right, // 右对齐 + softWrap: true, // 允许换行 + maxLines: 2, + overflow: TextOverflow.ellipsis, // 文本溢出时显示 + ), + ), action: () { Navigator.pushNamed(context, Routers.videoSlotPage, arguments: { diff --git a/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart b/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart index 61052c00..66d15f9a 100755 --- a/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart +++ b/lib/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart @@ -37,48 +37,50 @@ class _CatEyeWorkModePageState extends State { Navigator.pop(context, true); }, backgroundColor: AppColors.mainColor), - body: Obx( - () => Column( - children: [ - SizedBox( - height: 30.h, - ), - _buildTipsView( - '省电模式'.tr + ':\n', - '适合门口较为安全的环境。'.tr + - '\n' + - '仅发生特定事件才录像,并可查看实时画面。'.tr + - '\n' + - '一般情况下,满电可使用7-8个月'.tr, - 0), - SizedBox( - height: 30.h, - ), - _buildTipsView( - '逗留抓拍模式'.tr + ':\n', - '有人逗留或发生特定事件才录像,可随时查看'.tr + - '\n' + - '实时画面。'.tr + - '\n' + - '一般情况下,满电可使用5~6个月。'.tr, - 1), - SizedBox( - height: 30.h, - ), - _buildTipsView( - '实时监控模式'.tr + ':\n', - '适合门口人员复杂、较不安全的环境。'.tr + - '\n' + - '有人出现就录像,可随时查看实时画面。'.tr + - '\n' + - '一般情况下,满电可使用2~4个月。'.tr, - 2), - SizedBox( - height: 30.h, - ), - _buildTipsView('自定义模式'.tr + ':\n', - '根据您家门口实际情况设置录像和实时画面功能。'.tr + '\n' + '可使用时长由具体设置决定。'.tr, 3) - ], + body: SingleChildScrollView( + child: Obx( + () => Column( + children: [ + SizedBox( + height: 30.h, + ), + _buildTipsView( + '省电模式'.tr + ':\n', + '适合门口较为安全的环境。'.tr + + '\n' + + '仅发生特定事件才录像,并可查看实时画面。'.tr + + '\n' + + '一般情况下,满电可使用7-8个月'.tr, + 0), + SizedBox( + height: 30.h, + ), + _buildTipsView( + '逗留抓拍模式'.tr + ':\n', + '有人逗留或发生特定事件才录像,可随时查看'.tr + + '\n' + + '实时画面。'.tr + + '\n' + + '一般情况下,满电可使用5~6个月。'.tr, + 1), + SizedBox( + height: 30.h, + ), + _buildTipsView( + '实时监控模式'.tr + ':\n', + '适合门口人员复杂、较不安全的环境。'.tr + + '\n' + + '有人出现就录像,可随时查看实时画面。'.tr + + '\n' + + '一般情况下,满电可使用2~4个月。'.tr, + 2), + SizedBox( + height: 30.h, + ), + _buildTipsView('自定义模式'.tr + ':\n', + '根据您家门口实际情况设置录像和实时画面功能。'.tr + '\n' + '可使用时长由具体设置决定。'.tr, 3) + ], + ), ), ), ); @@ -121,13 +123,14 @@ class _CatEyeWorkModePageState extends State { ), GestureDetector( child: Container( - width: 90.w, - height: 40.h, + padding: EdgeInsets.all(8.w), decoration: BoxDecoration( color: Colors.transparent, borderRadius: BorderRadius.circular(15.0), border: Border.all( - color: AppColors.placeholderTextColor, width: 1.w), + color: AppColors.placeholderTextColor, + width: 1.w, + ), ), child: Center( child: Text( diff --git a/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart b/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart index d07a8e5c..2f10c0a2 100755 --- a/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart +++ b/lib/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart @@ -28,7 +28,7 @@ class _LiveVideoPageState extends State { return Scaffold( backgroundColor: AppColors.mainBackgroundColor, appBar: TitleAppBar( - barTitle: '实时画面', + barTitle: '实时画面'.tr, haveBack: true, backAction: () { Navigator.pop(context, true); diff --git a/lib/main/lockDetail/messageWarn/msgNotification/msgNotification/msgNotification_page.dart b/lib/main/lockDetail/messageWarn/msgNotification/msgNotification/msgNotification_page.dart index 2fa56dd0..5e786d6f 100755 --- a/lib/main/lockDetail/messageWarn/msgNotification/msgNotification/msgNotification_page.dart +++ b/lib/main/lockDetail/messageWarn/msgNotification/msgNotification/msgNotification_page.dart @@ -155,10 +155,16 @@ class _MsgNotificationPageState extends State { SizedBox( height: 60.h, ), - Text( - '此模块功能需要锁联网后设置方可生效'.tr, - style: TextStyle(fontSize: 20.sp), - ) + Padding( + padding: EdgeInsets.symmetric(horizontal: 30.w), + child: Text( + '此模块功能需要锁联网后设置方可生效'.tr, + style: TextStyle(fontSize: 20.sp), + textAlign: TextAlign.center, // 文本居中对齐 + softWrap: true, // 允许文本换行 + overflow: TextOverflow.visible, // 文本溢出时显示 + ), + ), ], ); } diff --git a/lib/tools/commonItem.dart b/lib/tools/commonItem.dart index 2a9d1c1d..b5c40036 100755 --- a/lib/tools/commonItem.dart +++ b/lib/tools/commonItem.dart @@ -20,6 +20,7 @@ class CommonItem extends StatelessWidget { this.rightWidget, this.isTipsImg, this.action, + this.leftTitleMaxWidth, // 新增属性 this.tipsImgAction}) : super(key: key); String? leftTitel; @@ -34,6 +35,7 @@ class CommonItem extends StatelessWidget { bool? setHeight; bool? isTipsImg; bool? isPadding; + final double? leftTitleMaxWidth; // 新增属性声明 @override Widget build(BuildContext context) { @@ -57,7 +59,17 @@ class CommonItem extends StatelessWidget { ), child: Row( children: [ - Text(leftTitel!, style: TextStyle(fontSize: 22.sp)), + ConstrainedBox( + constraints: BoxConstraints( + maxWidth: leftTitleMaxWidth ?? 0.6.sw, // 默认最大宽度为屏幕宽度的40% + ), + child: Text( + leftTitel!, + style: TextStyle(fontSize: 22.sp), + overflow: TextOverflow.ellipsis, // 超出部分显示省略号 + maxLines: 3, // 最多显示2行 + ), + ), SizedBox(width: 6.w), if (isTipsImg == true) GestureDetector( From d3aee05534588582ab5f63c62acb1a04155db1d9 Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 20 Mar 2025 17:35:11 +0800 Subject: [PATCH 30/54] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E7=AE=80=E4=BD=93?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E4=B8=8B=E6=89=8D=E6=98=BE=E7=A4=BA=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../starChart/handle/impl/udp_talk_request_handler.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart b/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart index c55043bc..44f26c29 100644 --- a/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart +++ b/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart @@ -17,9 +17,13 @@ import 'package:star_lock/talk/starChart/proto/talk_expect.pb.dart'; import 'package:star_lock/talk/starChart/proto/talk_request.pb.dart'; import 'package:star_lock/tools/push/xs_jPhush.dart'; import 'package:star_lock/tools/storage.dart'; +import 'package:star_lock/translations/current_locale_tool.dart'; class UdpTalkRequestHandler extends ScpMessageBaseHandle implements ScpMessageHandler { + RxString currentLanguage = + CurrentLocaleTool.getCurrentLocaleString().obs; // 当前选择语言 + @override void handleReq(ScpMessage scpMessage) async { // 回复成功 @@ -107,7 +111,9 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle } }; - XSJPushProvider().showCustomNotification(message); + if (currentLanguage.value == 'zh_CN') { + XSJPushProvider().showCustomNotification(message); + } } /* const AndroidNotificationDetails androidPlatformChannelSpecifics = From 8b61e3d5a606ba9f6d062d05003addf4bb43c972 Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 20 Mar 2025 17:54:14 +0800 Subject: [PATCH 31/54] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=88=B0=E4=BF=84=E8=AF=AD=E6=96=87=E6=9C=AC=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E6=BA=A2=E5=87=BA=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authorizedAdministratorList_page.dart | 6 +++-- lib/tools/submitBtn.dart | 26 ++++++++++++------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart b/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart index f885fa3a..597ddea1 100755 --- a/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart +++ b/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart @@ -109,8 +109,10 @@ class _AuthorizedAdministratorListPageState 64.h), Align( alignment: const Alignment(0.0, 0.2), - child: SizedBox( - width: 360.w, + child: Container( + constraints: BoxConstraints( + maxWidth: 0.9.sw, + ), child: SubmitBtn( btnName: '添加授权管理员'.tr, onClick: () { diff --git a/lib/tools/submitBtn.dart b/lib/tools/submitBtn.dart index 57b6ea69..01511077 100755 --- a/lib/tools/submitBtn.dart +++ b/lib/tools/submitBtn.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -9,9 +8,9 @@ import '../app_settings/app_colors.dart'; * */ class SubmitBtn extends StatelessWidget { - SubmitBtn({ - required this.btnName, Key? key, + required this.btnName, + Key? key, this.borderRadius, this.color, this.padding, @@ -49,7 +48,9 @@ class SubmitBtn extends StatelessWidget { Widget build(BuildContext context) { return Container( width: ScreenUtil().screenWidth - 40.w, - height: 60.h, + constraints: BoxConstraints( + minHeight: 60.h, // 设置最小高度 + ), child: ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: isDisabled == false @@ -63,7 +64,14 @@ class SubmitBtn extends StatelessWidget { }, child: Text( btnName!, - style: TextStyle(color: Colors.white, fontSize: 24.sp), + textAlign: TextAlign.center, // 文本居中对齐 + softWrap: true, // 允许换行 + overflow: TextOverflow.visible, // 文本溢出时显示 + style: TextStyle( + color: Colors.white, + fontSize: 24.sp, + height: 1.2, // 行高 + ), )), ); /* @@ -111,9 +119,9 @@ class SubmitBtn extends StatelessWidget { * */ class AddBottomWhiteBtn extends StatelessWidget { - AddBottomWhiteBtn({ - required this.btnName, Key? key, + required this.btnName, + Key? key, this.onClick, }) : super(key: key); String? btnName; @@ -164,9 +172,9 @@ class AddBottomWhiteBtn extends StatelessWidget { * */ class OutLineBtn extends StatelessWidget { - OutLineBtn({ - required this.btnName, Key? key, + required this.btnName, + Key? key, this.onClick, }) : super(key: key); String? btnName; From 65c82a34abea31cfa56bf3c521f3e53affef6353 Mon Sep 17 00:00:00 2001 From: liyi Date: Fri, 21 Mar 2025 16:19:50 +0800 Subject: [PATCH 32/54] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E5=AF=B9=E8=AE=B2?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AF=B9=E8=AE=B2=E8=AF=B7=E6=B1=82=E8=B6=85=E6=97=B6=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E4=B8=BA30=E7=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/talk/starChart/constant/talk_constant.dart | 2 +- .../starChart/handle/impl/udp_talk_request_handler.dart | 8 ++++++-- .../other/talke_request_over_time_timer_manager.dart | 2 ++ lib/talk/starChart/star_chart_manage.dart | 9 ++++----- lib/talk/starChart/views/talkView/talk_view_logic.dart | 6 +++--- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/talk/starChart/constant/talk_constant.dart b/lib/talk/starChart/constant/talk_constant.dart index 23b6934f..a3847d50 100644 --- a/lib/talk/starChart/constant/talk_constant.dart +++ b/lib/talk/starChart/constant/talk_constant.dart @@ -3,5 +3,5 @@ class TalkConstant { static const int talkePingOverTime = 10; static const int talkeDataOverTime = 10; // 收到TalkRequest 未处理超时时间(s) - static const int talkeRequestOverTime = 60; + static const int talkeRequestOverTime = 30; } diff --git a/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart b/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart index 44f26c29..8517e46b 100644 --- a/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart +++ b/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart @@ -54,6 +54,12 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle startChartManage.startTalkExpectTimer(); // 停止发送对讲请求 startChartManage.stopCallRequestMessageTimer(); + // 收到应答后取消超时判断 + talkeRequestOverTimeTimerManager.cancel(); + // 启动发送ping + startChartManage.startTalkPingMessageTimer(); + // 启动ping命令超时判断 + talkePingOverTimeTimerManager.start(); } } @@ -74,8 +80,6 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle _showTalkRequestNotification(talkObjectName: talkObjectName); // 设置为等待接听状态 talkStatus.setPassiveCallWaitingAnswer(); - // 启动对讲请求超时定时器 - talkeRequestOverTimeTimerManager.start(); // 收到呼叫请求,跳转到接听页面 if (startChartManage .getDefaultTalkExpect() diff --git a/lib/talk/starChart/handle/other/talke_request_over_time_timer_manager.dart b/lib/talk/starChart/handle/other/talke_request_over_time_timer_manager.dart index 44bb1630..c4347317 100644 --- a/lib/talk/starChart/handle/other/talke_request_over_time_timer_manager.dart +++ b/lib/talk/starChart/handle/other/talke_request_over_time_timer_manager.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; +import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/talk/starChart/constant/talk_constant.dart'; import 'package:star_lock/talk/starChart/constant/talk_status.dart'; import 'package:star_lock/talk/starChart/star_chart_manage.dart'; @@ -34,6 +35,7 @@ class TalkeRequestOverTimeTimerManager { StartChartManage().startTalkRejectMessageTimer(); StartChartManage().stopSendingRbcuInfoMessages(); StartChartManage().stopSendingRbcuProBeMessages(); + StartChartManage().stopCallRequestMessageTimer(); talkStatus.setInitializationCompleted(); Get.back(); } diff --git a/lib/talk/starChart/star_chart_manage.dart b/lib/talk/starChart/star_chart_manage.dart index 1e53b7f0..d379ef01 100644 --- a/lib/talk/starChart/star_chart_manage.dart +++ b/lib/talk/starChart/star_chart_manage.dart @@ -417,8 +417,7 @@ class StartChartManage { void startCallRequestMessageTimer({required String ToPeerId}) async { // 如果已经处于等待接听状态就不发送 if (talkStatus.status != TalkStatus.proactivelyCallWaitingAnswer) { - // 停止播放铃声 - // AudioPlayerManager().playRingtone(); + // 如果是h264则跳转至webview if (_defaultTalkExpect.videoType.contains(VideoTypeE.H264)) { Get.toNamed( Routers.h264WebView, @@ -429,6 +428,7 @@ class StartChartManage { ); } } + // 启动定时器持续发送对讲请求 talkRequestTimer ??= Timer.periodic( Duration( seconds: _defaultIntervalTime, @@ -438,9 +438,8 @@ class StartChartManage { }, ); talkStatus.setProactivelyCallWaitingAnswer(); - startTalkPingMessageTimer(); - // 启动是否收到ping超时判断定时器 - talkePingOverTimeTimerManager.start(); + // 启动对讲请求应答超时判断 + talkeRequestOverTimeTimerManager.start(); } /// 停止持续发送对讲请求 diff --git a/lib/talk/starChart/views/talkView/talk_view_logic.dart b/lib/talk/starChart/views/talkView/talk_view_logic.dart index c901d5ab..a0a79f52 100644 --- a/lib/talk/starChart/views/talkView/talk_view_logic.dart +++ b/lib/talk/starChart/views/talkView/talk_view_logic.dart @@ -125,7 +125,7 @@ class TalkViewLogic extends BaseGetXController { if (_isFirstFrame) { _startTime = currentTime; _isFirstFrame = false; - AppLog.log('记录第一帧的时间戳${currentTime},${talkData.durationMs}'); + // AppLog.log('记录第一帧的时间戳${currentTime},${talkData.durationMs}'); } // 计算实际延迟:当前时间 - 预期播放时间 @@ -249,11 +249,11 @@ class TalkViewLogic extends BaseGetXController { if (delay > delayThresholdHigh && bufferSize < maxBufferSize) { // 延迟较大,增加缓冲区 bufferSize = min(bufferSize + adjustInterval, maxBufferSize); - AppLog.log('📈 增加缓冲区 - 当前大小: $bufferSize, 延迟: ${delay}ms'); + // AppLog.log('📈 增加缓冲区 - 当前大小: $bufferSize, 延迟: ${delay}ms'); } else if (delay < delayThresholdLow && bufferSize > minBufferSize) { // 延迟较小,减少缓冲区 bufferSize = max(bufferSize - adjustInterval, minBufferSize); - AppLog.log('📉 减少缓冲区 - 当前大小: $bufferSize, 延迟: ${delay}ms'); + // AppLog.log('📉 减少缓冲区 - 当前大小: $bufferSize, 延迟: ${delay}ms'); } } From 7f2c2369a3cecbe6627587d763320c1f75e2b9b8 Mon Sep 17 00:00:00 2001 From: liyi Date: Sat, 22 Mar 2025 14:25:43 +0800 Subject: [PATCH 33/54] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E4=BF=84=E8=AF=AD?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lan/lan_en.json | 1 + lan/lan_keys.json | 2 ++ lan/lan_ru.json | 6 +++-- lan/lan_zh.json | 2 ++ .../configuringWifi/configuringWifi_page.dart | 2 +- .../videoLog/videoLog/videoLog_page.dart | 4 +-- .../gaode/lockAddressGaoDe_page.dart | 21 ++++++++++------ lib/tools/advancedCalendar/src/widget.dart | 25 +++++++++++++------ 8 files changed, 44 insertions(+), 19 deletions(-) diff --git a/lan/lan_en.json b/lan/lan_en.json index 748227b8..56c9bee8 100644 --- a/lan/lan_en.json +++ b/lan/lan_en.json @@ -1147,5 +1147,6 @@ "网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "After the gateway is powered on, press and hold the reset button for 5 seconds. Click Next when the blue indicator light flashes", "暂无最新记录": "There are currently no latest records available", "请将手机切换至2.4G WiFi进行手动连接": "Please switch your phone to 2.4G WiFi for manual connection", + "请确保网络是2.4GHz Wi-Fi": "Please ensure that the network is 2.4GHz Wi Fi", "网关添加成功": "Gateway added successfully" } diff --git a/lan/lan_keys.json b/lan/lan_keys.json index 0ca0b455..a284f512 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1151,5 +1151,7 @@ "暂无最新记录": "暂无最新记录", "请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接", "请扫描可视门铃码二维码": "请扫描可视门铃码二维码", + "请确保网络是2.4GHz Wi-Fi": "请确保网络是2.4GHz Wi-Fi", + "已选": "已选", "网关添加成功": "网关添加成功" } diff --git a/lan/lan_ru.json b/lan/lan_ru.json index 75878b41..d74b4d67 100644 --- a/lan/lan_ru.json +++ b/lan/lan_ru.json @@ -630,12 +630,12 @@ "关锁": "Закрыть замок", "功能": "Функция", "配件": "Детали", - "云存": "Облачное хранилище", + "云存": "Cloud", "本地": "Эта местность", "3天滚动储存": "3 дня прокатного хранения", "去升级": "Обновить сейчас", "下载列表": "Скачать список", - "已下载": "Загружено", + "已下载": "Downloaded", "全部视频": "Все видео", "已为本设备免费提供3大滚动视频储存服务": "Для этого устройства бесплатно предоставлены три услуги по хранению видео с прокруткой.", "视频播放": "Воспроизведение видео", @@ -1148,5 +1148,7 @@ "3.安装Google Home APP,点击左上角的加号按钮": "3. Установите приложение Google Home и нажмите кнопку plus в левом верхнем углу", "暂无最新记录": "В настоящее время последние данные отсутствуют", "请扫描可视门铃码二维码": "Сканируйте код вызова", + "请确保网络是2.4GHz Wi-Fi": "Убедитесь, что сеть имеет 2,4 ГГц Wi - Fi", + "已选": "Выбранные", "请将手机切换至2.4G WiFi进行手动连接": "Пожалуйста, переключите телефон на 2.4G WiFi для ручного подключения" } \ No newline at end of file diff --git a/lan/lan_zh.json b/lan/lan_zh.json index 4bf1ac49..f2a7ff7d 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -1151,5 +1151,7 @@ "暂无最新记录": "暂无最新记录", "请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接", "请扫描可视门铃码二维码": "请扫描可视门铃码二维码", + "请确保网络是2.4GHz Wi-Fi": "请确保网络是2.4GHz Wi-Fi", + "已选": "已选", "网关添加成功": "网关添加成功" } diff --git a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart index 4e8f238a..1e6d6ac4 100755 --- a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart +++ b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart @@ -55,7 +55,7 @@ class _ConfiguringWifiPageState extends State height: 20.h, ), Text( - '请确保网络是2.4GHz Wi-Fi ', + '请确保网络是2.4GHz Wi-Fi'.tr, style: TextStyle( color: AppColors.blackColor, fontSize: 20.sp, diff --git a/lib/main/lockDetail/videoLog/videoLog/videoLog_page.dart b/lib/main/lockDetail/videoLog/videoLog/videoLog_page.dart index 97bd6ab6..5e83bee2 100755 --- a/lib/main/lockDetail/videoLog/videoLog/videoLog_page.dart +++ b/lib/main/lockDetail/videoLog/videoLog/videoLog_page.dart @@ -143,8 +143,8 @@ class _VideoLogPageState extends State { // nav按钮 Widget navBtn() { - return SizedBox( - width: 300.w, + return Container( + constraints: BoxConstraints(maxWidth: 310.w), // color: Colors.white, child: Row( mainAxisAlignment: MainAxisAlignment.center, diff --git a/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart b/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart index e219a237..952f56cd 100755 --- a/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart +++ b/lib/mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart @@ -6,6 +6,7 @@ import 'package:amap_flutter_location/amap_flutter_location.dart'; import 'package:amap_flutter_location/amap_location_option.dart'; import 'package:amap_flutter_map/amap_flutter_map.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:permission_handler/permission_handler.dart'; @@ -175,12 +176,16 @@ class _LockAddressGaoDePageState extends State body: ListView( children: [ Container( - margin: EdgeInsets.only(left: 25.w, top: 40.h, bottom: 40.w), - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Text('地理位置'.tr, style: TextStyle(fontSize: 50.sp)), - ], + margin: EdgeInsets.only( + left: 25.w, right: 25.w, top: 40.h, bottom: 40.w), + child: Center( + child: Text( + '地理位置'.tr, + textAlign: TextAlign.center, + style: TextStyle(fontSize: 50.sp), + softWrap: true, + overflow: TextOverflow.visible, + ), ), ), SizedBox( @@ -272,7 +277,9 @@ class _LockAddressGaoDePageState extends State height: 1.sw / 5 * 4 + 65.h * 2, child: Center(child: Text('地图加载中,请稍候。。。'.tr))), ), - SizedBox(height: 200.h), + Container( + constraints: BoxConstraints(maxHeight: 150.h), + ), Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ diff --git a/lib/tools/advancedCalendar/src/widget.dart b/lib/tools/advancedCalendar/src/widget.dart index 62dac000..7abd3fee 100755 --- a/lib/tools/advancedCalendar/src/widget.dart +++ b/lib/tools/advancedCalendar/src/widget.dart @@ -3,17 +3,24 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; import 'package:star_lock/tools/eventBusEventManage.dart'; +import 'package:star_lock/translations/current_locale_tool.dart'; import '../../../app_settings/app_settings.dart'; import 'controller.dart'; import 'datetime_util.dart'; part 'date_box.dart'; + part 'handlebar.dart'; + part 'header.dart'; + part 'month_view.dart'; + part 'month_view_bean.dart'; + part 'week_days.dart'; + part 'week_view.dart'; /// Advanced Calendar widget. @@ -162,13 +169,17 @@ class _AdvancedCalendarState extends State // return DateFormat("EEEE").format(list[index]).split('').first; // } // ); - //by DaisyWu 修改源文件为中文环境下 周一到周日 - _weekNames = List.generate(7, (int index) { - String fullWeekName = - DateFormat.E('zh_CN').format(list[index]); // 获取星期的完整形式 - return fullWeekName - .substring(fullWeekName.length - 1); // 获取最后一个字符,即星期的简称 - }); + + final currentLocaleString = CurrentLocaleTool.getCurrentLocaleString(); + if (currentLocaleString == 'zh_CN') { + //by DaisyWu 修改源文件为中文环境下 周一到周日 + _weekNames = List.generate(7, (int index) { + String fullWeekName = + DateFormat.E('zh_CN').format(list[index]); // 获取星期的完整形式 + return fullWeekName + .substring(fullWeekName.length - 1); // 获取最后一个字符,即星期的简称 + }); + } } } From af9a4b9ea1399c79b85f594829aa55091a35650d Mon Sep 17 00:00:00 2001 From: liyi Date: Sat, 22 Mar 2025 17:20:21 +0800 Subject: [PATCH 34/54] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lan/lan_ar.json | 2 ++ lan/lan_bg.json | 2 ++ lan/lan_bn.json | 2 ++ lan/lan_cs.json | 2 ++ lan/lan_da.json | 2 ++ lan/lan_de.json | 2 ++ lan/lan_el.json | 2 ++ lan/lan_en.json | 2 ++ lan/lan_es.json | 2 ++ lan/lan_et.json | 2 ++ lan/lan_fi.json | 2 ++ lan/lan_fr.json | 2 ++ lan/lan_he.json | 2 ++ lan/lan_hi.json | 2 ++ lan/lan_hk.json | 2 ++ lan/lan_hr.json | 2 ++ lan/lan_hu.json | 2 ++ lan/lan_id.json | 2 ++ lan/lan_it.json | 2 ++ lan/lan_ja.json | 2 ++ lan/lan_keys.json | 2 ++ lan/lan_kk.json | 2 ++ lan/lan_ko.json | 2 ++ lan/lan_lt.json | 2 ++ lan/lan_ms.json | 2 ++ lan/lan_nl.json | 2 ++ lan/lan_pl.json | 2 ++ lan/lan_pt.json | 2 ++ lan/lan_ro.json | 2 ++ lan/lan_ru.json | 2 ++ lan/lan_sk.json | 2 ++ lan/lan_sr_cyrl.json | 2 ++ lan/lan_sv.json | 2 ++ lan/lan_th.json | 2 ++ lan/lan_tr.json | 2 ++ lan/lan_tw.json | 2 ++ lan/lan_uk.json | 2 ++ lan/lan_ur.json | 2 ++ lan/lan_vi.json | 2 ++ lan/lan_zh.json | 2 ++ lib/translations/app_dept.dart | 33 ++++++++++++++++++++++++++++++++- 41 files changed, 112 insertions(+), 1 deletion(-) diff --git a/lan/lan_ar.json b/lan/lan_ar.json index e53131c6..63371d82 100644 --- a/lan/lan_ar.json +++ b/lan/lan_ar.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف الأوردة المشطية للقفل. هل أنت متأكد أنك تريد إعادة الضبط ؟", "在线": "الإنترنت", "离线": "غير متصل", diff --git a/lan/lan_bg.json b/lan/lan_bg.json index 15c1f133..56750a26 100644 --- a/lan/lan_bg.json +++ b/lan/lan_bg.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "След нулиране, метакарпалните вени на ключалката ще бъдат изтрити. Сигурен ли сте, че искате да се възстанови?", "在线": "Онлайн", "离线": "Офлайн", diff --git a/lan/lan_bn.json b/lan/lan_bn.json index 994bcdf0..8a7d28df 100644 --- a/lan/lan_bn.json +++ b/lan/lan_bn.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "ব্যান্ডোটারআইসেট, হাসিপাল রিরিইনস্ফথেলকবইল্ডজেডড।?", "在线": "কনলাইন", "离线": "দেউন্টলাইনCity in Ontario Canada", diff --git a/lan/lan_cs.json b/lan/lan_cs.json index 4830ba9c..08925658 100644 --- a/lan/lan_cs.json +++ b/lan/lan_cs.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetování budou metakarpální žíly zámku odstraněny. Jste si jistý, že chcete resetovat?", "在线": "Online", "离线": "Offline", diff --git a/lan/lan_da.json b/lan/lan_da.json index af956511..d3db1465 100644 --- a/lan/lan_da.json +++ b/lan/lan_da.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Efter nulstilling, de metacarpal vener i låsen vil blive slettet. Er du sikker på at du vil nulstille?", "在线": "OnlineComment", "离线": "OfflineComment", diff --git a/lan/lan_de.json b/lan/lan_de.json index fc9ada5c..79e2516d 100644 --- a/lan/lan_de.json +++ b/lan/lan_de.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen werden die Mittelhand adern des Schlosses gelöscht. Sind Sie sicher, dass Sie zurücksetzen wollen?", "在线": "Online", "离线": "Offline", diff --git a/lan/lan_el.json b/lan/lan_el.json index 673d0f5b..8eac3390 100644 --- a/lan/lan_el.json +++ b/lan/lan_el.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, οι μετακάρπιες φλέβες της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να επαναφέρετε;", "在线": "Σε απευθείας σύνδεση", "离线": "Εκτός σύνδεσης:", diff --git a/lan/lan_en.json b/lan/lan_en.json index 56c9bee8..a84ceb62 100644 --- a/lan/lan_en.json +++ b/lan/lan_en.json @@ -1080,6 +1080,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "After reset, the metacarpal veins of the lock will be deleted. Are you sure you want to reset?", "在线": "Online", "离线": "Offline", diff --git a/lan/lan_es.json b/lan/lan_es.json index 21e4cf83..4dabcf0d 100644 --- a/lan/lan_es.json +++ b/lan/lan_es.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Después del reinicio, se eliminarán las venas metacarpiales de la cerradura. ¿Está seguro de que desea restablecer?", "在线": "En línea", "离线": "Offline", diff --git a/lan/lan_et.json b/lan/lan_et.json index 8493c8cf..48888bd6 100644 --- a/lan/lan_et.json +++ b/lan/lan_et.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku metakarpaalveenid. Kas tõesti soovid lähtestada?", "在线": "Võrgus", "离线": "Mitte ühendust", diff --git a/lan/lan_fi.json b/lan/lan_fi.json index c51e11f8..a6cd4aba 100644 --- a/lan/lan_fi.json +++ b/lan/lan_fi.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Kun lukko on nollattu, metakarppinen suoneet poistetaan. Haluatko varmasti palauttaa?", "在线": "Verkossa", "离线": "Offline-verkosto", diff --git a/lan/lan_fr.json b/lan/lan_fr.json index fcb50558..ffcf5c00 100644 --- a/lan/lan_fr.json +++ b/lan/lan_fr.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Après réinitialisation, les veines métacarpiennes de la serrure seront supprimées. Êtes-vous sûr de vouloir réinitialiser?", "在线": "En ligne", "离线": "Hors ligne", diff --git a/lan/lan_he.json b/lan/lan_he.json index 151f02c7..acc3c4f2 100644 --- a/lan/lan_he.json +++ b/lan/lan_he.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "לאחר איפוס, הורידים של המנעול יימחקו. אתה בטוח שברצונך לאפס?", "在线": "באינטרנט", "离线": "מנותק", diff --git a/lan/lan_hi.json b/lan/lan_hi.json index 463d1d90..1e608b4f 100644 --- a/lan/lan_hi.json +++ b/lan/lan_hi.json @@ -1080,6 +1080,8 @@ "印度尼西亚语": "बाहसा इंडोनेशिया", "芬兰语": "सूमी", "丹麦语": "मूर्ख व्यक्ति", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "रीसेट के बाद, लॉक के मेटाकार्पल नसों को हटा दिया जाएगा। क्या आप निश्चित रूप से रीसेट करना चाहते हैं?", "在线": "ऑनलाइन", "离线": "ऑफ़लाइन", diff --git a/lan/lan_hk.json b/lan/lan_hk.json index be282c4f..754865ba 100644 --- a/lan/lan_hk.json +++ b/lan/lan_hk.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "索米", "丹麦语": "丹斯克", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 你確定要重置啊?", "在线": "在線", "离线": "離線", diff --git a/lan/lan_hr.json b/lan/lan_hr.json index fd246ef3..ece14b96 100644 --- a/lan/lan_hr.json +++ b/lan/lan_hr.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Nakon resetiranja, metakarpalne vene brave će biti izbrisane. Jeste li sigurni da želite resetiranje?", "在线": "Na internetu", "离线": "Odspojeno", diff --git a/lan/lan_hu.json b/lan/lan_hu.json index 38a5662e..894a44e3 100644 --- a/lan/lan_hu.json +++ b/lan/lan_hu.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "A reset után a zár metakarpális erei törlődnek. Biztos vagy benne, hogy vissza akarsz állítani?", "在线": "Online", "离线": "Offline", diff --git a/lan/lan_id.json b/lan/lan_id.json index 5adea3d9..a0dd8c94 100644 --- a/lan/lan_id.json +++ b/lan/lan_id.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Setelah mengulang, pembuluh darah metakarpal dari kunci akan dihapus. Yakin ingin mengatur ulang?", "在线": "Online", "离线": "Offline", diff --git a/lan/lan_it.json b/lan/lan_it.json index 1cbf97ea..00fa3d12 100644 --- a/lan/lan_it.json +++ b/lan/lan_it.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Dopo il reset, le vene metacarpali della serratura verranno cancellate. Sei sicuro di voler reimpostare?", "在线": "Online", "离线": "Offline", diff --git a/lan/lan_ja.json b/lan/lan_ja.json index cea8a5d0..f58e6062 100644 --- a/lan/lan_ja.json +++ b/lan/lan_ja.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "リセット後、ロックの中手骨静脈が削除されます。リセットしてもよろしいですか。", "在线": "オンライン", "离线": "オフライン", diff --git a/lan/lan_keys.json b/lan/lan_keys.json index a284f512..174e1185 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1081,6 +1081,8 @@ "印度尼西亚语": "印度尼西亚语", "芬兰语": "芬兰语", "丹麦语": "丹麦语", + "印地语": "印地语", + "乌尔都语": "乌尔都语", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?", "在线": "在线", "离线": "离线", diff --git a/lan/lan_kk.json b/lan/lan_kk.json index 728c1946..cf4ec926 100644 --- a/lan/lan_kk.json +++ b/lan/lan_kk.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Қайта ысырып тастағаннан соң бұғаттағы метакарпалар өшіріледі. Шынымен ысырып тастауды қалайсыз ба?", "在线": "Онлайн", "离线": "Желіде емес", diff --git a/lan/lan_ko.json b/lan/lan_ko.json index af0fab29..5d8c6ef0 100644 --- a/lan/lan_ko.json +++ b/lan/lan_ko.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 중수골 정맥이 삭제됩니다. 당신은 당신이 재설정 하시겠습니까?", "在线": "온라인", "离线": "오프라인", diff --git a/lan/lan_lt.json b/lan/lan_lt.json index 4a84d77b..ebb9df23 100644 --- a/lan/lan_lt.json +++ b/lan/lan_lt.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po reset užrakto metakarpinės venos bus ištrintos. Ar tikrai norite atstatyti?", "在线": "Online", "离线": "Neprisijungęs", diff --git a/lan/lan_ms.json b/lan/lan_ms.json index a85297b6..d003ba80 100644 --- a/lan/lan_ms.json +++ b/lan/lan_ms.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, urat metacarpal kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?", "在线": "Dalam talian", "离线": "Luar talian", diff --git a/lan/lan_nl.json b/lan/lan_nl.json index ff92c9b7..afdd971d 100644 --- a/lan/lan_nl.json +++ b/lan/lan_nl.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Na reset worden de middenhandsbeenaders van het slot verwijderd. Weet je zeker dat je wilt resetten?", "在线": "Online", "离线": "Offline", diff --git a/lan/lan_pl.json b/lan/lan_pl.json index 9449d4c0..120281a1 100644 --- a/lan/lan_pl.json +++ b/lan/lan_pl.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po zresetowaniu żyły śródręcza zamka zostaną usunięte. Czy na pewno chcesz zresetować?", "在线": "Online", "离线": "Offline", diff --git a/lan/lan_pt.json b/lan/lan_pt.json index 0365fbd6..4d3a3436 100644 --- a/lan/lan_pt.json +++ b/lan/lan_pt.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Após a reinicialização, as veias do metacarpo do bloqueio serão excluídas. Tens a certeza que queres reiniciar?", "在线": "Online", "离线": "Offline", diff --git a/lan/lan_ro.json b/lan/lan_ro.json index c25f3051..a439b5fa 100644 --- a/lan/lan_ro.json +++ b/lan/lan_ro.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "După resetare, venele metacarpale ale încuietorii vor fi şterse. Sigur doriți să resetați?", "在线": "Online", "离线": "Deconectat", diff --git a/lan/lan_ru.json b/lan/lan_ru.json index d74b4d67..3297d79a 100644 --- a/lan/lan_ru.json +++ b/lan/lan_ru.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "После сброса пястные вены замка будут удалены. Вы уверены, что хотите сбросить?", "在线": "Онлайн", "离线": "Оффлайн", diff --git a/lan/lan_sk.json b/lan/lan_sk.json index 4faea5d9..18c30d61 100644 --- a/lan/lan_sk.json +++ b/lan/lan_sk.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetovaní budú metakarpálne žily zámku vymazané. Ste si istí, že chcete obnoviť?", "在线": "Online", "离线": "Offline", diff --git a/lan/lan_sr_cyrl.json b/lan/lan_sr_cyrl.json index 7c61e6cd..67bc4ada 100644 --- a/lan/lan_sr_cyrl.json +++ b/lan/lan_sr_cyrl.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Након ресетовања, метакарпалне вене браве ће бити избрисане. Да ли сте сигурни да желите да ресетујете?", "在线": "Онлине", "离线": "Ванмрежне", diff --git a/lan/lan_sv.json b/lan/lan_sv.json index 4ec91309..22dcfa65 100644 --- a/lan/lan_sv.json +++ b/lan/lan_sv.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Efter återställd, de metakarpal venerna i låset tas bort. Är du säker på att du vill återställa?", "在线": "Online:", "离线": "Frånkoppling", diff --git a/lan/lan_th.json b/lan/lan_th.json index 234fce02..fb568c47 100644 --- a/lan/lan_th.json +++ b/lan/lan_th.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วหลอดเลือดดำ metacarpal ของล็อคจะถูกลบออกคุณแน่ใจว่าอยากจะรีเซ็ต?", "在线": "ออนไลน์ผ่าน", "离线": "ออฟไลน์", diff --git a/lan/lan_tr.json b/lan/lan_tr.json index 34f5ab7e..34f6a7e9 100644 --- a/lan/lan_tr.json +++ b/lan/lan_tr.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin metacarpal damarları silinecektir. Sıfırlamak istediğine emin misin?", "在线": "Çevrimiçi", "离线": "Çevrimdışı", diff --git a/lan/lan_tw.json b/lan/lan_tw.json index 69fd23f7..6de33a41 100644 --- a/lan/lan_tw.json +++ b/lan/lan_tw.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 是否確實要重置?", "在线": "在線", "离线": "離線", diff --git a/lan/lan_uk.json b/lan/lan_uk.json index 0ddc8868..a0451246 100644 --- a/lan/lan_uk.json +++ b/lan/lan_uk.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Після скидання п'ясткові вени замку будуть видалені. Ви впевнені, що хочете скинути налаштування?", "在线": "Онлайн", "离线": "Автономних", diff --git a/lan/lan_ur.json b/lan/lan_ur.json index 7bf3a227..90574a85 100644 --- a/lan/lan_ur.json +++ b/lan/lan_ur.json @@ -1080,6 +1080,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "ری سیٹ کرنے کے بعد ، لاک کی میٹاکارپل رگیں حذف کردی جائیں گی۔ کیا آپ واقعی دوبارہ ترتیب دینا چاہتے ہیں؟", "在线": "آن لائن", "离线": "آف لائن", diff --git a/lan/lan_vi.json b/lan/lan_vi.json index e91661df..4086e02f 100644 --- a/lan/lan_vi.json +++ b/lan/lan_vi.json @@ -1078,6 +1078,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Sau khi đặt lại, các tĩnh mạch metacarpal của khóa sẽ bị xóa. Bạn có chắc muốn thiết lập lại không?", "在线": "Trực tuyến", "离线": "Ngoại tuyến", diff --git a/lan/lan_zh.json b/lan/lan_zh.json index f2a7ff7d..f622d613 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -1081,6 +1081,8 @@ "印度尼西亚语": "Bahasa Indonesia", "芬兰语": "Suomi", "丹麦语": "Dansk", + "印地语": "हिंदीName", + "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?", "在线": "在线", "离线": "离线", diff --git a/lib/translations/app_dept.dart b/lib/translations/app_dept.dart index c58d5de8..1d60fe75 100755 --- a/lib/translations/app_dept.dart +++ b/lib/translations/app_dept.dart @@ -54,6 +54,8 @@ extension ExtensionAppDept on AppDept { const Locale fiL = Locale('fi', 'FI'); const Locale daL = Locale('da', 'DK'); const Locale ukL = Locale('uk', 'UA'); + const Locale hiL = Locale('hi', 'HI'); + const Locale urL = Locale('ur', 'UR'); const Locale srCyrillic = Locale('sr', 'RS'); return [ @@ -93,6 +95,8 @@ extension ExtensionAppDept on AppDept { fiL, daL, ukL, + hiL, + urL, srCyrillic ]; } @@ -177,7 +181,12 @@ enum LanguageType { // 丹麦语 danish, // 乌克兰语 - ukrainian + ukrainian, + //印地语、 + hindi, + //乌尔都语 + urdu, + } extension ExtensionLanguageType on LanguageType { @@ -295,6 +304,12 @@ extension ExtensionLanguageType on LanguageType { case LanguageType.ukrainian: str = '乌克兰语'.tr; break; + case LanguageType.hindi: + str = '印地语'.tr; + break; + case LanguageType.urdu: + str = '乌尔都语'.tr; + break; } return str; } @@ -415,6 +430,12 @@ extension ExtensionLanguageType on LanguageType { case 'uk': languageType = LanguageType.ukrainian; break; + case 'hi': + languageType = LanguageType.hindi; + break; + case 'ur': + languageType = LanguageType.urdu; + break; default: languageType = LanguageType.english; break; @@ -610,6 +631,16 @@ extension ExtensionLanguageType on LanguageType { return locale; } break; + case LanguageType.hindi: + if (locale.languageCode == 'hi' && locale.countryCode == 'HI') { + return locale; + } + break; + case LanguageType.urdu: + if (locale.languageCode == 'ur' && locale.countryCode == 'UR') { + return locale; + } + break; case LanguageType.system: // TODO: Handle this case. break; From ff8bfa8fd0cbaab79203844bc081388ab5221826 Mon Sep 17 00:00:00 2001 From: liyi Date: Mon, 24 Mar 2025 14:14:12 +0800 Subject: [PATCH 35/54] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BF=84=E8=AF=AD=E5=87=BA=E7=8E=B0=E7=9A=84=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lan/lan_en.json | 1 + lan/lan_keys.json | 1 + lan/lan_ru.json | 1 + lan/lan_zh.json | 1 + .../addFingerprint/addFingerprint_logic.dart | 319 ++++++++++-------- .../fingerprintList_logic.dart | 56 +-- .../fingerprintList/fingerprintList_page.dart | 28 +- .../lockDetail/lockDetail_page.dart | 32 +- .../passwordKeyDetail_logic.dart | 2 +- .../passwordKeyDetail_page.dart | 2 +- lib/tools/showCupertinoAlertView.dart | 2 +- 11 files changed, 235 insertions(+), 210 deletions(-) diff --git a/lan/lan_en.json b/lan/lan_en.json index a84ceb62..c2fbf2a7 100644 --- a/lan/lan_en.json +++ b/lan/lan_en.json @@ -1150,5 +1150,6 @@ "暂无最新记录": "There are currently no latest records available", "请将手机切换至2.4G WiFi进行手动连接": "Please switch your phone to 2.4G WiFi for manual connection", "请确保网络是2.4GHz Wi-Fi": "Please ensure that the network is 2.4GHz Wi Fi", + "是否要远程开锁": "Do you want to unlock remotely", "网关添加成功": "Gateway added successfully" } diff --git a/lan/lan_keys.json b/lan/lan_keys.json index 174e1185..f93afdae 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1155,5 +1155,6 @@ "请扫描可视门铃码二维码": "请扫描可视门铃码二维码", "请确保网络是2.4GHz Wi-Fi": "请确保网络是2.4GHz Wi-Fi", "已选": "已选", + "是否要远程开锁": "是否要远程开锁", "网关添加成功": "网关添加成功" } diff --git a/lan/lan_ru.json b/lan/lan_ru.json index 3297d79a..07772f3b 100644 --- a/lan/lan_ru.json +++ b/lan/lan_ru.json @@ -1152,5 +1152,6 @@ "请扫描可视门铃码二维码": "Сканируйте код вызова", "请确保网络是2.4GHz Wi-Fi": "Убедитесь, что сеть имеет 2,4 ГГц Wi - Fi", "已选": "Выбранные", + "是否要远程开锁": "Нужно ли удалённо открывать замок", "请将手机切换至2.4G WiFi进行手动连接": "Пожалуйста, переключите телефон на 2.4G WiFi для ручного подключения" } \ No newline at end of file diff --git a/lan/lan_zh.json b/lan/lan_zh.json index f622d613..351e3fff 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -1155,5 +1155,6 @@ "请扫描可视门铃码二维码": "请扫描可视门铃码二维码", "请确保网络是2.4GHz Wi-Fi": "请确保网络是2.4GHz Wi-Fi", "已选": "已选", + "是否要远程开锁": "是否要远程开锁", "网关添加成功": "网关添加成功" } diff --git a/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart b/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart index bab8f1f0..c8507a3f 100755 --- a/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart +++ b/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_logic.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; @@ -26,20 +25,23 @@ class AddFingerprintLogic extends BaseGetXController { // 监听设备返回的数据 late StreamSubscription _replySubscription; + void _initReplySubscription() { - _replySubscription = EventBusManager().eventBus!.on().listen((Reply reply) async { + _replySubscription = + EventBusManager().eventBus!.on().listen((Reply reply) async { // 添加指纹开始 - if((reply is SenderAddFingerprintWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) { + if ((reply is SenderAddFingerprintWithTimeCycleCoercionReply) && + (state.ifCurrentScreen.value == true)) { _replyAddFingerprintBegin(reply); } // 添加指纹过程 - if(reply is SenderAddFingerprintProcessReply) { + if (reply is SenderAddFingerprintProcessReply) { _replyAddFingerprintProcess(reply); } // 添加指纹确认 - if(reply is SenderAddFingerprintConfirmationReply) { + if (reply is SenderAddFingerprintConfirmationReply) { _replyAddFingerprintConfirmation(reply); } }); @@ -49,11 +51,10 @@ class AddFingerprintLogic extends BaseGetXController { BuglyTool.uploadException( message: '添加指纹开始,解析数据', detail: '添加指纹开始,解析数据 _replyAddFingerprintBegin:${reply.data}', - upload: false - ); + upload: false); final int status = reply.data[2]; - switch(status){ + switch (status) { case 0x00: //成功 state.ifConnectScuess.value = true; @@ -67,10 +68,13 @@ class AddFingerprintLogic extends BaseGetXController { break; case 0x06: //无权限 - final List? privateKey = await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = changeStringListToIntList(privateKey!); + final List? privateKey = + await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = + changeStringListToIntList(privateKey!); - final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List? signKey = + await Storage.getStringList(saveBlueSignKey); final List signKeyDataList = changeStringListToIntList(signKey!); final List token = reply.data.sublist(5, 9); @@ -78,30 +82,33 @@ class AddFingerprintLogic extends BaseGetXController { Storage.setStringList(saveBlueToken, saveStrList); IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( - keyID:'1', - userID:await Storage.getUid(), - fingerNo:0, - useCountLimit:0xffff, - isForce:state.isCoerced.value == '1' ? 1 : 0, // 是否是胁迫 - isAdmin: state.isAdministrator.value == '2' ? 1 : 0, - operate: 0, - isRound:state.selectType.value == '2' ? 1: 0, // 是否是循环 - weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 - startDate: int.parse(state.startDate.value)~/1000, - endDate: int.parse(state.endDate.value)~/1000, - startTime:DateTool().dateToHNString(state.effectiveDateTime.value), - endTime:DateTool().dateToHNString(state.failureDateTime.value), - needAuthor:1, - signKey:signKeyDataList, - privateKey:getPrivateKeyList, - token: token, - isBeforeAddUser: false - ); + keyID: '1', + userID: await Storage.getUid(), + fingerNo: 0, + useCountLimit: 0xffff, + isForce: state.isCoerced.value == '1' ? 1 : 0, + // 是否是胁迫 + isAdmin: state.isAdministrator.value == '2' ? 1 : 0, + operate: 0, + isRound: state.selectType.value == '2' ? 1 : 0, + // 是否是循环 + weekRound: DateTool().accordingTheCycleIntoTheCorrespondingNumber( + state.weekDay.value), + // 周循环 + startDate: int.parse(state.startDate.value) ~/ 1000, + endDate: int.parse(state.endDate.value) ~/ 1000, + startTime: DateTool().dateToHNString(state.effectiveDateTime.value), + endTime: DateTool().dateToHNString(state.failureDateTime.value), + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + token: token, + isBeforeAddUser: false); break; default: //失败 state.ifAddState.value = false; - showToast('添加指纹失败'.tr, something: (){ + showToast('添加指纹失败'.tr, something: () { Get.back(); }); break; @@ -112,13 +119,12 @@ class AddFingerprintLogic extends BaseGetXController { BuglyTool.uploadException( message: '添加指纹过程,解析数据', detail: '添加指纹过程,解析数据 _replyAddFingerprintProcess:${reply.data}', - upload: false - ); + upload: false); final int status = reply.data[2]; - switch(status){ + switch (status) { case 0x00: //成功 - switch(reply.data[5]){ + switch (reply.data[5]) { case 0xff: // 注册指纹失败 showToast('退出添加'.tr); @@ -166,35 +172,37 @@ class AddFingerprintLogic extends BaseGetXController { Future _replyAddFingerprintConfirmation(Reply reply) async { final int status = reply.data[2]; final String getMobile = (await Storage.getMobile())!; - switch(status){ + switch (status) { case 0x00: //成功 - // var fingerprintNum = listChangInt(reply.data.sublist(9, 11)).toString(); + // var fingerprintNum = listChangInt(reply.data.sublist(9, 11)).toString(); ApmHelper.instance.trackEvent('add_fingerprint', { - 'lock_name':BlueManage().connectDeviceName, - 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, - 'date':DateTool().getNowDateWithType(1), - 'add_fingerprint_result':'成功', + 'lock_name': BlueManage().connectDeviceName, + 'account': + getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date': DateTool().getNowDateWithType(1), + 'add_fingerprint_result': '成功', }); BuglyTool.uploadException( message: '添加指纹确认结果,解析数据', - detail: '添加指纹确认结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}', - upload: false - ); + detail: + '添加指纹确认结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}', + upload: false); - final List fingerprintList = reply.data.sublist(reply.data.length - 2); + final List fingerprintList = + reply.data.sublist(reply.data.length - 2); final String fingerprintNum = listChangInt(fingerprintList).toString(); state.regIndex.value++; - if(state.fingerprintNumber.value == fingerprintNum){ + if (state.fingerprintNumber.value == fingerprintNum) { return; - }else{ + } else { state.fingerprintNumber.value = fingerprintNum; } // if(state.isCoerced.value == "1"){ - // 调用添加指纹接口 + // 调用添加指纹接口 state.ifAddState.value = false; - addFingerprintsData(); + await addFingerprintsData(); // }else{ // // 如果是胁迫指纹在 添加完之后以后再调用添加胁迫指纹的 // senderAddStressFingerprint(); @@ -203,18 +211,19 @@ class AddFingerprintLogic extends BaseGetXController { default: //失败 ApmHelper.instance.trackEvent('add_fingerprint', { - 'lock_name':BlueManage().connectDeviceName, - 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, - 'date':DateTool().getNowDateWithType(1), - 'add_fingerprint_result':'失败-${reply.data}', + 'lock_name': BlueManage().connectDeviceName, + 'account': + getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date': DateTool().getNowDateWithType(1), + 'add_fingerprint_result': '失败-${reply.data}', }); BuglyTool.uploadException( message: '添加指纹确认结果,解析数据', - detail: '添加指纹确认结果蓝牙返回失败结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}', + detail: + '添加指纹确认结果蓝牙返回失败结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}', eventStr: '添加指纹事件蓝牙返回失败结果', - upload: true - ); + upload: true); state.ifAddState.value = false; break; } @@ -222,7 +231,8 @@ class AddFingerprintLogic extends BaseGetXController { // 添加指纹开始 Future senderAddFingerprint() async { - final List? privateKey = await Storage.getStringList(saveBluePrivateKey); + final List? privateKey = + await Storage.getStringList(saveBluePrivateKey); final List getPrivateKeyList = changeStringListToIntList(privateKey!); final List? signKey = await Storage.getStringList(saveBlueSignKey); @@ -232,90 +242,104 @@ class AddFingerprintLogic extends BaseGetXController { final List getTokenList = changeStringListToIntList(token!); final String command = SenderAddFingerprintWithTimeCycleCoercionCommand( - keyID:'1', - userID:await Storage.getUid(), - fingerNo:0, - useCountLimit:0xffff, - isForce:state.isCoerced.value == '1' ? 1 : 0, // 是否是胁迫 + keyID: '1', + userID: await Storage.getUid(), + fingerNo: 0, + useCountLimit: 0xffff, + isForce: state.isCoerced.value == '1' ? 1 : 0, + // 是否是胁迫 isAdmin: state.isAdministrator.value == '2' ? 1 : 0, operate: 0, - isRound:state.selectType.value == '2' ? 1: 0, // 是否是循环 - weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 - startDate: int.parse(state.startDate.value)~/1000, - endDate: int.parse(state.endDate.value)~/1000, - startTime:DateTool().dateToHNString(state.effectiveDateTime.value), - endTime:DateTool().dateToHNString(state.failureDateTime.value), - needAuthor:1, - signKey:signKeyDataList, - privateKey:getPrivateKeyList, + isRound: state.selectType.value == '2' ? 1 : 0, + // 是否是循环 + weekRound: DateTool() + .accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), + // 周循环 + startDate: int.parse(state.startDate.value) ~/ 1000, + endDate: int.parse(state.endDate.value) ~/ 1000, + startTime: DateTool().dateToHNString(state.effectiveDateTime.value), + endTime: DateTool().dateToHNString(state.failureDateTime.value), + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, token: getTokenList, ).toString(); showBlueConnetctToastTimer(action: () async { final String getMobile = (await Storage.getMobile())!; ApmHelper.instance.trackEvent('add_fingerprint', { - 'lock_name':BlueManage().connectDeviceName, - 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, - 'date':DateTool().getNowDateWithType(1), - 'add_fingerprint_result':'超时', + 'lock_name': BlueManage().connectDeviceName, + 'account': + getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date': DateTool().getNowDateWithType(1), + 'add_fingerprint_result': '超时', }); BuglyTool.uploadException( message: '添加指纹超时处理-添加指纹失败', - detail: '添加指纹超时处理,断开连接,添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command', + detail: + '添加指纹超时处理,断开连接,添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command', eventStr: '添加指纹事件超时', - upload: true - ); + upload: true); Get.close(1); }); - BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { - if (deviceConnectionState == BluetoothConnectionState.connected){ - final List? privateKey = await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = changeStringListToIntList(privateKey!); + BlueManage().blueSendData(BlueManage().connectDeviceName, + (BluetoothConnectionState deviceConnectionState) async { + if (deviceConnectionState == BluetoothConnectionState.connected) { + final List? privateKey = + await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = + changeStringListToIntList(privateKey!); - final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List? signKey = + await Storage.getStringList(saveBlueSignKey); final List signKeyDataList = changeStringListToIntList(signKey!); final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( - keyID:'1', - userID:await Storage.getUid(), - fingerNo:0, - useCountLimit:0xffff, - isForce:state.isCoerced.value == '1' ? 1 : 0, // 是否是胁迫 - isAdmin: state.isAdministrator.value == '2' ? 1 : 0, - operate: 0, - isRound:state.selectType.value == '2' ? 1: 0, // 是否是循环 - weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环 - startDate: int.parse(state.startDate.value)~/1000, - endDate: int.parse(state.endDate.value)~/1000, - startTime:DateTool().dateToHNString(state.effectiveDateTime.value), - endTime:DateTool().dateToHNString(state.failureDateTime.value), - needAuthor:1, - signKey:signKeyDataList, - privateKey:getPrivateKeyList, - token: getTokenList, - isBeforeAddUser: false - ); - }else if (deviceConnectionState == BluetoothConnectionState.disconnected){ + keyID: '1', + userID: await Storage.getUid(), + fingerNo: 0, + useCountLimit: 0xffff, + isForce: state.isCoerced.value == '1' ? 1 : 0, + // 是否是胁迫 + isAdmin: state.isAdministrator.value == '2' ? 1 : 0, + operate: 0, + isRound: state.selectType.value == '2' ? 1 : 0, + // 是否是循环 + weekRound: DateTool().accordingTheCycleIntoTheCorrespondingNumber( + state.weekDay.value), + // 周循环 + startDate: int.parse(state.startDate.value) ~/ 1000, + endDate: int.parse(state.endDate.value) ~/ 1000, + startTime: DateTool().dateToHNString(state.effectiveDateTime.value), + endTime: DateTool().dateToHNString(state.failureDateTime.value), + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList, + isBeforeAddUser: false); + } else if (deviceConnectionState == + BluetoothConnectionState.disconnected) { final String getMobile = (await Storage.getMobile())!; ApmHelper.instance.trackEvent('add_fingerprint', { - 'lock_name':BlueManage().connectDeviceName, - 'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, - 'date':DateTool().getNowDateWithType(1), - 'add_fingerprint_result':'断开', + 'lock_name': BlueManage().connectDeviceName, + 'account': + getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!, + 'date': DateTool().getNowDateWithType(1), + 'add_fingerprint_result': '断开', }); BuglyTool.uploadException( message: '添加指纹断开连接-添加指纹失败', - detail: '添加指纹断开连接-添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command', + detail: + '添加指纹断开连接-添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command', eventStr: '添加指纹事件断开连接', - upload: true - ); + upload: true); - if(state.ifCurrentScreen.value == true){ + if (state.ifCurrentScreen.value == true) { showBlueConnetctToast(); } cancelBlueConnetctToastTimer(); @@ -326,27 +350,32 @@ class AddFingerprintLogic extends BaseGetXController { // 取消添加指纹 Future senderCancelAddFingerprintCommand() async { - BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { - if (deviceConnectionState == BluetoothConnectionState.connected){ - final List? privateKey = await Storage.getStringList(saveBluePrivateKey); - final List getPrivateKeyList = changeStringListToIntList(privateKey!); + BlueManage().blueSendData(BlueManage().connectDeviceName, + (BluetoothConnectionState deviceConnectionState) async { + if (deviceConnectionState == BluetoothConnectionState.connected) { + final List? privateKey = + await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = + changeStringListToIntList(privateKey!); - final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List? signKey = + await Storage.getStringList(saveBlueSignKey); final List signKeyDataList = changeStringListToIntList(signKey!); final List? token = await Storage.getStringList(saveBlueToken); final List getTokenList = changeStringListToIntList(token!); IoSenderManage.senderCancelAddFingerprintCommand( - keyID:'1', - userID:await Storage.getUid(), - needAuthor:1, - signKey:signKeyDataList, - privateKey:getPrivateKeyList, + keyID: '1', + userID: await Storage.getUid(), + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList, token: getTokenList, ); - }else if (deviceConnectionState == BluetoothConnectionState.disconnected){ - if(state.ifCurrentScreen.value == true){ + } else if (deviceConnectionState == + BluetoothConnectionState.disconnected) { + if (state.ifCurrentScreen.value == true) { showBlueConnetctToast(); } cancelBlueConnetctToastTimer(); @@ -356,53 +385,54 @@ class AddFingerprintLogic extends BaseGetXController { } // 添加指纹 - Future addFingerprintsData() async{ - final AddFingerprintEntity entity = await ApiRepository.to.addFingerprintsData( + Future addFingerprintsData() async { + final AddFingerprintEntity entity = + await ApiRepository.to.addFingerprintsData( lockId: state.lockId.value.toString(), endDate: state.endDate.value, - addType:state.addType.value, + addType: state.addType.value, fingerprintName: state.fingerprintName.value, fingerprintNumber: state.fingerprintNumber.value, fingerprintType: state.fingerprintType.value, isCoerced: state.isCoerced.value, startDate: state.startDate.value, weekDay: state.weekDay.value, - fingerRight:state.isAdministrator.value == '2' ? 1 : 0, + fingerRight: state.isAdministrator.value == '2' ? 1 : 0, startTime: int.parse(state.effectiveDateTime.value), endTime: int.parse(state.failureDateTime.value), ); - if(entity.errorCode!.codeIsSuccessful){ + if (entity.errorCode!.codeIsSuccessful) { updateFingerprintUserNoLoadData(entity.data!.fingerprintId.toString()); BuglyTool.uploadException( message: '添加指纹调用接口成功', detail: '添加指纹调用接口成功', eventStr: '添加指纹事件用接口成功', - upload: true - ); - }else{ + upload: true); + } else { updateFingerprintUserNoLoadData(entity.data!.fingerprintId.toString()); BuglyTool.uploadException( message: '添加指纹调用接口失败', detail: '添加指纹调用接口添加指纹调用接口失败 - ${entity.errorMsg}', eventStr: '添加指纹事件接口失败', - upload: true - ); + upload: true); } } // 更新指纹用户账号 - Future updateFingerprintUserNoLoadData(String fingerprintId) async{ - final LoginEntity entity = await ApiRepository.to.updateFingerprintUserNoLoadData( - fingerprintId: fingerprintId, - lockId: state.lockId.value.toString(), - fingerprintUserNo: state.fingerprintNumber.value, + Future updateFingerprintUserNoLoadData(String fingerprintId) async { + final LoginEntity entity = + await ApiRepository.to.updateFingerprintUserNoLoadData( + fingerprintId: fingerprintId, + lockId: state.lockId.value.toString(), + fingerprintUserNo: state.fingerprintNumber.value, ); - if(entity.errorCode!.codeIsSuccessful){ - showToast('添加成功'.tr, something: (){ - if(state.fromType.value == 2){ + if (entity.errorCode!.codeIsSuccessful) { + showToast('添加成功'.tr, something: () { + if (state.fromType.value == 2) { // 回调指纹号 - eventBus.fire(ChickInAddStaffCardAndFingerprintBlockNumberEvent(state.fingerprintNumber.value)); - }else if(state.fromType.value == 1){ + eventBus.fire(ChickInAddStaffCardAndFingerprintBlockNumberEvent( + state.fingerprintNumber.value)); + } else if (state.fromType.value == 1) { eventBus.fire(OtherTypeRefreshListEvent()); } Get.close(2); @@ -430,5 +460,4 @@ class AddFingerprintLogic extends BaseGetXController { _replySubscription.cancel(); } - -} \ No newline at end of file +} diff --git a/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_logic.dart b/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_logic.dart index 37d56740..09523db0 100755 --- a/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_logic.dart +++ b/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_logic.dart @@ -23,6 +23,7 @@ class FingerprintListLogic extends BaseGetXController { // 获取解析后的数据 late StreamSubscription _replySubscription; + void _initReplySubscription() { _replySubscription = EventBusManager().eventBus!.on().listen((Reply reply) { @@ -74,11 +75,15 @@ class FingerprintListLogic extends BaseGetXController { userID: (await Storage.getUid())!, fingerNo: state.deletFingerNo, useCountLimit: 0xffff, - operate: state.isDeletAll == true ? 3 : 2, // 0:注册 1:修改 2:删除 3:删除全部 + operate: state.isDeletAll == true ? 3 : 2, + // 0:注册 1:修改 2:删除 3:删除全部 isAdmin: 0, - isForce: 0, // 是否是胁迫 - isRound: 0, // 是否是循环 - weekRound: 0, // 周循环 + isForce: 0, + // 是否是胁迫 + isRound: 0, + // 是否是循环 + weekRound: 0, + // 周循环 startDate: 0x11223344, endDate: 0x11223344, startTime: '0', @@ -275,11 +280,15 @@ class FingerprintListLogic extends BaseGetXController { userID: (await Storage.getUid())!, fingerNo: state.deletFingerNo, useCountLimit: 0xffff, - operate: state.isDeletAll == true ? 3 : 2, // 0:注册 1:修改 2:删除 3:删除全部 + operate: state.isDeletAll == true ? 3 : 2, + // 0:注册 1:修改 2:删除 3:删除全部 isAdmin: 0, - isForce: 0, // 是否是胁迫 - isRound: 0, // 是否是循环 - weekRound: 0, // 周循环 + isForce: 0, + // 是否是胁迫 + isRound: 0, + // 是否是循环 + weekRound: 0, + // 周循环 startDate: 0x11223344, endDate: 0x11223344, startTime: '0', @@ -299,30 +308,31 @@ class FingerprintListLogic extends BaseGetXController { } }); } + /** * //请求密码钥匙列表 - Future mockNetworkDataRequest( + Future mockNetworkDataRequest( {required bool isRefresh}) async { - // 如果是下拉刷新,清空已有数据 - if (isRefresh) { + // 如果是下拉刷新,清空已有数据 + if (isRefresh) { state.itemDataList.clear(); pageNo = 1; - } + } - final PasswordKeyListEntity entity = await ApiRepository.to.passwordKeyList( - state.keyInfo.value.keyStatus.toString(), - state.keyInfo.value.lockId.toString(), - pageNo.toString(), - pageSize.toString(), - state.searchController.text); - if (entity.errorCode!.codeIsSuccessful) { + final PasswordKeyListEntity entity = await ApiRepository.to.passwordKeyList( + state.keyInfo.value.keyStatus.toString(), + state.keyInfo.value.lockId.toString(), + pageNo.toString(), + pageSize.toString(), + state.searchController.text); + if (entity.errorCode!.codeIsSuccessful) { // 更新数据列表 state.itemDataList.addAll(entity.data!.itemList!); // 更新页码 pageNo++; - } - return entity; - } + } + return entity; + } */ @@ -390,6 +400,7 @@ class FingerprintListLogic extends BaseGetXController { // 监听修改完详情之后刷新列表 late StreamSubscription _teamEvent; + void _initRefreshAction() { _teamEvent = eventBus .on() @@ -450,6 +461,7 @@ class FingerprintListLogic extends BaseGetXController { _initReplySubscription(); _initRefreshAction(); + getFingerprintsListData(isRefresh: true); } } diff --git a/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart b/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart index acfb8e9a..15c16dbd 100755 --- a/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart +++ b/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart @@ -31,24 +31,9 @@ class _FingerprintListPageState extends State final FingerprintListLogic logic = Get.put(FingerprintListLogic()); final FingerprintListState state = Get.find().state; - Future getHttpData({required bool isRefresh}) async { - final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); - if (isDemoMode == false) { - logic - .getFingerprintsListData(isRefresh: isRefresh) - .then((FingerprintListDataEntity value) { - if (mounted) { - setState(() {}); - } - }); - } - } - @override void initState() { super.initState(); - - getHttpData(isRefresh: true); } @override @@ -91,17 +76,17 @@ class _FingerprintListPageState extends State ), body: EasyRefreshTool( onRefresh: () { - getHttpData(isRefresh: true); + logic.getFingerprintsListData(isRefresh: true); }, onLoad: () { - getHttpData(isRefresh: false); + logic.getFingerprintsListData(isRefresh: false); }, child: Column( children: [ KeySearchWidget( editingController: state.searchController, - onSubmittedAction: () { - getHttpData(isRefresh: true); + onSubmittedAction: () async { + await logic.getFingerprintsListData(isRefresh: true); }, ), SizedBox( @@ -116,7 +101,8 @@ class _FingerprintListPageState extends State 'lockId': state.lockId.value, 'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入 })! - .then((value) => getHttpData(isRefresh: true)); + .then((value) => + logic.getFingerprintsListData(isRefresh: true)); // if (data != null) { // getHttpData(isRefresh: true); // } @@ -179,7 +165,7 @@ class _FingerprintListPageState extends State 'fingerprintItemData': fingerprintItemData, })! .then((value) { - getHttpData(isRefresh: true); + logic.getFingerprintsListData(isRefresh: true); }); // if (data == 'deletScuess') { // // state.fingerprintItemListData.removeWhere((FingerprintItemData item) => item.fingerprintId == fingerprintItemData.fingerprintId!); diff --git a/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/lib/main/lockDetail/lockDetail/lockDetail_page.dart index d6740553..fc69d86b 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -55,7 +55,19 @@ class _LockDetailPageState extends State void initState() { super.initState(); - listeningAnimations(); + state.animationController = + AnimationController(duration: const Duration(seconds: 1), vsync: this); + state.animationController!.repeat(); + //动画开始、结束、向前移动或向后移动时会调用StatusListener + state.animationController!.addStatusListener((AnimationStatus status) { + if (status == AnimationStatus.completed) { + state.animationController!.reset(); + state.animationController!.forward(); + } else if (status == AnimationStatus.dismissed) { + state.animationController!.reset(); + state.animationController!.forward(); + } + }); state.pageController.addListener(() { state.currentPage.value = state.pageController.page!.round(); @@ -1321,24 +1333,6 @@ class _LockDetailPageState extends State ); } - Future listeningAnimations() async { - await Future.delayed(Duration.zero, () { - state.animationController = AnimationController( - duration: const Duration(seconds: 1), vsync: this); - state.animationController!.repeat(); - //动画开始、结束、向前移动或向后移动时会调用StatusListener - state.animationController!.addStatusListener((AnimationStatus status) { - if (status == AnimationStatus.completed) { - state.animationController!.reset(); - state.animationController!.forward(); - } else if (status == AnimationStatus.dismissed) { - state.animationController!.reset(); - state.animationController!.forward(); - } - }); - }); - } - String showElectricIcon(int electricnumber) { if (electricnumber >= 100) { return 'images/main/icon_lockElectricLevel_5.png'; diff --git a/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_logic.dart b/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_logic.dart index 9ed38957..04059392 100755 --- a/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_logic.dart +++ b/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_logic.dart @@ -202,7 +202,7 @@ class PasswordKeyDetailLogic extends BaseGetXController { break; case 2: //永久 2 从开始时间开始永久有效,必需在开始时间24小时内使用一次,否则将失效 - useDateStr = '永久'; + useDateStr = '永久'.tr; state.isCirculation.value = false; break; case 3: diff --git a/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart b/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart index 65be1a07..cc02af47 100755 --- a/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart +++ b/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart @@ -205,7 +205,7 @@ class _PasswordKeyDetailPageState extends State children: [ Expanded( child: Text( - '密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。'.tr, + '密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。'.tr, textAlign: TextAlign.start, style: TextStyle(fontSize: 20.sp), )), diff --git a/lib/tools/showCupertinoAlertView.dart b/lib/tools/showCupertinoAlertView.dart index d973cc78..cf585bf1 100755 --- a/lib/tools/showCupertinoAlertView.dart +++ b/lib/tools/showCupertinoAlertView.dart @@ -297,7 +297,7 @@ class ShowCupertinoAlertView { builder: (BuildContext context) { return CupertinoAlertDialog( title: Container(), - content: Text('是否要远程开锁?'.tr), + content: Text('是否要远程开锁'.tr), actions: [ CupertinoDialogAction( onPressed: Get.back, From 09a8d7b3449678e01406aeb589e6c83d0bc881ec Mon Sep 17 00:00:00 2001 From: liyi Date: Mon, 24 Mar 2025 15:14:49 +0800 Subject: [PATCH 36/54] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E9=85=8D=E7=BD=91?= =?UTF-8?q?=E5=90=8E=E8=AF=BB=E5=8F=96=E9=94=81=E8=AE=BE=E7=BD=AE=E5=B9=B6?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configuringWifi_logic.dart | 91 ++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) diff --git a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart index 1ed6f736..52241914 100755 --- a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart +++ b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart @@ -12,6 +12,7 @@ import 'package:star_lock/appRouters.dart'; import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/blue/io_gateway/io_gateway_configuringWifi.dart'; import 'package:star_lock/blue/io_gateway/io_gateway_getStatus.dart'; +import 'package:star_lock/blue/io_protocol/io_updataLockSet.dart'; import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/main/lockDetail/lockDetail/device_network_info.dart'; import 'package:star_lock/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifiEntity.dart'; @@ -20,6 +21,7 @@ import 'package:star_lock/mine/gateway/addGateway/selectGateway/getGatewayInfo_m import 'package:star_lock/talk/starChart/entity/star_chart_register_node_entity.dart'; import 'package:star_lock/talk/starChart/star_chart_manage.dart'; import 'package:star_lock/tools/baseGetXController.dart'; +import 'package:star_lock/tools/commonDataManage.dart'; import '../../../../../blue/blue_manage.dart'; import '../../../../../blue/io_protocol/io_configuringWifi.dart'; @@ -59,7 +61,8 @@ class ConfiguringWifiLogic extends BaseGetXController { peerId: peerId, ); if (entity.errorCode!.codeIsSuccessful) { - showToast('配网成功'.tr, something: () { + showToast('配网成功'.tr, something: () async { + await _getUploadLockSet(); eventBus .fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value)); // 设置锁的peerID @@ -101,6 +104,10 @@ class ConfiguringWifiLogic extends BaseGetXController { if (reply is GatewayGetStatusReply) { _replyStatusInfo(reply); } + // 上传数据获取锁设置 + if (reply is UpdataLockSetReply) { + _replyUpdataLockSetReply(reply); + } AppLog.log('蓝牙回调处理完毕${EasyLoading.isShow}'); }); } @@ -389,6 +396,88 @@ class ConfiguringWifiLogic extends BaseGetXController { void _replyStatusInfo(reply) {} + // 上传数据获取设置 + Future _getUploadLockSet() async { + // showBlueConnetctToastTimer(action: (){ + // }); + BlueManage().blueSendData(BlueManage().connectDeviceName, + (BluetoothConnectionState connectionState) async { + if (connectionState == BluetoothConnectionState.connected) { + final List? token = await Storage.getStringList(saveBlueToken); + final List getTokenList = changeStringListToIntList(token!); + + _uploadLockSet(getTokenList); + } else if (connectionState == BluetoothConnectionState.disconnected) { + // cancelBlueConnetctToastTimer(); + // if(state.ifCurrentScreen.value == true){ + // showBlueConnetctToast(); + // } + } + }); + } + + // 公共的上传锁设置 + Future _uploadLockSet(List token) async { + final List? privateKey = + await Storage.getStringList(saveBluePrivateKey); + final List getPrivateKeyList = changeStringListToIntList(privateKey!); + + final List? signKey = await Storage.getStringList(saveBlueSignKey); + final List signKeyDataList = changeStringListToIntList(signKey!); + + IoSenderManage.updataLockSetCommand( + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + token: token, + needAuthor: 1, + signKey: signKeyDataList, + privateKey: getPrivateKeyList); + } + + // 上传数据获取锁设置解析 + Future _replyUpdataLockSetReply(Reply reply) async { + final int status = reply.data[2]; + switch (status) { + case 0x00: + //成功 + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + _lockDataUpload( + uploadType: 1, + recordType: 0, + records: reply.data.sublist(7, reply.data.length)); + break; + case 0x06: + //无权限 + final List token = reply.data.sublist(3, 7); + final List saveStrList = changeIntListToStringList(token); + Storage.setStringList(saveBlueToken, saveStrList); + + _uploadLockSet(token); + break; + default: + dismissEasyLoading(); + cancelBlueConnetctToastTimer(); + break; + } + } + + // 锁数据上传服务器 + Future _lockDataUpload( + {required int uploadType, + required int recordType, + required List records}) async { + final LoginEntity entity = await ApiRepository.to.lockDataUpload( + lockId: CommonDataManage().currentKeyInfo.lockId!, + uploadType: uploadType, + recordType: recordType, + records: records, + isUnShowLoading: true); + if (entity.errorCode!.codeIsSuccessful) { + update(); + } + } + @override void dispose() { // TODO: implement dispose From 6bf20abc28a721d001a2a9797d6e0202d3e066b5 Mon Sep 17 00:00:00 2001 From: liyi Date: Mon, 24 Mar 2025 15:16:04 +0800 Subject: [PATCH 37/54] =?UTF-8?q?fix:=E5=8F=96=E6=B6=88=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=90=8E=E6=96=AD=E5=BC=80=E8=93=9D=E7=89=99?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E7=9A=84=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mine/addLock/saveLock/saveLock_logic.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mine/addLock/saveLock/saveLock_logic.dart b/lib/mine/addLock/saveLock/saveLock_logic.dart index 9290d735..f9e20f38 100755 --- a/lib/mine/addLock/saveLock/saveLock_logic.dart +++ b/lib/mine/addLock/saveLock/saveLock_logic.dart @@ -487,7 +487,7 @@ class SaveLockLogic extends BaseGetXController { void backAction() async { eventBus.fire(RefreshLockListInfoDataEvent(clearScanDevices: true)); - BlueManage().disconnect(); + // BlueManage().disconnect(); // 查询锁设置信息 final LockSetInfoEntity entity = From 6d066a722d2bf2c199fe9dc328a7525a03fa8950 Mon Sep 17 00:00:00 2001 From: liyi Date: Mon, 24 Mar 2025 16:30:38 +0800 Subject: [PATCH 38/54] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E7=8C=AB=E7=9C=BC?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configuringWifi/configuringWifi/configuringWifi_logic.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart index 52241914..ca0be0d9 100755 --- a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart +++ b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart @@ -61,8 +61,8 @@ class ConfiguringWifiLogic extends BaseGetXController { peerId: peerId, ); if (entity.errorCode!.codeIsSuccessful) { + await _getUploadLockSet(); showToast('配网成功'.tr, something: () async { - await _getUploadLockSet(); eventBus .fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value)); // 设置锁的peerID From 70d549d04d9073787e3c6f252b56ccccaf88d41e Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 25 Mar 2025 14:05:18 +0800 Subject: [PATCH 39/54] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E9=85=8D=E7=BD=91?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E5=86=8D=E6=AC=A1=E8=AF=BB=E5=8F=96=E4=B8=80?= =?UTF-8?q?=E9=81=8D=E4=B8=8A=E4=BC=A0=E4=B8=80=E9=81=8D=E9=94=81=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configuringWifi_logic.dart | 39 ++++++++++--------- .../configuringWifi/configuringWifi_page.dart | 17 +++++--- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart index ca0be0d9..4373a087 100755 --- a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart +++ b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_logic.dart @@ -72,17 +72,6 @@ class ConfiguringWifiLogic extends BaseGetXController { secretKey: secretKey, peerId: peerId, ); - - if (state.pageName.value == 'lockSet') { - Get.close(2); - } else { - Get.offAllNamed(Routers.starLockMain); - } - dismissEasyLoading(); - if (state.loadingTimer != null) { - state.loadingTimer!.cancel(); - state.loadingTimer = null; - } }); } } @@ -398,8 +387,10 @@ class ConfiguringWifiLogic extends BaseGetXController { // 上传数据获取设置 Future _getUploadLockSet() async { - // showBlueConnetctToastTimer(action: (){ - // }); + showEasyLoading(); + showBlueConnetctToastTimer(action: () { + dismissEasyLoading(); + }); BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async { if (connectionState == BluetoothConnectionState.connected) { @@ -408,10 +399,10 @@ class ConfiguringWifiLogic extends BaseGetXController { _uploadLockSet(getTokenList); } else if (connectionState == BluetoothConnectionState.disconnected) { - // cancelBlueConnetctToastTimer(); - // if(state.ifCurrentScreen.value == true){ - // showBlueConnetctToast(); - // } + cancelBlueConnetctToastTimer(); + if (state.ifCurrentScreen.value == true) { + showBlueConnetctToast(); + } } }); } @@ -468,13 +459,23 @@ class ConfiguringWifiLogic extends BaseGetXController { required int recordType, required List records}) async { final LoginEntity entity = await ApiRepository.to.lockDataUpload( - lockId: CommonDataManage().currentKeyInfo.lockId!, + lockId: state.lockBasicInfo.value.lockId ?? -1, uploadType: uploadType, recordType: recordType, records: records, isUnShowLoading: true); if (entity.errorCode!.codeIsSuccessful) { - update(); + await Future.delayed((Duration(seconds: 1))); + if (state.pageName.value == 'lockSet') { + Get.close(2); + } else { + Get.offAllNamed(Routers.starLockMain); + } + dismissEasyLoading(); + if (state.loadingTimer != null) { + state.loadingTimer!.cancel(); + state.loadingTimer = null; + } } } diff --git a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart index 1e6d6ac4..ed653308 100755 --- a/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart +++ b/lib/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifi_page.dart @@ -44,12 +44,17 @@ class _ConfiguringWifiPageState extends State SizedBox( height: 50.h, ), - SubmitBtn( - btnName: '确定'.tr, - onClick: () { - FocusScope.of(context).requestFocus(FocusNode()); - logic.senderConfiguringWifiAction(); - }, + Obx( + () => SubmitBtn( + btnName: '确定'.tr, + isDisabled: state.isLoading.isFalse, + onClick: state.isLoading.isTrue + ? null + : () { + FocusScope.of(context).requestFocus(FocusNode()); + logic.senderConfiguringWifiAction(); + }, + ), ), SizedBox( height: 20.h, From ea3dfa2286e04a7dadeb0329723c560d8802b25d Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 25 Mar 2025 14:05:36 +0800 Subject: [PATCH 40/54] =?UTF-8?q?fix:=E5=BD=93=E6=90=9C=E7=B4=A2=E5=88=B0?= =?UTF-8?q?=E7=9A=84=E8=AE=BE=E5=A4=87=E6=98=B5=E7=A7=B0=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E6=97=B6=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mine/addLock/nearbyLock/nearbyLock_page.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/mine/addLock/nearbyLock/nearbyLock_page.dart b/lib/mine/addLock/nearbyLock/nearbyLock_page.dart index 25413554..a06d469a 100755 --- a/lib/mine/addLock/nearbyLock/nearbyLock_page.dart +++ b/lib/mine/addLock/nearbyLock/nearbyLock_page.dart @@ -105,6 +105,11 @@ class _NearbyLockPageState extends State with RouteAware { Widget nearbyLockItem( String lockTypeIcon, ScanResult scanResult, Function() action) { + // 如果广播名称为空或空字符串,则不显示该项 + if (scanResult.advertisementData.advName.isEmpty) { + return const SizedBox.shrink(); + } + return GestureDetector( onTap: () { final String? serviceUuid = From df3b4c65c5374934d5bcdc9c81b15345025eab6d Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 25 Mar 2025 14:06:10 +0800 Subject: [PATCH 41/54] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0crc=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E4=BD=8D=E7=9A=84=E6=A0=A1=E9=AA=8C=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E3=80=81=E8=B0=83=E6=95=B4sm4=E8=A7=A3=E5=AF=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/blue/reciver_data.dart | 301 ++++++++++++++++++++++++++++++++++ lib/blue/sm4Encipher/sm4.dart | 30 +++- 2 files changed, 327 insertions(+), 4 deletions(-) diff --git a/lib/blue/reciver_data.dart b/lib/blue/reciver_data.dart index 8f1db2af..2fc7fe54 100755 --- a/lib/blue/reciver_data.dart +++ b/lib/blue/reciver_data.dart @@ -57,7 +57,20 @@ class CommandReciverManager { if (data.isEmpty) { return; } + final int dataSize = data.length; + + // 验证CRC校验 + if (dataSize >= 2) { + final int calculatedCrc = + _calculateCRC16(data.sublist(0, dataSize - 2), dataSize - 2); + final int receivedCrc = (data[dataSize - 2] << 8) | data[dataSize - 1]; + + if (calculatedCrc != receivedCrc) { + AppLog.log('CRC校验失败'); + return; + } + } // 当小于包头加起来13个字节 if (dataSize < 13) { return; @@ -123,6 +136,16 @@ class CommandReciverManager { } } +// CRC16 校验计算 + static int _calculateCRC16(List bytes, int len) { + int value = 0x0000; + for (int i = 0; i < len; i++) { + int tmp = _reverse8(bytes[i]); + value = ((value << 8) ^ _crcTable[(value >> 8) ^ tmp & 0xFF]) & 0xFFFF; + } + return _reverse16(value); + } + static Future parseData(List data) async { if (data.isNotEmpty) { final int cmd = data[0] * 256 + data[1]; @@ -472,4 +495,282 @@ class CommandReciverManager { } return null; } + + // CRC16 查找表 + static const List _crcTable = [ + 0x0000, + 0x1021, + 0x2042, + 0x3063, + 0x4084, + 0x50a5, + 0x60c6, + 0x70e7, + 0x8108, + 0x9129, + 0xa14a, + 0xb16b, + 0xc18c, + 0xd1ad, + 0xe1ce, + 0xf1ef, + 0x1231, + 0x0210, + 0x3273, + 0x2252, + 0x52b5, + 0x4294, + 0x72f7, + 0x62d6, + 0x9339, + 0x8318, + 0xb37b, + 0xa35a, + 0xd3bd, + 0xc39c, + 0xf3ff, + 0xe3de, + 0x2462, + 0x3443, + 0x0420, + 0x1401, + 0x64e6, + 0x74c7, + 0x44a4, + 0x5485, + 0xa56a, + 0xb54b, + 0x8528, + 0x9509, + 0xe5ee, + 0xf5cf, + 0xc5ac, + 0xd58d, + 0x3653, + 0x2672, + 0x1611, + 0x0630, + 0x76d7, + 0x66f6, + 0x5695, + 0x46b4, + 0xb75b, + 0xa77a, + 0x9719, + 0x8738, + 0xf7df, + 0xe7fe, + 0xd79d, + 0xc7bc, + 0x48c4, + 0x58e5, + 0x6886, + 0x78a7, + 0x0840, + 0x1861, + 0x2802, + 0x3823, + 0xc9cc, + 0xd9ed, + 0xe98e, + 0xf9af, + 0x8948, + 0x9969, + 0xa90a, + 0xb92b, + 0x5af5, + 0x4ad4, + 0x7ab7, + 0x6a96, + 0x1a71, + 0x0a50, + 0x3a33, + 0x2a12, + 0xdbfd, + 0xcbdc, + 0xfbbf, + 0xeb9e, + 0x9b79, + 0x8b58, + 0xbb3b, + 0xab1a, + 0x6ca6, + 0x7c87, + 0x4ce4, + 0x5cc5, + 0x2c22, + 0x3c03, + 0x0c60, + 0x1c41, + 0xedae, + 0xfd8f, + 0xcdec, + 0xddcd, + 0xad2a, + 0xbd0b, + 0x8d68, + 0x9d49, + 0x7e97, + 0x6eb6, + 0x5ed5, + 0x4ef4, + 0x3e13, + 0x2e32, + 0x1e51, + 0x0e70, + 0xff9f, + 0xefbe, + 0xdfdd, + 0xcffc, + 0xbf1b, + 0xaf3a, + 0x9f59, + 0x8f78, + 0x9188, + 0x81a9, + 0xb1ca, + 0xa1eb, + 0xd10c, + 0xc12d, + 0xf14e, + 0xe16f, + 0x1080, + 0x00a1, + 0x30c2, + 0x20e3, + 0x5004, + 0x4025, + 0x7046, + 0x6067, + 0x83b9, + 0x9398, + 0xa3fb, + 0xb3da, + 0xc33d, + 0xd31c, + 0xe37f, + 0xf35e, + 0x02b1, + 0x1290, + 0x22f3, + 0x32d2, + 0x4235, + 0x5214, + 0x6277, + 0x7256, + 0xb5ea, + 0xa5cb, + 0x95a8, + 0x8589, + 0xf56e, + 0xe54f, + 0xd52c, + 0xc50d, + 0x34e2, + 0x24c3, + 0x14a0, + 0x0481, + 0x7466, + 0x6447, + 0x5424, + 0x4405, + 0xa7db, + 0xb7fa, + 0x8799, + 0x97b8, + 0xe75f, + 0xf77e, + 0xc71d, + 0xd73c, + 0x26d3, + 0x36f2, + 0x0691, + 0x16b0, + 0x6657, + 0x7676, + 0x4615, + 0x5634, + 0xd94c, + 0xc96d, + 0xf90e, + 0xe92f, + 0x99c8, + 0x89e9, + 0xb98a, + 0xa9ab, + 0x5844, + 0x4865, + 0x7806, + 0x6827, + 0x18c0, + 0x08e1, + 0x3882, + 0x28a3, + 0xcb7d, + 0xdb5c, + 0xeb3f, + 0xfb1e, + 0x8bf9, + 0x9bd8, + 0xabbb, + 0xbb9a, + 0x4a75, + 0x5a54, + 0x6a37, + 0x7a16, + 0x0af1, + 0x1ad0, + 0x2ab3, + 0x3a92, + 0xfd2e, + 0xed0f, + 0xdd6c, + 0xcd4d, + 0xbdaa, + 0xad8b, + 0x9de8, + 0x8dc9, + 0x7c26, + 0x6c07, + 0x5c64, + 0x4c45, + 0x3ca2, + 0x2c83, + 0x1ce0, + 0x0cc1, + 0xef1f, + 0xff3e, + 0xcf5d, + 0xdf7c, + 0xaf9b, + 0xbfba, + 0x8fd9, + 0x9ff8, + 0x6e17, + 0x7e36, + 0x4e55, + 0x5e74, + 0x2e93, + 0x3eb2, + 0x0ed1, + 0x1ef0 + ]; + + // 8位字节反转 + static int _reverse8(int data) { + int temp = 0; + for (int i = 0; i < 8; i++) { + temp |= ((data >> i) & 0x01) << (7 - i); + } + return temp; + } + + // 16位字反转 + static int _reverse16(int data) { + int temp = 0; + for (int i = 0; i < 16; i++) { + temp |= ((data >> i) & 0x0001) << (15 - i); + } + return temp; + } } diff --git a/lib/blue/sm4Encipher/sm4.dart b/lib/blue/sm4Encipher/sm4.dart index 38df45db..382cd5fa 100755 --- a/lib/blue/sm4Encipher/sm4.dart +++ b/lib/blue/sm4Encipher/sm4.dart @@ -263,7 +263,12 @@ class SM4 { 0x48 ]; - static const List FK = [0xA3B1BAC6, 0x56AA3350, 0x677D9197, 0xB27022DC]; + static const List FK = [ + 0xA3B1BAC6, + 0x56AA3350, + 0x677D9197, + 0xB27022DC + ]; static const List CK = [ 0x00070e15, @@ -411,11 +416,27 @@ class SM4 { } return paddedList; } else { + // 解密时去除PKCS7填充 + final int lastByte = input.last; + if (lastByte > 0 && lastByte <= blockSize) { + // 验证填充是否合法 + bool isValidPadding = true; + for (int i = input.length - lastByte; i < input.length; i++) { + if (input[i] != lastByte) { + isValidPadding = false; + break; + } + } + if (isValidPadding) { + return input.sublist(0, input.length - lastByte); + } + } + return input; // final lastByte = input.last; // final cutLen = input.length - lastByte; - // AppLog.log("object input.length:${input.length} lastByte:$lastByte input:$input cutLen:$cutLen"); + // // AppLog.log("object input.length:${input.length} lastByte:$lastByte input:$input cutLen:$cutLen"); // return input.sublist(0, cutLen); - return input; + // return input; } } @@ -480,7 +501,8 @@ class SM4 { final List supplementList = List.filled(16, 0x00); /// complete list - final List completeList = [...list, ...supplementList].sublist(0, 16); + final List completeList = + [...list, ...supplementList].sublist(0, 16); return completeList; } From 4742dac3ee3b3dc1521926c3299255d120473b75 Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 27 Mar 2025 09:11:36 +0800 Subject: [PATCH 42/54] =?UTF-8?q?fix:bug=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lan/lan_en.json | 3 + lan/lan_hk.json | 4 +- lan/lan_keys.json | 5 ++ lan/lan_tw.json | 4 +- lan/lan_zh.json | 6 ++ .../starLock_forgetPassword_logic.dart | 55 ++++++++++--------- .../starLock_forgetPassword_page.dart | 4 +- lib/login/login/starLock_login_logic.dart | 4 +- .../lockSet/lockSet/lockSet_page.dart | 2 +- .../remoteUnlocking/remoteUnlocking_page.dart | 3 +- 10 files changed, 56 insertions(+), 34 deletions(-) diff --git a/lan/lan_en.json b/lan/lan_en.json index c2fbf2a7..f0fb0b45 100644 --- a/lan/lan_en.json +++ b/lan/lan_en.json @@ -1151,5 +1151,8 @@ "请将手机切换至2.4G WiFi进行手动连接": "Please switch your phone to 2.4G WiFi for manual connection", "请确保网络是2.4GHz Wi-Fi": "Please ensure that the network is 2.4GHz Wi Fi", "是否要远程开锁": "Do you want to unlock remotely", + "国家地区的选择将影响数据安全,你当前选择的是": "The choice of country or region will affect data security. What is your current choice", + "请确认后再继续": "Please confirm before continuing", + "此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "The activation and deactivation of this feature can only be done through Bluetooth on the phone near the lock", "网关添加成功": "Gateway added successfully" } diff --git a/lan/lan_hk.json b/lan/lan_hk.json index 754865ba..9f3a2e13 100644 --- a/lan/lan_hk.json +++ b/lan/lan_hk.json @@ -152,7 +152,7 @@ "升级": "更新", "空闲": "空置", "已入住": "佔領", - "多语言": "語言", + "多语言": "多語言", "添加锁": "添加鎖", "锁地址": "鎖定地址", "选择锁类型": "選擇鎖類型", @@ -1149,5 +1149,7 @@ "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2.喺APP中開啟鎖嘅遠程解鎖功能(此功能默認關閉)。 如果此選項不可用,則鎖將唔撐Google Home", "3.安装Google Home APP,点击左上角的加号按钮": "3.安裝Google Home應用,點擊左上角嘅加號掣", "暂无最新记录": "目前冇可用嘅最新記錄", + "繁体中文(中国台湾)": "繁體中文(中國臺灣)", + "繁体中文(中国香港)": "繁體中文(中國香港)", "请将手机切换至2.4G WiFi进行手动连接": "請把手機切換到2.4G WiFi進行手動連接" } \ No newline at end of file diff --git a/lan/lan_keys.json b/lan/lan_keys.json index f93afdae..5f37ad05 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1156,5 +1156,10 @@ "请确保网络是2.4GHz Wi-Fi": "请确保网络是2.4GHz Wi-Fi", "已选": "已选", "是否要远程开锁": "是否要远程开锁", + "繁体中文(中国台湾)": "繁体中文(中国台湾)", + "繁体中文(中国香港)": "繁体中文(中国香港)", + "国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是", + "请确认后再继续": "请确认后再继续", + "此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行", "网关添加成功": "网关添加成功" } diff --git a/lan/lan_tw.json b/lan/lan_tw.json index 6de33a41..8f32a68e 100644 --- a/lan/lan_tw.json +++ b/lan/lan_tw.json @@ -151,7 +151,7 @@ "升级": "更新", "空闲": "空缺", "已入住": "已占用", - "多语言": "語言", + "多语言": "多語言", "添加锁": "添加鎖定", "锁地址": "鎖地址", "选择锁类型": "選擇鎖定類型", @@ -1149,5 +1149,7 @@ "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. 在APP中開啓鎖的遠程開鎖功能(默認關閉)。如果這個選項不可用,鎖將不支持谷歌Home", "3.安装Google Home APP,点击左上角的加号按钮": "3. 安裝谷歌Home應用程序並單擊左上角的加號按鈕", "暂无最新记录": "目前沒有最新的記錄", + "繁体中文(中国台湾)": "繁體中文(中國臺灣)", + "繁体中文(中国香港)": "繁體中文(中國香港)", "请将手机切换至2.4G WiFi进行手动连接": "手動連接時請將手機調至2.4G WiFi" } \ No newline at end of file diff --git a/lan/lan_zh.json b/lan/lan_zh.json index 351e3fff..a2c5906f 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -62,6 +62,8 @@ "批量授权锁": "批量授权锁", "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人", "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。", + "此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行", + "功能开启后,你将可以通过网关远程开锁。": "功能开启后,你将可以通过网关远程开锁。", "排列方式": "排列方式", "早到榜": "早到榜", @@ -1156,5 +1158,9 @@ "请确保网络是2.4GHz Wi-Fi": "请确保网络是2.4GHz Wi-Fi", "已选": "已选", "是否要远程开锁": "是否要远程开锁", + "繁体中文(中国台湾)": "繁体中文(中国台湾)", + "繁体中文(中国香港)": "繁体中文(中国香港)", + "国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是", + "请确认后再继续": "请确认后再继续", "网关添加成功": "网关添加成功" } diff --git a/lib/login/forgetPassword/starLock_forgetPassword_logic.dart b/lib/login/forgetPassword/starLock_forgetPassword_logic.dart index 7036c80c..8015cc6b 100755 --- a/lib/login/forgetPassword/starLock_forgetPassword_logic.dart +++ b/lib/login/forgetPassword/starLock_forgetPassword_logic.dart @@ -19,6 +19,7 @@ class StarLockForgetPasswordLogic extends BaseGetXController { final StarLockForgetPasswordState state = StarLockForgetPasswordState(); late Timer _timer; + void _startTimer() { _timer = Timer.periodic(1.seconds, (Timer timer) { if (state.currentSecond > 1) { @@ -37,12 +38,12 @@ class StarLockForgetPasswordLogic extends BaseGetXController { } Future resetPassword() async { - if(state.pwd.value != state.surePwd.value){ + if (state.pwd.value != state.surePwd.value) { showToast('两次密码不一致哦'.tr); return; } - if(!RegularExpression().validateString(state.pwd.value)){ + if (!RegularExpression().validateString(state.pwd.value)) { showToast('密码需至少包含数字/字母/字符中的2种组合'.tr); return; } @@ -56,42 +57,44 @@ class StarLockForgetPasswordLogic extends BaseGetXController { state.verificationCode.value); if (entity.errorCode!.codeIsSuccessful) { ApmHelper.instance.trackEvent('resetPassword_result', { - 'account':state.phoneStr.value, - 'date':DateTool().getNowDateWithType(1), - 'resetPassword_res':'成功', + 'account': state.phoneStr.value, + 'date': DateTool().getNowDateWithType(1), + 'resetPassword_res': '成功', }); showToast('重置成功'.tr); Get.back(); - }else{ + } else { ApmHelper.instance.trackEvent('resetPassword_result', { - 'account':state.phoneStr.value, - 'date':DateTool().getNowDateWithType(1), - 'resetPassword_res':'${entity.errorCode}--${entity.errorMsg}', + 'account': state.phoneStr.value, + 'date': DateTool().getNowDateWithType(1), + 'resetPassword_res': '${entity.errorCode}--${entity.errorMsg}', }); } } Future sendValidationCode() async { - final SendValidationCodeEntity entity = await ApiRepository.to.sendValidationCodeUnLogin( - // state.countryCode.value, - countryCode:state.countryCode.value, - account:state.phoneStr.value, - channel:state.codeType.value, - codeType:'2', - xWidth:state.xWidth.value.toString()); + final SendValidationCodeEntity entity = + await ApiRepository.to.sendValidationCodeUnLogin( + // state.countryCode.value, + countryCode: state.countryCode.value, + account: state.phoneStr.value, + channel: state.codeType.value, + codeType: '2', + xWidth: state.xWidth.value.toString()); if (entity.errorCode!.codeIsSuccessful) { _startTimer(); } } Future checkIpAction() async { - final CheckIPEntity entity = await ApiRepository.to.checkIpAction( - ip: '' - ); + final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: ''); if (entity.errorCode!.codeIsSuccessful) { - if(state.countryName.value == entity.data!.name){ - ShowTipView().showSureAlertDialog('国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续'.tr, tipTitle: '确认国家或地区'.tr, sureStr: '我知道了'.tr); + if (state.countryName.value != entity.data!.name) { + ShowTipView().showSureAlertDialog( + '国家地区的选择将影响数据安全,你当前选择的是' + state.countryName.value + '请确认后再继续'.tr, + tipTitle: '确认国家或地区'.tr, + sureStr: '我知道了'.tr); } } } @@ -103,9 +106,9 @@ class StarLockForgetPasswordLogic extends BaseGetXController { void changeInput(TextEditingController controller) { if (controller == state.phoneController) { state.phoneStr.value = controller.text; - if(state.phoneStr.value.contains('@')){ + if (state.phoneStr.value.contains('@')) { state.codeType.value = '2'; - }else{ + } else { state.codeType.value = '1'; } } @@ -120,11 +123,13 @@ class StarLockForgetPasswordLogic extends BaseGetXController { } _resetCanSendCode(); _resetCanSub(); - AppLog.log('state.canSub.value:${state.canSub.value} state.pwdIsOK:${state.pwdIsOK} state.codeIsOK:${state.codeIsOK} state.phoneStr.value:${state.phoneStr.value}'); + AppLog.log( + 'state.canSub.value:${state.canSub.value} state.pwdIsOK:${state.pwdIsOK} state.codeIsOK:${state.codeIsOK} state.phoneStr.value:${state.phoneStr.value}'); } void _resetCanSub() { - state.canSub.value = state.pwdIsOK && state.codeIsOK && state.phoneStr.value.isNotEmpty; + state.canSub.value = + state.pwdIsOK && state.codeIsOK && state.phoneStr.value.isNotEmpty; } void _resetCanSendCode() { diff --git a/lib/login/forgetPassword/starLock_forgetPassword_page.dart b/lib/login/forgetPassword/starLock_forgetPassword_page.dart index 9e20dc8f..7cc992e6 100755 --- a/lib/login/forgetPassword/starLock_forgetPassword_page.dart +++ b/lib/login/forgetPassword/starLock_forgetPassword_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -58,8 +57,7 @@ class _StarLockForgetPasswordPageState children: [ SizedBox(width: 5.w), Expanded( - child: Text( - '国家/地区'.tr, + child: Text('国家/地区'.tr, style: TextStyle( fontSize: 26.sp, color: AppColors.blackColor))), SizedBox(width: 20.w), diff --git a/lib/login/login/starLock_login_logic.dart b/lib/login/login/starLock_login_logic.dart index 570fa80c..4dfa2b5d 100755 --- a/lib/login/login/starLock_login_logic.dart +++ b/lib/login/login/starLock_login_logic.dart @@ -141,9 +141,9 @@ class StarLockLoginLogic extends BaseGetXController { Future checkIpAction() async { final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: ''); if (entity.errorCode!.codeIsSuccessful) { - if (state.countryName == entity.data!.name) { + if (state.countryName != entity.data!.name) { ShowTipView().showSureAlertDialog( - '国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续'.tr, + '国家地区的选择将影响数据安全,你当前选择的是'+state.countryName+'请确认后再继续'.tr, tipTitle: '确认国家或地区'.tr, sureStr: '我知道了'.tr); } diff --git a/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart b/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart index a0011308..6760a1c0 100755 --- a/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart +++ b/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart @@ -362,7 +362,7 @@ class _LockSetPageState extends State //todo: 双重认证、双锁联动国际化、API接口 //双重认证 Obx(() => Visibility( - visible: true, + visible: state.lockFeature.value.doubleAuthentication == 1, child: CommonItem( leftTitel: '双重认证'.tr, rightTitle: '', diff --git a/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart b/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart index dd061929..191fd5a9 100755 --- a/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart +++ b/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart @@ -35,6 +35,7 @@ class _RemoteUnlockingPageState extends State body: Container( padding: EdgeInsets.all(30.w), child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.start, @@ -65,7 +66,7 @@ class _RemoteUnlockingPageState extends State }), Padding( padding: EdgeInsets.only(top: 20.h), - child: Text('功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。'.tr, + child: Text('此功能的开启和关闭只能在锁附近通过手机蓝牙进行'.tr, style: TextStyle(fontSize: 20.sp)), ), SizedBox( From fab0f9d4ca78e4bcad33972ad65343f508343309 Mon Sep 17 00:00:00 2001 From: liyi Date: Fri, 28 Mar 2025 10:43:18 +0800 Subject: [PATCH 43/54] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=A4=B4=E5=83=8F=E6=97=B6=E7=9A=84=E6=9D=83=E9=99=90=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lan/lan_en.json | 1 + lan/lan_keys.json | 1 + lan/lan_zh.json | 1 + .../minePersonInfo_logic.dart | 98 +++++++++++++++---- 4 files changed, 80 insertions(+), 21 deletions(-) diff --git a/lan/lan_en.json b/lan/lan_en.json index f0fb0b45..99767e88 100644 --- a/lan/lan_en.json +++ b/lan/lan_en.json @@ -1153,6 +1153,7 @@ "是否要远程开锁": "Do you want to unlock remotely", "国家地区的选择将影响数据安全,你当前选择的是": "The choice of country or region will affect data security. What is your current choice", "请确认后再继续": "Please confirm before continuing", + "需要相机权限": "Camera permission required", "此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "The activation and deactivation of this feature can only be done through Bluetooth on the phone near the lock", "网关添加成功": "Gateway added successfully" } diff --git a/lan/lan_keys.json b/lan/lan_keys.json index 5f37ad05..b9e8172d 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1160,6 +1160,7 @@ "繁体中文(中国香港)": "繁体中文(中国香港)", "国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是", "请确认后再继续": "请确认后再继续", + "需要相机权限": "需要相机权限", "此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行", "网关添加成功": "网关添加成功" } diff --git a/lan/lan_zh.json b/lan/lan_zh.json index a2c5906f..bde3239c 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -1162,5 +1162,6 @@ "繁体中文(中国香港)": "繁体中文(中国香港)", "国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是", "请确认后再继续": "请确认后再继续", + "需要相机权限": "需要相机权限", "网关添加成功": "网关添加成功" } diff --git a/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart b/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart index 810038cf..6f12d9f5 100755 --- a/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart +++ b/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart @@ -1,7 +1,7 @@ - import 'dart:async'; import 'dart:io'; import 'dart:typed_data'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:image_picker/image_picker.dart'; import 'package:permission_handler/permission_handler.dart'; @@ -31,27 +31,30 @@ class MinePersonInfoLogic extends BaseGetXController { //上传头像 先获取upToken 再调用updateUserInfo Future getUpTokenRequest(String filename, int size) async { - final MinePersonGetUploadFileInfoEntity entity = await ApiRepository.to.getUpToken( - userId: state.mineInfoData.value.uid!.toString(), - filename: filename, - size: size); + final MinePersonGetUploadFileInfoEntity entity = await ApiRepository.to + .getUpToken( + userId: state.mineInfoData.value.uid!.toString(), + filename: filename, + size: size); if (entity.errorCode!.codeIsSuccessful) { uploadFile(entity); } } // 上传头像 - Future uploadFile(MinePersonGetUploadFileInfoEntity minePersonGetUploadFileInfoEntity) async { + Future uploadFile( + MinePersonGetUploadFileInfoEntity + minePersonGetUploadFileInfoEntity) async { final File bytes = File(state.image!.path); final Uint8List enc = await bytes.readAsBytes(); - final FormData form = FormData(minePersonGetUploadFileInfoEntity.data!.formData!); - form.files.add( - MapEntry( - minePersonGetUploadFileInfoEntity.data!.fileField!, - MultipartFile(enc, filename: minePersonGetUploadFileInfoEntity.data!.formData!['key']) - ) - ); + final FormData form = + FormData(minePersonGetUploadFileInfoEntity.data!.formData!); + form.files.add(MapEntry( + minePersonGetUploadFileInfoEntity.data!.fileField!, + MultipartFile(enc, + filename: + minePersonGetUploadFileInfoEntity.data!.formData!['key']))); final LoginEntity entity = await ApiRepository.to.uploadFile( url: minePersonGetUploadFileInfoEntity.data!.uploadUrl!, body: form); @@ -63,7 +66,8 @@ class MinePersonInfoLogic extends BaseGetXController { //更新个人信息-头像 Future updateUserInfoRequest(String headUrl) async { - final PasswordKeyListEntity entity = await ApiRepository.to.updateUserHeadUrlInfo(headUrl: headUrl); + final PasswordKeyListEntity entity = + await ApiRepository.to.updateUserHeadUrlInfo(headUrl: headUrl); if (entity.errorCode!.codeIsSuccessful) { state.headUrl.value = headUrl; state.mineInfoData.value.headUrl = state.headUrl.value; @@ -88,9 +92,9 @@ class MinePersonInfoLogic extends BaseGetXController { ///拍摄照片 Future selectCamera() async { final XFile? photo = await state.imagePicker.pickImage( - source: ImageSource.camera, - maxHeight: 250, - maxWidth: 250, + source: ImageSource.camera, + maxHeight: 250, + maxWidth: 250, ); if (photo != null) { state.image = photo; @@ -117,16 +121,68 @@ class MinePersonInfoLogic extends BaseGetXController { //权限判断 访问相机 Future _checkCameraPermission() async { - final bool status = await PermissionDialog.request(Permission.camera); - if (status) { + final PermissionStatus status = await Permission.camera.status; + if (status.isPermanentlyDenied) { + // 用户永久拒绝了权限,引导用户去设置中心开启 + Get.dialog( + AlertDialog( + title: Text('需要相机权限'.tr), + content: Text('请在设置中允许访问相机'.tr), + actions: [ + TextButton( + onPressed: () => Get.back(), + child: Text('取消'.tr), + ), + TextButton( + onPressed: () { + Get.back(); + openAppSettings(); + }, + child: Text('去设置'.tr), + ), + ], + ), + ); + return; + } + + // 权限未被永久拒绝,尝试请求权限 + final bool granted = await PermissionDialog.request(Permission.camera); + if (granted) { selectCamera(); } } //权限判断 访问相册 Future _checkPhotoPermission() async { - final bool status = await PermissionDialog.requestPhotos(); - if (status) { + final PermissionStatus status = await Permission.photos.status; + if (status.isPermanentlyDenied) { + // 用户永久拒绝了权限,引导用户去设置中心开启 + Get.dialog( + AlertDialog( + title: Text('需要相册权限'.tr), + content: Text('请在设置中允许访问相册'.tr), + actions: [ + TextButton( + onPressed: () => Get.back(), + child: Text('取消'.tr), + ), + TextButton( + onPressed: () { + Get.back(); + openAppSettings(); + }, + child: Text('去设置'.tr), + ), + ], + ), + ); + return; + } + + // 权限未被永久拒绝,尝试请求权限 + final bool granted = await PermissionDialog.requestPhotos(); + if (granted) { selectImage(); } } From d78d4ab957ef3ad37222b8d293af51c19f562062 Mon Sep 17 00:00:00 2001 From: liyi Date: Fri, 28 Mar 2025 10:43:31 +0800 Subject: [PATCH 44/54] =?UTF-8?q?fix:xhj=E4=B8=8D=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E6=98=9F=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/talk/starChart/star_chart_manage.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/talk/starChart/star_chart_manage.dart b/lib/talk/starChart/star_chart_manage.dart index d379ef01..328e80b8 100644 --- a/lib/talk/starChart/star_chart_manage.dart +++ b/lib/talk/starChart/star_chart_manage.dart @@ -123,6 +123,10 @@ class StartChartManage { // 星图服务初始化 Future init() async { + if (F.isXHJ) { + return; + } + // 判断是否登录账户 final loginData = await Storage.getLoginData(); From 6546b3ed178fcfa26eac74372ba95154fee9d84e Mon Sep 17 00:00:00 2001 From: Liuyf Date: Mon, 31 Mar 2025 12:49:47 +0800 Subject: [PATCH 45/54] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=E6=9D=83=E9=99=90=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../minePersonInfoPage/minePersonInfo_logic.dart | 2 ++ lib/widget/permission/permission_dialog.dart | 12 +++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart b/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart index 6f12d9f5..f301059f 100755 --- a/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart +++ b/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart @@ -13,6 +13,7 @@ import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_ import 'package:star_lock/widget/permission/permission_dialog.dart'; import '../../../../network/api_repository.dart'; import '../../../../tools/baseGetXController.dart'; +import '../../../app_settings/app_settings.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/storage.dart'; import 'minePersonGetUploadFileInfo_entity.dart'; @@ -156,6 +157,7 @@ class MinePersonInfoLogic extends BaseGetXController { //权限判断 访问相册 Future _checkPhotoPermission() async { final PermissionStatus status = await Permission.photos.status; + AppLog.log('status:$status status:$status'); if (status.isPermanentlyDenied) { // 用户永久拒绝了权限,引导用户去设置中心开启 Get.dialog( diff --git a/lib/widget/permission/permission_dialog.dart b/lib/widget/permission/permission_dialog.dart index 23d9a6cc..3d74e1bd 100755 --- a/lib/widget/permission/permission_dialog.dart +++ b/lib/widget/permission/permission_dialog.dart @@ -132,9 +132,7 @@ class PermissionDialog { List permissions; if (isAndroid33) { permissions = [ - Permission.mediaLibrary, Permission.photos, - Permission.videos, ]; } else { permissions = [ @@ -150,11 +148,11 @@ class PermissionDialog { isGranted = isGranted && (await permission.status) == PermissionStatus.granted; } - if (isAndroid33) { - // android 33以上需要申请媒体库权限 - isGranted = - (await Permission.mediaLibrary.status) == PermissionStatus.granted; - } + // if (isAndroid33) { + // // android 33以上需要申请媒体库权限 + // isGranted = + // (await Permission.mediaLibrary.status) == PermissionStatus.granted; + // } return isGranted; } From 1dd9da1bef70fc94ecbd3a373d02344fbeb66196 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Mon, 31 Mar 2025 15:00:14 +0800 Subject: [PATCH 46/54] =?UTF-8?q?fix=EF=BC=9A=E3=80=90=E5=BC=80=E9=94=81?= =?UTF-8?q?=E9=A1=B5-=E5=AF=86=E7=A0=81-=E4=BF=AE=E6=94=B9=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=AF=86=E7=A0=81=E4=B8=BA=E5=B7=B2=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E5=AF=86=E7=A0=81=E4=B8=80=E7=9B=B4=E8=BD=AC=E5=9C=88?= =?UTF-8?q?=E6=97=A0=E6=8F=90=E7=A4=BA=EF=BC=8C=E4=B9=8B=E5=89=8D=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/blue/io_reply.dart | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/blue/io_reply.dart b/lib/blue/io_reply.dart index be395c47..856eb0d9 100755 --- a/lib/blue/io_reply.dart +++ b/lib/blue/io_reply.dart @@ -1,11 +1,10 @@ - import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import '../app_settings/app_settings.dart'; import 'io_type.dart'; -abstract class Reply{ +abstract class Reply { Reply.parseData(this.commandType, List dataDetail); CommandType? commandType; @@ -13,10 +12,10 @@ abstract class Reply{ //command key flag int status = 0; List data = []; - static String logTag= '锁 -> App,指令订阅类型 :'; + static String logTag = '锁 -> App,指令订阅类型 :'; - void errorWithStstus(int status){ - switch(status){ + void errorWithStstus(int status) { + switch (status) { case 0x00: // 成功 AppLog.log('$logTag ${commandType?.typeName} 0x00 成功'); @@ -39,7 +38,7 @@ abstract class Reply{ case 0x04: // 用户未登记 AppLog.log('$logTag ${commandType!.typeName} 0x04 用户未登记'); - // showErrorMessage('用户未登记'); + showErrorMessage('用户未登记'.tr); break; case 0x05: // 参数错误 @@ -133,7 +132,7 @@ abstract class Reply{ } } - void showErrorMessage(String message){ + void showErrorMessage(String message) { EasyLoading.showToast(message, duration: 2000.milliseconds); } From 867dadd7b7cf29fbcbbc0d6857402d3d9ad27648 Mon Sep 17 00:00:00 2001 From: liyi Date: Mon, 31 Mar 2025 15:51:31 +0800 Subject: [PATCH 47/54] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E6=97=B6=E9=80=89=E4=B8=AD=E5=9B=BD=E5=AE=B6=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/login/register/starLock_register_logic.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/login/register/starLock_register_logic.dart b/lib/login/register/starLock_register_logic.dart index 93890b8e..5796d422 100755 --- a/lib/login/register/starLock_register_logic.dart +++ b/lib/login/register/starLock_register_logic.dart @@ -100,9 +100,11 @@ class StarLockRegisterLogic extends BaseGetXController { Future checkIpAction() async { final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: ''); if (entity.errorCode!.codeIsSuccessful) { - if (state.countryName.value == entity.data!.name) { + if (state.countryName.value != entity.data!.name) { ShowTipView().showSureAlertDialog( - '国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续'.tr, + '国家地区的选择将影响数据安全,你当前选择的是'.tr + + '${state.countryName.value},' + + '请确认后再继续'.tr, tipTitle: '确认国家或地区'.tr, sureStr: '我知道了'.tr); } From 51e519bd7b6afb872acf34b381d154ccae4f0a87 Mon Sep 17 00:00:00 2001 From: liyi Date: Mon, 31 Mar 2025 15:56:47 +0800 Subject: [PATCH 48/54] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E5=BC=80=E9=94=81=E7=9A=84=E6=96=87=E6=9C=AC=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remoteUnlocking/remoteUnlocking_page.dart | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart b/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart index 191fd5a9..b18d0286 100755 --- a/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart +++ b/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_page.dart @@ -42,7 +42,7 @@ class _RemoteUnlockingPageState extends State children: [ Expanded( child: Text( - '功能开启后,你将可以通过网关远程开锁。'.tr, + '功能开启后,你将可以通过网关远程开锁。'.tr + '此功能的开启和关闭只能在锁附近通过手机蓝牙进行'.tr, style: TextStyle( fontSize: 20.sp, color: AppColors.darkGrayTextColor), )), @@ -64,11 +64,11 @@ class _RemoteUnlockingPageState extends State ], ); }), - Padding( - padding: EdgeInsets.only(top: 20.h), - child: Text('此功能的开启和关闭只能在锁附近通过手机蓝牙进行'.tr, - style: TextStyle(fontSize: 20.sp)), - ), + // Padding( + // padding: EdgeInsets.only(top: 20.h), + // child: Text('此功能的开启和关闭只能在锁附近通过手机蓝牙进行'.tr, + // style: TextStyle(fontSize: 20.sp)), + // ), SizedBox( height: 40.h, ), From fae8e9872fcddb5b397e6c3043aba117529a1d3f Mon Sep 17 00:00:00 2001 From: Liuyf Date: Mon, 31 Mar 2025 16:09:57 +0800 Subject: [PATCH 49/54] =?UTF-8?q?fix=EF=BC=9A=E3=80=90=E5=BC=80=E9=94=81?= =?UTF-8?q?=E9=A1=B5-=E5=9B=BE=E6=A0=87=E7=BA=BF=E4=B8=8A=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E5=BA=94=E6=98=AF=E7=BB=BF=E8=89=B2=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=EF=BC=8C=E7=8E=B0=E4=B8=BA=E9=BB=91=E8=89=B2=E3=80=82=E5=8F=A6?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92=E5=BA=94=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lockDetail/lockDetail_page.dart | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/lib/main/lockDetail/lockDetail/lockDetail_page.dart index fc69d86b..3d0e818a 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -1262,16 +1262,13 @@ class _LockDetailPageState extends State SizedBox( width: 42.w, height: 42.h, - child: FlavorsImg( - black: true, - child: Image.asset(iconUrl, - width: 42.w, - height: 42.w, - color: bottomBtnisEable - ? AppColors.mainColor - : AppColors.lockDetailBottomBtnUneable, - fit: BoxFit.fitWidth), - ), + child: Image.asset(iconUrl, + width: 42.w, + height: 42.w, + color: bottomBtnisEable + ? AppColors.mainColor + : AppColors.lockDetailBottomBtnUneable, + fit: BoxFit.fitWidth), ), SizedBox(height: 5.h), Expanded( @@ -1295,16 +1292,13 @@ class _LockDetailPageState extends State SizedBox( width: 42.w, height: 42.w, - child: FlavorsImg( - black: true, - child: Image.asset(iconUrl, - width: 42.w, - height: 42.w, - color: bottomBtnisEable - ? AppColors.mainColor - : AppColors.lockDetailBottomBtnUneable, - fit: BoxFit.fitWidth), - ), + child: Image.asset(iconUrl, + width: 42.w, + height: 42.w, + color: bottomBtnisEable + ? AppColors.mainColor + : AppColors.lockDetailBottomBtnUneable, + fit: BoxFit.fitWidth), ), SizedBox(height: 15.h), Text( From ec3d4109b1c107caa409bcb08c43ae507ca46167 Mon Sep 17 00:00:00 2001 From: Liuyf Date: Mon, 31 Mar 2025 17:20:55 +0800 Subject: [PATCH 50/54] =?UTF-8?q?fix=EF=BC=9A=E3=80=90=E5=BC=80=E9=94=81?= =?UTF-8?q?=E9=A1=B5-=E8=AE=BE=E7=BD=AE-=E5=8F=8C=E9=87=8D=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=20=E8=BF=98=E6=9C=AA=E8=B0=83=E8=AF=95=20=E5=BB=BA?= =?UTF-8?q?=E8=AE=AE=E9=9A=90=E8=97=8F=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart | 3 ++- lib/main_local.dart | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart b/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart index 6760a1c0..4d8fac0e 100755 --- a/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart +++ b/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart @@ -362,7 +362,8 @@ class _LockSetPageState extends State //todo: 双重认证、双锁联动国际化、API接口 //双重认证 Obx(() => Visibility( - visible: state.lockFeature.value.doubleAuthentication == 1, + //state.lockFeature.value.doubleAuthentication == 1, + visible: false, child: CommonItem( leftTitel: '双重认证'.tr, rightTitle: '', diff --git a/lib/main_local.dart b/lib/main_local.dart index bd256362..9e30d007 100755 --- a/lib/main_local.dart +++ b/lib/main_local.dart @@ -4,7 +4,7 @@ import 'flavors.dart'; import 'main.dart' as runner; Future main() async { - F.appFlavor = Flavor.sky; + F.appFlavor = Flavor.xhj; // AppLog.log('local调用了main函数'); await runner.main(); } From 79e21e7e4e5619f64e60c9fd6aaf2d3e54b683a5 Mon Sep 17 00:00:00 2001 From: liyi Date: Mon, 31 Mar 2025 18:07:45 +0800 Subject: [PATCH 51/54] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E9=A6=99=E6=B8=AF?= =?UTF-8?q?=E7=9A=84=E8=AF=AD=E8=A8=80=E6=98=BE=E7=A4=BA=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lan/lan_hk.json | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lan/lan_hk.json b/lan/lan_hk.json index 9f3a2e13..bf486ffa 100644 --- a/lan/lan_hk.json +++ b/lan/lan_hk.json @@ -1042,42 +1042,42 @@ "导出锁数据": "導出鎖定數據", "一键开锁": "一鍵解鎖", "已开通": "打開", - "英文": "英文", - "简体中文": "簡體中文", + "英文": "English", + "简体中文": "简体中文", "繁体中文": "繁體中文", - "法语": "法文", + "法语": "Français", "俄语": "Русский", - "德语": "德文", + "德语": "Deutsch", "日语": "日本語", "韩语": "한국어", "意大利语": "Italiano", "乌克兰语": "Українська", "葡萄牙语": "Português", - "西班牙语": "西班牙人", + "西班牙语": "Español", "阿拉伯语": "العربية", "越南语": "Tiếng Việt", - "马来语": "馬來文", - "荷兰语": "荷蘭", - "罗马尼亚语": "羅曼", + "马来语": "Bahasa Melayu", + "荷兰语": "Nederlands", + "罗马尼亚语": "Română", "立陶宛语": "Lietuvių", - "瑞典语": "斯文斯卡", - "爱沙尼亚语": "埃斯蒂", - "波兰语": "波蘭", - "斯洛伐克语": "斯洛文尼亞", + "瑞典语": "Svenska", + "爱沙尼亚语": "Eesti", + "波兰语": "Polski", + "斯洛伐克语": "Slovenčina", "捷克语": "Čeština", "希腊语": "Ελληνικά", "希伯来语": "עברית", "塞尔维亚语": "Српски", "土耳其语": "Türkçe", - "匈牙利语": "匈牙利嘅", + "匈牙利语": "Magyar", "保加利亚语": "Български", "哈萨克斯坦语": "Қазақ", "孟加拉语": "বাংলা", - "克罗地亚语": "赫尔瓦茨基", + "克罗地亚语": "Hrvatski", "泰语": "ไทย", "印度尼西亚语": "Bahasa Indonesia", - "芬兰语": "索米", - "丹麦语": "丹斯克", + "芬兰语": "Suomi", + "丹麦语": "Dansk", "印地语": "हिंदीName", "乌尔都语": "اوردو", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 你確定要重置啊?", From 22b063b7654ce7e4f96475f4292ef4d50480c199 Mon Sep 17 00:00:00 2001 From: liyi Date: Mon, 31 Mar 2025 18:36:39 +0800 Subject: [PATCH 52/54] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E8=BE=93=E5=85=A5=E6=A1=86=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/login/login/starLock_login_page.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/login/login/starLock_login_page.dart b/lib/login/login/starLock_login_page.dart index 351125c0..1875d334 100755 --- a/lib/login/login/starLock_login_page.dart +++ b/lib/login/login/starLock_login_page.dart @@ -133,6 +133,7 @@ class _StarLockLoginPageState extends State { inputFormatters: [ // FilteringTextInputFormatter.allow(RegExp('[0-9]')), LengthLimitingTextInputFormatter(30), + FilteringTextInputFormatter.singleLineFormatter ]), SizedBox(height: 10.h), LoginInput( From 5846c0914dfda39b285f9de1be1ad88cc749e186 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 1 Apr 2025 09:08:13 +0800 Subject: [PATCH 53/54] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E8=BE=93=E5=85=A5=E6=A1=86=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tools/tf_loginInput.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tools/tf_loginInput.dart b/lib/tools/tf_loginInput.dart index ba08fb72..3ab4c6b8 100755 --- a/lib/tools/tf_loginInput.dart +++ b/lib/tools/tf_loginInput.dart @@ -93,7 +93,7 @@ class _LoginInputState extends State { onTap: widget.onTapAction, autofocus: false, inputFormatters: widget.inputFormatters, - textInputAction: TextInputAction.next, + textInputAction: isPwd ? TextInputAction.done : TextInputAction.next, // 修改键盘类型为密码类型 keyboardType: isPwd ? TextInputType.visiblePassword From d37e0c720f2a65a72b662571397e5c8a828e6ea6 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 1 Apr 2025 09:17:17 +0800 Subject: [PATCH 54/54] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customSMSTemplateList_page.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/customSMSTemplateList_page.dart b/lib/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/customSMSTemplateList_page.dart index 143de483..e39cb1b1 100755 --- a/lib/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/customSMSTemplateList_page.dart +++ b/lib/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/customSMSTemplateList_page.dart @@ -121,8 +121,13 @@ class _CustomSMSTemplateListPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + // Text( + // '${'当前状态'.tr}:${'试用中'.tr}', + // style: TextStyle( + // fontSize: 20.sp, fontWeight: FontWeight.w600), + // ), Text( - '${'当前状态'.tr}:${'试用中'.tr}', + '该功能是高级功能,请开通后再使用'.tr, style: TextStyle( fontSize: 20.sp, fontWeight: FontWeight.w600), ),