other: merge develop
@ -2,11 +2,13 @@ package com.skychip.lock
|
||||
|
||||
import io.flutter.app.FlutterApplication
|
||||
import android.util.Log
|
||||
import cn.jiguang.api.utils.JCollectionAuth;
|
||||
|
||||
class App : FlutterApplication() {
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
Log.d("MyApplication", "Application has started")
|
||||
JCollectionAuth.setAuth(getApplicationContext(), false);
|
||||
}
|
||||
}
|
||||
BIN
android/app/src/main/res/drawable/check.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
android/app/src/main/res/drawable/icon_left_grey.png
Normal file
|
After Width: | Height: | Size: 214 B |
5
android/app/src/main/res/drawable/log_btn_background.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 设置背景颜色为透明 -->
|
||||
<solid android:color="@android:color/transparent"/>
|
||||
</shape>
|
||||
BIN
android/app/src/main/res/drawable/uncheck.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
android/app/src/main/res/raw/ring.mp3
Executable file
@ -1,86 +1,87 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>play</title>
|
||||
</head>
|
||||
<style>
|
||||
html {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: hidden; /* 防止滚动条出现 */
|
||||
overflow: hidden;
|
||||
/* 防止滚动条出现 */
|
||||
}
|
||||
|
||||
body {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: white;
|
||||
overflow: hidden; /* 防止滚动条出现 */
|
||||
overflow: hidden;
|
||||
/* 防止滚动条出现 */
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
#player {
|
||||
object-fit:cover;
|
||||
object-fit: cover;
|
||||
height: 56vh;
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
</style>
|
||||
|
||||
<body>
|
||||
|
||||
<video autoplay muted poster="images/loader-thumb.jpg"
|
||||
id="player">
|
||||
</video>
|
||||
<script src="jmuxer.min.js"></script>
|
||||
<script>
|
||||
<video autoplay muted poster="images/loader-thumb.jpg" id="player">
|
||||
</video>
|
||||
<script src="jmuxer.min.js"></script>
|
||||
<script>
|
||||
|
||||
if (typeof JMuxer === 'undefined') {
|
||||
console.error("JMuxer is not defined. Check if jmuxer.min.js is loaded correctly.");
|
||||
} else {
|
||||
console.log("JMuxer loaded successfully.");
|
||||
}
|
||||
let jmuxer;
|
||||
window.onload = function() {
|
||||
try {
|
||||
jmuxer = new JMuxer({
|
||||
node: 'player',
|
||||
mode: 'video',
|
||||
debug: false,
|
||||
webgl: true, // 启用WebGL加速
|
||||
webglOptions: {
|
||||
preserveDrawingBuffer: false,
|
||||
antialias: false
|
||||
},
|
||||
flushingTime: 0, // 禁用自动刷新
|
||||
clearBuffer: false, // 保留解码缓存
|
||||
fps:20,
|
||||
onReady: () => {
|
||||
console.log('播放器初始化完成');
|
||||
// 通知Flutter端准备就绪
|
||||
window.Flutter.postMessage('ready');
|
||||
}
|
||||
});
|
||||
jmuxer.reset();
|
||||
console.log("JMuxer initialized.");
|
||||
} catch (e) {
|
||||
console.error("Error initializing JMuxer:", e);
|
||||
if (typeof JMuxer === 'undefined') {
|
||||
console.error("JMuxer is not defined. Check if jmuxer.min.js is loaded correctly.");
|
||||
} else {
|
||||
console.log("JMuxer loaded successfully.");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// Feed data from Flutter
|
||||
function feedDataFromFlutter(data) {
|
||||
const buffer = new Uint8Array(data);
|
||||
jmuxer.feed({
|
||||
video: buffer,
|
||||
|
||||
let jmuxer;
|
||||
window.onload = function () {
|
||||
try {
|
||||
jmuxer = new JMuxer({
|
||||
node: 'player',
|
||||
mode: 'video',
|
||||
debug: false,
|
||||
readfpsfromtrack: true,
|
||||
flushingTime: 0, // 立即刷新
|
||||
clearBuffer: true, // 丢弃延迟帧
|
||||
fps: 25, // 强制指定帧率
|
||||
onReady: () => {
|
||||
console.log('播放器初始化完成');
|
||||
// 通知Flutter端准备就绪
|
||||
window.Flutter.postMessage('ready');
|
||||
},
|
||||
onMissingVideoFrames: (missingFrames) => {
|
||||
// console.log('Missing video frames:', missingFrames);
|
||||
},
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("Error initializing JMuxer:", e);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// Feed data from Flutter
|
||||
function feedDataFromFlutter(data) {
|
||||
const buffer = new Uint8Array(data);
|
||||
jmuxer.feed({
|
||||
video: buffer,
|
||||
duration: 40 // 每帧持续时间40ms(25fps)
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Optional: notify Flutter
|
||||
@ -92,11 +93,27 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Function to return to Flutter page
|
||||
function returnToFlutter() {
|
||||
notifyFlutter("Returning to Flutter page");
|
||||
}
|
||||
</script>
|
||||
// Function to return to Flutter page
|
||||
function returnToFlutter() {
|
||||
notifyFlutter("Returning to Flutter page");
|
||||
}
|
||||
|
||||
// 添加清理方法
|
||||
function cleanupJMuxer() {
|
||||
if (jmuxer) {
|
||||
try {
|
||||
jmuxer.destroy();
|
||||
jmuxer = null;
|
||||
console.log('JMuxer cleaned up successfully');
|
||||
window.Flutter.postMessage('cleanup_complete');
|
||||
} catch (e) {
|
||||
console.error('Error cleaning up JMuxer:', e);
|
||||
window.Flutter.postMessage('cleanup_error');
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
BIN
assets/test.jpg
|
Before Width: | Height: | Size: 214 KiB |
@ -144,6 +144,8 @@ PODS:
|
||||
- fluwx/pay (0.0.1):
|
||||
- Flutter
|
||||
- WechatOpenSDK-XCFramework (~> 2.0.4)
|
||||
- gallery_saver (0.0.1):
|
||||
- Flutter
|
||||
- google_maps_flutter_ios (0.0.1):
|
||||
- Flutter
|
||||
- GoogleMaps (< 9.0)
|
||||
@ -219,6 +221,18 @@ PODS:
|
||||
- Flutter
|
||||
- JCore (>= 4.6.2)
|
||||
- JVerification (= 3.2.4)
|
||||
- libwebp (1.3.2):
|
||||
- libwebp/demux (= 1.3.2)
|
||||
- libwebp/mux (= 1.3.2)
|
||||
- libwebp/sharpyuv (= 1.3.2)
|
||||
- libwebp/webp (= 1.3.2)
|
||||
- libwebp/demux (1.3.2):
|
||||
- libwebp/webp
|
||||
- libwebp/mux (1.3.2):
|
||||
- libwebp/demux
|
||||
- libwebp/sharpyuv (1.3.2)
|
||||
- libwebp/webp (1.3.2):
|
||||
- libwebp/sharpyuv
|
||||
- nanopb (3.30910.0):
|
||||
- nanopb/decode (= 3.30910.0)
|
||||
- nanopb/encode (= 3.30910.0)
|
||||
@ -261,6 +275,9 @@ PODS:
|
||||
- video_player_avfoundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- video_thumbnail (0.0.1):
|
||||
- Flutter
|
||||
- libwebp
|
||||
- webview_flutter_wkwebview (0.0.1):
|
||||
- Flutter
|
||||
- WechatOpenSDK-XCFramework (2.0.4)
|
||||
@ -290,6 +307,7 @@ DEPENDENCIES:
|
||||
- flutter_voice_processor (from `.symlinks/plugins/flutter_voice_processor/ios`)
|
||||
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
||||
- fluwx (from `.symlinks/plugins/fluwx/ios`)
|
||||
- gallery_saver (from `.symlinks/plugins/gallery_saver/ios`)
|
||||
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
|
||||
- image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`)
|
||||
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
|
||||
@ -310,6 +328,7 @@ DEPENDENCIES:
|
||||
- umeng_common_sdk (from `.symlinks/plugins/umeng_common_sdk/ios`)
|
||||
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
|
||||
- video_thumbnail (from `.symlinks/plugins/video_thumbnail/ios`)
|
||||
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
|
||||
|
||||
SPEC REPOS:
|
||||
@ -339,6 +358,7 @@ SPEC REPOS:
|
||||
- JCore
|
||||
- JPush
|
||||
- JVerification
|
||||
- libwebp
|
||||
- nanopb
|
||||
- PromisesObjC
|
||||
- SDWebImage
|
||||
@ -395,6 +415,8 @@ EXTERNAL SOURCES:
|
||||
:path: ".symlinks/plugins/fluttertoast/ios"
|
||||
fluwx:
|
||||
:path: ".symlinks/plugins/fluwx/ios"
|
||||
gallery_saver:
|
||||
:path: ".symlinks/plugins/gallery_saver/ios"
|
||||
google_maps_flutter_ios:
|
||||
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
|
||||
image_gallery_saver:
|
||||
@ -429,6 +451,8 @@ EXTERNAL SOURCES:
|
||||
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
||||
video_player_avfoundation:
|
||||
:path: ".symlinks/plugins/video_player_avfoundation/darwin"
|
||||
video_thumbnail:
|
||||
:path: ".symlinks/plugins/video_thumbnail/ios"
|
||||
webview_flutter_wkwebview:
|
||||
:path: ".symlinks/plugins/webview_flutter_wkwebview/ios"
|
||||
|
||||
@ -473,6 +497,7 @@ SPEC CHECKSUMS:
|
||||
flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82
|
||||
fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c
|
||||
fluwx: daa284756ce53442b3d0417ceeda66e981906811
|
||||
gallery_saver: 9fc173c9f4fcc48af53b2a9ebea1b643255be542
|
||||
google_maps_flutter_ios: f135b968a67c05679e0a53538e900b5c174b0d99
|
||||
GoogleAppMeasurement: 6e49ffac7d3f2c3ded9cc663f912a13b67bbd0de
|
||||
GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4
|
||||
@ -486,6 +511,7 @@ SPEC CHECKSUMS:
|
||||
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
|
||||
JVerification: 0774807f44dd788c78d50303a14e133735807856
|
||||
jverify: 337ea43ac1e16f9484f4195abe787d1b6241163c
|
||||
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
|
||||
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
||||
network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f
|
||||
open_filex: 6e26e659846ec990262224a12ef1c528bb4edbe4
|
||||
@ -504,6 +530,7 @@ SPEC CHECKSUMS:
|
||||
umeng_common_sdk: a8abd7f86dfd013dbbeeae587ee143760c6582f2
|
||||
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
||||
video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
|
||||
video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1
|
||||
webview_flutter_wkwebview: 2a23822e9039b7b1bc52e5add778e5d89ad488d1
|
||||
WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f
|
||||
|
||||
|
||||
21
ios/Runner/Assets.xcassets/check.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "check.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
ios/Runner/Assets.xcassets/check.imageset/check.png
vendored
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
21
ios/Runner/Assets.xcassets/icon_left_grey.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "icon_left_grey.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
ios/Runner/Assets.xcassets/icon_left_grey.imageset/icon_left_grey.png
vendored
Normal file
|
After Width: | Height: | Size: 214 B |
21
ios/Runner/Assets.xcassets/login_btn_normal.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "login_btn_normal.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
ios/Runner/Assets.xcassets/login_btn_normal.imageset/login_btn_normal.png
vendored
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
21
ios/Runner/Assets.xcassets/login_btn_press.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "login_btn_press.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
ios/Runner/Assets.xcassets/login_btn_press.imageset/login_btn_press.png
vendored
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
21
ios/Runner/Assets.xcassets/uncheck.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "uncheck.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
ios/Runner/Assets.xcassets/uncheck.imageset/uncheck.png
vendored
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
@ -2,6 +2,8 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف الأوردة المشطية للقفل. هل أنت متأكد أنك تريد إعادة الضبط ؟",
|
||||
"在线": "الإنترنت",
|
||||
"离线": "غير متصل",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف بصمات القفل. هل أنت متأكد أنك تريد إعادة ضبطه ؟",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف جهاز التحكم عن بعد للقفل. هل تريد إعادة ضبطه ؟",
|
||||
"版本说明": "تعليمات الإصدار",
|
||||
"一键登录": "تسجيل الدخول بنقرة واحدة"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "بعد تشغيل البوابة ، اضغط مع الاستمرار على زر إعادة الضبط لمدة 5 ثوانٍ. انقر فوق التالي عندما يومض ضوء المؤشر الأزرق",
|
||||
"网关添加成功": "تم إضافة البوابة بنجاح",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "بعد تفعيل الوظيفة، ستكون قادرًا على الفتح عن بُعد من خلال البوابة.",
|
||||
"录屏已保存到相册": "تم حفظ ملف تسجيل الشاشة للألبوم",
|
||||
"通话未接通,已挂断": "الإتصال غير متصل، أغلق",
|
||||
"通话异常中断": "انقطاع الاتصال غير الطبيعي",
|
||||
"通话连接失败": "فشل اتصال المكالمة",
|
||||
"已挂断": "أقفل الخط",
|
||||
"正在说话...": "أتحدث الآن …",
|
||||
"设备不在线": "الجهاز ليس متصلا",
|
||||
"设备未配网": "الجهاز غير متصل بالشبكة",
|
||||
"已静音": "الصوت كان مغلقاً",
|
||||
"该锁的远程开锁功能未启用": "وظيفة الفتح عن بعد لهذا القفل غير ممكنة",
|
||||
"下载完成,请到相册查看": "اكتملت عملية التحميل، الرجاء الذهاب إلى الألبوم لمشاهدته",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "عند ضبط عين على وضع توفير الطاقة لا يمكن إجراء المراقبة يرجى الانتقال إلى الأوضاع الأخرى في إعدادات",
|
||||
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "لا يمكن فتح القفل عن بعد عند ضبط عين على وضع توفير الطاقة يرجى الانتقال إلى وضع آخر في إعدادات عين القطة",
|
||||
"呼叫目标": "الاتصال الهدف",
|
||||
"管理员APP": "برنامج التطبيقات الخاص بالمسؤول",
|
||||
"可视门铃码": "رمز جرس الباب البصري",
|
||||
"电子反锁": "جهاز إلكتروني لمنع القفل",
|
||||
"双重认证": "المصادقة من عاملين",
|
||||
"双锁联动": "وصلة القفل المزدوج",
|
||||
"1.用智能锁APP添加锁和网关": "1. أضف أقفال وبوابات باستخدام تطبيق القفل الذكي",
|
||||
"2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. تمكين وظيفة الفتح عن بعد للقفل في APP (يتم إيقاف هذه الوظيفة بشكل افتراضي). إذا كان هذا الخيار غير متاح، لن يدعم القفل جوجل هوم",
|
||||
"3.安装Google Home APP,点击左上角的加号按钮": "3. قم بتثبيت تطبيق Google Home وانقر فوق الزر زائد في الزاوية العلوية اليسرى",
|
||||
"暂无最新记录": "لا توجد حاليا أحدث السجلات المتاحة",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "الرجاء تحويل هاتفك إلى \"واي فاي 2.4\" للاتصال اليدوي"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "След нулиране, метакарпалните вени на ключалката ще бъдат изтрити. Сигурен ли сте, че искате да се възстанови?",
|
||||
"在线": "Онлайн",
|
||||
"离线": "Офлайн",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "След нулиране, пръстовите отпечатъци на заключването ще бъдат изтрити. Сигурен ли сте, че искате да го нулирате?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "След нулиране, дистанционното управление на ключалката ще бъде изтрито. Искате ли да го нулирате?",
|
||||
"版本说明": "Обяснение на версията",
|
||||
"一键登录": "Вход с едно кликване"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "След като шлюзът е включен, натиснете и задръжте бутона reset за 5 секунди. Щракнете върху следващия, когато синята индикаторна светлина мига",
|
||||
"网关添加成功": "Gateway added successfully",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "След като функцията е активирана, ще можете да отключите дистанционно през шлюза。",
|
||||
"录屏已保存到相册": "Файлът за запис на екрана, записан в албум",
|
||||
"通话未接通,已挂断": "Обаждането не е свързано, затворено е",
|
||||
"通话异常中断": "Необичайно прекъсване на разговора",
|
||||
"通话连接失败": "Неуспешна връзка за повикване",
|
||||
"已挂断": "Затваряне",
|
||||
"正在说话...": "Говоря сега...",
|
||||
"设备不在线": "Устройството не е онлайн",
|
||||
"设备未配网": "Устройството не е свързано към мрежата",
|
||||
"已静音": "Звукът е изключен",
|
||||
"该锁的远程开锁功能未启用": "Функцията за дистанционно отключване на тази ключалка не е активирана",
|
||||
"下载完成,请到相册查看": "Изтеглянето е завършено, моля, отидете на албума, за да го видите",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Когато 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 и щракнете върху бутона плюс в горния ляв ъгъл",
|
||||
"暂无最新记录": "В момента няма най-новите налични записи",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Моля, превключете телефона си на 2.4G WiFi за ръчно свързване"
|
||||
}
|
||||
@ -151,7 +151,7 @@
|
||||
"升级": "আন্ডারেট",
|
||||
"空闲": "ছোয়ান্ট",
|
||||
"已入住": "নিয়ন্ত্র",
|
||||
"多语言": "Langu▁রেজ",
|
||||
"多语言": "বহুভাষিক",
|
||||
"添加锁": "লক",
|
||||
"锁地址": "অ্যান্ডলক",
|
||||
"选择锁类型": "নির্মাণselectlocktypeype",
|
||||
@ -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密码": "দ্বিতীয় ওয়ার্ড",
|
||||
"网关名称": "সমুদ্রনাম",
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "ব্যান্ডোটারআইসেট, হাসিপাল রিরিইনস্ফথেলকবইল্ডজেডড।?",
|
||||
"在线": "কনলাইন",
|
||||
"离线": "দেউন্টলাইনCity in Ontario Canada",
|
||||
@ -1087,13 +1091,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": "ইসিসিভার্ট",
|
||||
"支持的语言": "আদিবাস্য",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "ব্যান্ডোটারট্রাসেট, thelock'sferprinতা?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "ব্যান্ডোটারপ্রাসেট, নিয়ন্ত্রণের নিয়ন্ত্রণ। ডোডো ডাইভান্টটুরে?",
|
||||
"版本说明": "ভার্সনপরিচিতি",
|
||||
"一键登录": "এক-সিক্লিক্লোগিন"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "ব্যাস্টোকার্টারটিইসপোভেরোর্ডন, প্রেস এবং প্রেসিটিসেট গানটেটনফোর্র 5 সইভিক ds। বিকশিক",
|
||||
"网关添加成功": "রুপেডডড্রোজেন্টজেক্যালি",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "ফাংশন সক্রিয় করার পরে, আপনি গেটওয়ে。 এর মাধ্যমে দূরবর্তীভাবে আনলক করতে সক্ষম হবেন",
|
||||
"录屏已保存到相册": "স্ক্রিন রেকর্ডিং ফাইল অ্যালবামে সংরক্ষণ করা হয়েছে",
|
||||
"通话未接通,已挂断": "কল কানেক্ট হয়নি, হ্যাং আপ",
|
||||
"通话异常中断": "অস্বাভাবিক কল বাধা",
|
||||
"通话连接失败": "কল সংযোগ ব্যর্থ হয়েছে",
|
||||
"已挂断": "ঝুলিয়ে রাখা",
|
||||
"正在说话...": "এখন কথা হচ্ছে...",
|
||||
"设备不在线": "ডিভাইসটি অনলাইনে নেই",
|
||||
"设备未配网": "ডিভাইসটি নেটওয়ার্কের সাথে সংযুক্ত নয়",
|
||||
"已静音": "শব্দটি বন্ধ করা হয়েছে",
|
||||
"该锁的远程开锁功能未启用": "এই লকের রিমোট আনলকিং ফাংশন সক্ষম নেই",
|
||||
"下载完成,请到相册查看": "ডাউনলোড সম্পন্ন হয়েছে, দেখতে অনুগ্রহ করে অ্যালবামে যান",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "যখন ক্যাট আই পাওয়ার-সেভিং মোডে সেট করা থাকে, তখন পর্যবেক্ষণ করা যায় না। দয়া করে ক্যাট আই সেটিংসে অন্যান্য মোডে স্যুইচ করুন",
|
||||
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ক্যাট আই পাওয়ার-সাশ্রয় মোডে সেট করা থাকলে রিমোট আনলক করা সম্ভব নয়। দয়া করে ক্যাট আই সেটিংসে অন্য মোডে স্যুইচ করুন",
|
||||
"呼叫目标": "কল টার্গেট",
|
||||
"管理员APP": "প্রশাসক অ্যাপ",
|
||||
"可视门铃码": "ভিজ্যুয়াল ডোরবেল কোড",
|
||||
"电子反锁": "বৈদ্যুতিন বিরোধী লক",
|
||||
"双重认证": "টু-ফ্যাক্টর অথেনটিকেশন",
|
||||
"双锁联动": "ডাবল লক লিঙ্কেজ",
|
||||
"1.用智能锁APP添加锁和网关": "1. স্মার্ট লক অ্যাপ ব্যবহার করে লক ও গেটওয়ে যোগ করুন",
|
||||
"2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. অ্যাপে লকের রিমোট আনলকিং ফাংশন সক্ষম করুন (এই ফাংশনটি ডিফল্টরূপে বন্ধ রয়েছে)। যদি এই বিকল্পটি উপলভ্য না হয় তবে লকটি গুগল হোম সমর্থন করবে না",
|
||||
"3.安装Google Home APP,点击左上角的加号按钮": "গুগল হোম অ্যাপ্লিকেশনটি ইনস্টল করুন এবং উপরের বাম কোণে প্লাস বোতামটি ক্লিক করুন",
|
||||
"暂无最新记录": "বর্তমানে কোনও সাম্প্রতিকতম রেকর্ড সুলভ নেই",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "ম্যানুয়াল সংযোগের জন্য দয়া করে আপনার ফোনটি 2.4 জি ওয়াইফাইতে স্যুইচ করুন"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetování budou metakarpální žíly zámku odstraněny. Jste si jistý, že chcete resetovat?",
|
||||
"在线": "Online",
|
||||
"离线": "Offline",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po resetování budou otisky prstů zámku odstraněny. Opravdu ho chcete obnovit?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po resetu bude dálkové ovládání zámku odstraněno. Chcete ho obnovit?",
|
||||
"版本说明": "Verze",
|
||||
"一键登录": "Přihlášení s jedním kliknutím"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Po zapnutí brány stiskněte a podržte tlačítko reset po dobu 5 sekund. Klepněte na tlačítko další, když modré světlo ukazatele bliká",
|
||||
"网关添加成功": "Úspěšně přidaná brána",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Po aktivaci funkce budete moci vzdáleně odemknout prostřednictvím brány.",
|
||||
"录屏已保存到相册": "Soubor záznamu obrazovky uložený do alba",
|
||||
"通话未接通,已挂断": "Hovor není spojen, zavěsil",
|
||||
"通话异常中断": "Abnormální přerušení hovoru",
|
||||
"通话连接失败": "Připojení hovoru se nezdařilo",
|
||||
"已挂断": "Zavěsit",
|
||||
"正在说话...": "Teď mluvím...",
|
||||
"设备不在线": "Zařízení není online",
|
||||
"设备未配网": "Zařízení není připojeno k síti",
|
||||
"已静音": "Zvuk byl vypnut",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "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í"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "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",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Efter nulstilling vil låsens fingeraftryk blive slettet. Er du sikker på at du vil nulstille den?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Efter nulstilling, fjernbetjeningen af låsen vil blive slettet. Vil du nulstille den?",
|
||||
"版本说明": "Versionsbeskrivelse",
|
||||
"一键登录": "Login med et enkelt klik"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Når gateway er tændt, tryk på og hold nulstillingsknappen i 5 sekunder. Klik på Næste, når den blå indikator lys blinker",
|
||||
"网关添加成功": "Gateway tilføjet med succet",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Når funktionen er aktiveret, vil du være i stand til at fjernlåse via gatewayen.",
|
||||
"录屏已保存到相册": "Skærmoptagelsesfil gemt i album",
|
||||
"通话未接通,已挂断": "Opkaldet blev ikke tilsluttet, lagt på",
|
||||
"通话异常中断": "Unormal opkaldsafbrydelse",
|
||||
"通话连接失败": "Opkaldsforbindelse mislykkedes",
|
||||
"已挂断": "Lægger på",
|
||||
"正在说话...": "Taler nu...",
|
||||
"设备不在线": "Enheden er ikke online",
|
||||
"设备未配网": "Enheden er ikke tilsluttet netværket",
|
||||
"已静音": "Lyden er blevet slukket",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Der er i øjeblikket ingen nyeste optegnelser tilgængelige",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Skift venligst din telefon til 2.4G WiFi for manuel forbindelse"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "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",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen werden die Finger abdrücke des Schlosses gelöscht. Sind Sie sicher, dass Sie es zurücksetzen wollen?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen wird die Fernbedienung des Schlosses gelöscht. Willst du es zurücksetzen?",
|
||||
"版本说明": "Versionsbeschreibung",
|
||||
"一键登录": "Ein-Klick-Login"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Nachdem das Gateway eingesc haltet ist, drücken und halten Sie die Reset-Taste für 5 Sekunden. Klicken Sie auf Weiter, wenn die blaue Anzeige leuchte blinkt",
|
||||
"网关添加成功": "Gateway erfolgreich hinzugefügt",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Ist diese funktion aktiviert, können sie sie manuell über das gateway entsperren",
|
||||
"录屏已保存到相册": "Aufzeichnungen werden in fotoalbum gespeichert",
|
||||
"通话未接通,已挂断": "Nicht durchwahl und aufgelegt",
|
||||
"通话异常中断": "Keine ungewöhnlichen anrufe.",
|
||||
"通话连接失败": "Verbindung abgebrochen nicht.",
|
||||
"已挂断": "hängen",
|
||||
"正在说话...": "Und jetzt? - jetzt.",
|
||||
"设备不在线": "Gerät nicht online.",
|
||||
"设备未配网": "Die ausrüstung ist nicht mit dem netzwerk verbunden",
|
||||
"已静音": "Der ton ist abgeschaltet",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Wir haben keine neuen daten",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Wenn manuelle verbindung hergestellt wird, schalten sie das handy auf 2,4 G WiFi"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, οι μετακάρπιες φλέβες της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να επαναφέρετε;",
|
||||
"在线": "Σε απευθείας σύνδεση",
|
||||
"离线": "Εκτός σύνδεσης:",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, τα αποτυπώματα της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να το επαναφέρετε;",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, το τηλεχειριστήριο της κλειδαριάς θα διαγραφεί. Θέλεις να το επαναφέρεις;",
|
||||
"版本说明": "Περιγραφή έκδοσης",
|
||||
"一键登录": "Σύνδεση ενός κλικ"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Αφού ενεργοποιηθεί η πύλη, πιέστε και κρατήστε το κουμπί επαναφοράς για 5 δευτερόλεπτα. Κάντε κλικ Επόμενο όταν το μπλε φως δείκτη αναβοσβήνει",
|
||||
"网关添加成功": "Η πύλη προστέθηκε με επιτυχία",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Αφού ενεργοποιηθεί η λειτουργία, θα μπορείτε να ξεκλειδώσετε εξ αποστάσεως μέσω της πύλης。",
|
||||
"录屏已保存到相册": "Αρχείο εγγραφής οθόνης αποθηκευμένο στο άλμπουμ",
|
||||
"通话未接通,已挂断": "Η κλήση δεν συνδέθηκε, τερματίστηκε",
|
||||
"通话异常中断": "Μη φυσιολογική διακοπή κλήσεων",
|
||||
"通话连接失败": "Η σύνδεση κλήσης απέτυχε",
|
||||
"已挂断": "Κλείσιμο του τηλεφώνου",
|
||||
"正在说话...": "Μιλώντας τώρα...",
|
||||
"设备不在线": "Η συσκευή δεν είναι συνδεδεμένη στο Internet",
|
||||
"设备未配网": "Η συσκευή δεν είναι συνδεδεμένη στο δίκτυο",
|
||||
"已静音": "Ο ήχος έχει απενεργοποιηθεί",
|
||||
"该锁的远程开锁功能未启用": "Η λειτουργία απομακρυσμένου ξεκλειδώματος αυτής της κλειδαριάς δεν είναι ενεργοποιημένη",
|
||||
"下载完成,请到相册查看": "Η λήψη ολοκληρώθηκε, μεταβείτε στο άλμπουμ για προβολή",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Όταν το 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 και κάντε κλικ στο κουμπί συν στην επάνω αριστερή γωνία",
|
||||
"暂无最新记录": "Προς το παρόν δεν υπάρχουν διαθέσιμες τελευταίες εγγραφές",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Αλλάξτε το τηλέφωνό σας σε 2.4G WiFi για χειροκίνητη σύνδεση"
|
||||
}
|
||||
@ -61,7 +61,8 @@
|
||||
"请输入员工账号": "Enter Employee's Account",
|
||||
"批量授权锁": "Grant multiple locks",
|
||||
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "The authorized administrator will have majority permission to operate this lock.",
|
||||
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。":"This feature allows you to Unlock the Smart Lock Remotely via a Gateway.This Feature can ONLY be Turned ON or OFF via Bluetooth.",
|
||||
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "This feature allows you to Unlock the Smart Lock Remotely via a Gateway.This Feature can ONLY be Turned ON or OFF via Bluetooth.",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "After the function is enabled, you will be able to remotely unlock through the gateway。",
|
||||
"排列方式": "List Type",
|
||||
"早到榜": "Early List",
|
||||
"迟到榜": "Late List",
|
||||
@ -731,18 +732,18 @@
|
||||
"请选择有效日": "Please select the effective day",
|
||||
"公司名字长度不能小于 6 ": "The length of the company name cannot be less than 6",
|
||||
"已是最新版本": "No updates",
|
||||
"一":"One",
|
||||
"二":"Two",
|
||||
"三":"Three",
|
||||
"四":"Four",
|
||||
"五":"Five",
|
||||
"六":"Six",
|
||||
"日":"Sun",
|
||||
"新建短信模版":"Creat SMS template",
|
||||
"新建邮件模版":"Creat email template",
|
||||
"自定义短信模版":"SMS template",
|
||||
"自定义邮件模版":"Email template",
|
||||
"名称":"Name",
|
||||
"一": "One",
|
||||
"二": "Two",
|
||||
"三": "Three",
|
||||
"四": "Four",
|
||||
"五": "Five",
|
||||
"六": "Six",
|
||||
"日": "Sun",
|
||||
"新建短信模版": "Creat SMS template",
|
||||
"新建邮件模版": "Creat email template",
|
||||
"自定义短信模版": "SMS template",
|
||||
"自定义邮件模版": "Email template",
|
||||
"名称": "Name",
|
||||
"星星锁": "Star lock",
|
||||
"无考勤记录": "No Records",
|
||||
"大家干劲十足": "Everyone comes in time",
|
||||
@ -779,20 +780,20 @@
|
||||
"该已锁被删除": "The locked is deleted",
|
||||
"授权管理员只能查看和管理自己下发的钥匙、密码等权限": "The authorized admin can only manage passcodes,ekeys and etccreated by himself.",
|
||||
"添加授权管理员": "Create Admin",
|
||||
"导出记录":"Export records",
|
||||
"选择时间段":"Select time period",
|
||||
"导出":"Export",
|
||||
"批量导出":"Batch export",
|
||||
"读取记录":"Refresh Records",
|
||||
"设备":"Device",
|
||||
"消息":"Messages",
|
||||
"智能分析":"Intelligent analytics",
|
||||
"精准识别设备事件,过滤无效信息":"Accurately identify device events and filter out invalid information",
|
||||
"系统设置":"System settings",
|
||||
"系统的全局配置在此项内进行设置":"The global configuration of the system is set in this item",
|
||||
"导出操作记录":"Export records",
|
||||
"立即查看":"View",
|
||||
"导出成功":"Exported successfully",
|
||||
"导出记录": "Export records",
|
||||
"选择时间段": "Select time period",
|
||||
"导出": "Export",
|
||||
"批量导出": "Batch export",
|
||||
"读取记录": "Refresh Records",
|
||||
"设备": "Device",
|
||||
"消息": "Messages",
|
||||
"智能分析": "Intelligent analytics",
|
||||
"精准识别设备事件,过滤无效信息": "Accurately identify device events and filter out invalid information",
|
||||
"系统设置": "System settings",
|
||||
"系统的全局配置在此项内进行设置": "The global configuration of the system is set in this item",
|
||||
"导出操作记录": "Export records",
|
||||
"立即查看": "View",
|
||||
"导出成功": "Exported successfully",
|
||||
"发送钥匙": "Send ekey",
|
||||
"进度": "Rate",
|
||||
"失败": "Failed",
|
||||
@ -925,7 +926,7 @@
|
||||
"或发生异常事件时": "or an abnormal event occurs",
|
||||
"逗留达到10秒": "Stay for 10 seconds",
|
||||
"约1.5米": "About 1.5 meters",
|
||||
"随时":"Anytime",
|
||||
"随时": "Anytime",
|
||||
"立即录像": "Record immediately",
|
||||
"录像时机": "Video timing",
|
||||
"有人出现时录像": "Record when someone appears",
|
||||
@ -1009,6 +1010,7 @@
|
||||
"请在锁设置中开启远程开锁": "Please enable remote unlocking in the lock settings",
|
||||
"接听": "Answer",
|
||||
"截图已保存到相册": "Screenshot saved to album",
|
||||
"录屏已保存到相册": "Screen recording file saved to album",
|
||||
"添加遥控": "Add remote control",
|
||||
"已连接到锁,请按遥控": "Connected to the lock, please press the remote control",
|
||||
"遥控号": "Remote control number",
|
||||
@ -1078,6 +1080,10 @@
|
||||
"印度尼西亚语": "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",
|
||||
@ -1092,7 +1098,7 @@
|
||||
"支持的国家": "Supported countries",
|
||||
"支持的国家值": "USA, Canada, UK, Australia, India, Germany, France, Italy, Spain, Japan",
|
||||
"操作流程": "Operation process",
|
||||
"操作流程值":"1 Add a lock and gateway with the Smart lock APP \n\n2 Enable the remote unlocking function of the lock in the APP (this function is turned off by default). If you do not have this option, the lock does not support Alexa \n\n3 Add skills to Alexa and authorize them with the Smart lock APP's account and password. After the authorization is successful, you can discover devices under the account \n\n4 Locate the lock in the Alexa app, turn on the voice unlock function, and set the language password \n\n5 The lock can be operated through Alexa",
|
||||
"操作流程值": "1 Add a lock and gateway with the Smart lock APP \n\n2 Enable the remote unlocking function of the lock in the APP (this function is turned off by default). If you do not have this option, the lock does not support Alexa \n\n3 Add skills to Alexa and authorize them with the Smart lock APP's account and password. After the authorization is successful, you can discover devices under the account \n\n4 Locate the lock in the Alexa app, turn on the voice unlock function, and set the language password \n\n5 The lock can be operated through Alexa",
|
||||
"Google Home": "Google Home",
|
||||
"Action name": "Action name",
|
||||
"ScienerSmart": "ScienerSmart",
|
||||
@ -1119,8 +1125,37 @@
|
||||
"分简称": "M",
|
||||
"跟随系统": "Follow system",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "After reset, the lock's fingerprints will be deleted. Are you sure you want to reset it?",
|
||||
"通话未接通,已挂断": "Call not connected, hung up",
|
||||
"通话异常中断": "Abnormal call interruption",
|
||||
"通话连接失败": "Call connection failed",
|
||||
"已挂断": "Hanging up",
|
||||
"正在说话...": "Talking now...",
|
||||
"设备不在线": "The device is not online",
|
||||
"设备未配网": "The device is not connected to the network",
|
||||
"已静音": "The sound has been turned off",
|
||||
"该锁的远程开锁功能未启用": "The remote unlocking function of this lock is not enabled",
|
||||
"下载完成,请到相册查看": "Download completed, please go to the album to view",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "When Cat Eye is set to power-saving mode, monitoring cannot be performed. Please switch to other modes in Cat Eye settings",
|
||||
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Remote unlocking is not possible when Cat Eye is set to power-saving mode. Please switch to another mode in Cat Eye settings",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "After reset, the remote control of the lock will be deleted. Do you want to reset it?",
|
||||
"版本说明": "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",
|
||||
"一键登录": "One-click login"
|
||||
"暂无最新记录": "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",
|
||||
"国家地区的选择将影响数据安全,你当前选择的是": "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"
|
||||
}
|
||||
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "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",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Después de restablecer, se eliminarán las huellas dactilares del bloqueo. ¿Está seguro de que desea restablecerlo?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Después del reinicio, se eliminará el control remoto de la cerradura. ¿Quieres resetearlo?",
|
||||
"版本说明": "Instrucciones de versión",
|
||||
"一键登录": "Inicio de sesión con un solo clic"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Después de encender la puerta de enlace, mantenga presionado el botón de reinicio durante 5 segundos. Haga clic en Siguiente cuando la luz indicadora azul parpadee",
|
||||
"网关添加成功": "Gateway añadido con éxito",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Después de que la función está habilitada, usted será capaz de desbloquear remotamente a través de la puerta de enlace.",
|
||||
"录屏已保存到相册": "Archivo de grabación de pantalla guardado al álbum",
|
||||
"通话未接通,已挂断": "Llamada no conectada, colgado",
|
||||
"通话异常中断": "Interrupción anormal de la llamada",
|
||||
"通话连接失败": "Fallo en la conexión de la llamada",
|
||||
"已挂断": "Colgando arriba",
|
||||
"正在说话...": "Hablando ahora...",
|
||||
"设备不在线": "El dispositivo no está conectado",
|
||||
"设备未配网": "El dispositivo no está conectado a la red",
|
||||
"已静音": "El sonido ha sido apagado",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "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"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku metakarpaalveenid. Kas tõesti soovid lähtestada?",
|
||||
"在线": "Võrgus",
|
||||
"离线": "Mitte ühendust",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku sõrmejäljed. Kas tõesti soovid see lähtestada?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku kaugjuhtimine. Kas sa tahad seda lähtestada?",
|
||||
"版本说明": "Versiooniteave",
|
||||
"一键登录": "Üheklõpsu sisselogimine"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Kui värav on sisse lülitatud, vajutage nuppu ja hoidke nuppu 5 sekundit. Klõpsa Järgmine, kui sinine indikaator valgus vilgub",
|
||||
"网关添加成功": "Gateway lisati edukalt",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Pärast funktsiooni lubamist saate lüüsi kaudu kaugavada.",
|
||||
"录屏已保存到相册": "Albumisse salvestatud ekraanisalvestusfail",
|
||||
"通话未接通,已挂断": "Kõne ei ole ühendatud, katkestatakse",
|
||||
"通话异常中断": "Ebatavaline kõnekatkestus",
|
||||
"通话连接失败": "Kõne ühendamine ebaõnnestus",
|
||||
"已挂断": "Riputamine",
|
||||
"正在说话...": "Räägin nüüd...",
|
||||
"设备不在线": "Seade pole võrgus",
|
||||
"设备未配网": "Seade pole võrku ühendatud",
|
||||
"已静音": "Heli on välja lülitatud",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Praegu pole uusimaid andmeid saadaval",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Käsitsi ühendamiseks lülitage telefon 2.4G WiFi-le"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Kun lukko on nollattu, metakarppinen suoneet poistetaan. Haluatko varmasti palauttaa?",
|
||||
"在线": "Verkossa",
|
||||
"离线": "Offline-verkosto",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Lukon sormenjäljet poistetaan. Haluatko varmasti nollataa sen?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nollauksen jälkeen lukon kaukosäädin poistetaan. Haluatko palauttaa sen?",
|
||||
"版本说明": "Versio",
|
||||
"一键登录": "Yhden napsautuksen kirjautuminen"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Kun portti on käytössä, paina ja pidä nollauspainiketta 5 sekunnin ajan. Napsauta Seuraava kun sininen ilmaisin valo vilkkuu",
|
||||
"网关添加成功": "Gateway lisättiin onnistuneesti",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Kun toiminto on otettu käyttöön, voit avata lukituksen etänä yhdyskäytävän kautta.",
|
||||
"录屏已保存到相册": "Näytön tallennustiedosto tallennettu albumiin",
|
||||
"通话未接通,已挂断": "Puhelua ei ole yhdistetty, katkaistu puhelu",
|
||||
"通话异常中断": "Epänormaali puhelun keskeytys",
|
||||
"通话连接失败": "Puheluyhteys epäonnistui",
|
||||
"已挂断": "Puhelun katkaiseminen",
|
||||
"正在说话...": "Puhutaan nyt...",
|
||||
"设备不在线": "Laite ei ole online-tilassa",
|
||||
"设备未配网": "Laitetta ei ole yhdistetty verkkoon",
|
||||
"已静音": "Ääni on kytketty pois päältä",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Viimeisimpiä tietoja ei ole tällä hetkellä saatavilla",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Vaihda puhelimesi 2.4G WiFi-verkkoon manuaalista yhteyttä varten"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "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",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Après réinitialisation, les empreintes digitales de la serrure seront supprimées. Êtes-vous sûr de vouloir le réinitialiser?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Après réinitialisation, la télécommande du verrou sera supprimée. Voulez-vous le réinitialiser?",
|
||||
"版本说明": "Explication de la version",
|
||||
"一键登录": "Connexion en un clic"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Après la mise sous tension de la passerelle, appuyez sur le bouton de réinitialisation et maintenez-le enfoncé pendant 5 secondes. Cliquez sur Suivant lorsque le voyant bleu clignote",
|
||||
"网关添加成功": "Gateway ajouté avec succès",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Une fois la fonction activée, vous pourrez déverrouiller à distance via la passerelle.",
|
||||
"录屏已保存到相册": "Fichier d’enregistrement d’écran enregistré dans l’album",
|
||||
"通话未接通,已挂断": "Appel non connecté, raccroché",
|
||||
"通话异常中断": "Interruption anormale d’un appel",
|
||||
"通话连接失败": "La connexion d’appel a échoué",
|
||||
"已挂断": "Raccrocher en haut",
|
||||
"正在说话...": "On parle maintenant...",
|
||||
"设备不在线": "L’appareil n’est pas en ligne",
|
||||
"设备未配网": "L’appareil n’est pas connecté au réseau",
|
||||
"已静音": "Le son a été éteint",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "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"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "לאחר איפוס, הורידים של המנעול יימחקו. אתה בטוח שברצונך לאפס?",
|
||||
"在线": "באינטרנט",
|
||||
"离线": "מנותק",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "לאחר איפוס, טביעות האצבעות של המנעול יימחקו. אתה בטוח שברצונך לאפס את זה?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "לאחר איפוס, השליטה מרחוק של המנעול יימחק. אתה רוצה לאפס את זה?",
|
||||
"版本说明": "המידע על גרסה",
|
||||
"一键登录": "התחברות בלחיצה אחת"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "לאחר שהשער מופעל, לחץ והחזק את כפתור האיפוס למשך 5 שניות. לחץ על הבא כאשר האור מחוון כחול מהבהב",
|
||||
"网关添加成功": "שער הוסיף בהצלחה",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "לאחר הפעלת הפונקציה, תוכל לבטל מרחוק את הנעילה דרך השער。",
|
||||
"录屏已保存到相册": "קובץ הקלטת מסך שנשמר באלבום",
|
||||
"通话未接通,已挂断": "השיחה לא מחוברת, ניתקה",
|
||||
"通话异常中断": "הפרעה חריגה לשיחה",
|
||||
"通话连接失败": "חיבור השיחה נכשל",
|
||||
"已挂断": "ניתוקים",
|
||||
"正在说话...": "מדברים עכשיו...",
|
||||
"设备不在线": "המכשיר אינו מקוון",
|
||||
"设备未配网": "ההתקן אינו מחובר לרשת",
|
||||
"已静音": "הצליל כבה",
|
||||
"该锁的远程开锁功能未启用": "פונקציית ביטול הנעילה מרחוק של מנעול זה אינה מופעלת",
|
||||
"下载完成,请到相册查看": "ההורדה הושלמה, אנא עבור לאלבום לצפייה",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "כאשר 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 ולחץ על כפתור הפלוס בפינה השמאלית העליונה",
|
||||
"暂无最新记录": "אין כרגע רשומות עדכניות זמינות",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "אנא העבר את הטלפון שלך ל- WiFi 2.4G לחיבור ידני"
|
||||
}
|
||||
1155
lan/lan_hi.json
Normal file
@ -1,10 +1,10 @@
|
||||
{
|
||||
"星锁": "星空鎖",
|
||||
"锁通通": "鎖定直通",
|
||||
"点击开锁,长按闭锁": "掂解鎖,按住鎖定",
|
||||
"星锁": "星鎖",
|
||||
"锁通通": "鎖通通",
|
||||
"点击开锁,长按闭锁": "點擊開鎖,長按閉鎖",
|
||||
"考勤": "出席",
|
||||
"考勤设置": "考勤設置",
|
||||
"电子钥匙": "eKey",
|
||||
"电子钥匙": "電子鑰匙",
|
||||
"添加卡": "添加卡",
|
||||
"卡号": "卡號",
|
||||
"添加指纹": "添加指紋",
|
||||
@ -152,7 +152,7 @@
|
||||
"升级": "更新",
|
||||
"空闲": "空置",
|
||||
"已入住": "佔領",
|
||||
"多语言": "語言",
|
||||
"多语言": "多語言",
|
||||
"添加锁": "添加鎖",
|
||||
"锁地址": "鎖定地址",
|
||||
"选择锁类型": "選擇鎖類型",
|
||||
@ -173,9 +173,9 @@
|
||||
"接收人信息": "收件人",
|
||||
"转移网关": "傳輸網關",
|
||||
"锁屏": "屏幕鎖定",
|
||||
"已关闭": "關閉",
|
||||
"已开启": "上",
|
||||
"开启": "開",
|
||||
"已关闭": "已關閉",
|
||||
"已开启": "已開啟",
|
||||
"开启": "開啟",
|
||||
"确定要开启重置键?": "繼續啟用Reset掣?",
|
||||
"确定要关闭重置键?": "繼續禁用Reset掣?",
|
||||
"隐藏无效开锁权限": "隱藏無效訪問權限",
|
||||
@ -185,7 +185,7 @@
|
||||
"退出": "註銷",
|
||||
"删除账号": "刪除帳戶",
|
||||
"个人信息": "賬戶信息",
|
||||
"头像": "化身",
|
||||
"头像": "頭像",
|
||||
"昵称": "暱稱",
|
||||
"请输入昵称": "請輸入您的暱稱",
|
||||
"修改昵称": "重命名",
|
||||
@ -373,7 +373,7 @@
|
||||
"未打卡": "暫無記錄",
|
||||
"钥匙将在": "此ekey將在",
|
||||
"天后失效": "天",
|
||||
"电量更新时间:": "電池更新時間:",
|
||||
"电量更新时间:": "電量更新時間:",
|
||||
"新增配件": "加",
|
||||
"钥匙不可用": "密鑰不可用",
|
||||
"正在开锁中...": "解鎖。。。",
|
||||
@ -505,7 +505,7 @@
|
||||
"您的钥匙已过期": "您的密鑰已過期",
|
||||
"常开模式开启": "鎖處於Passage Mode",
|
||||
"超级管理员": "超級管理員",
|
||||
"授权管理员": "設為admin",
|
||||
"授权管理员": "授權管理員",
|
||||
"普通用户": "普通用戶",
|
||||
"余": "平衡",
|
||||
"天": "日",
|
||||
@ -603,7 +603,7 @@
|
||||
"开门方式": "開門方法",
|
||||
"请选择": "請選擇",
|
||||
"家人": "家人",
|
||||
"保存": "救",
|
||||
"保存": "保存",
|
||||
"APP推送": "APP推送",
|
||||
"管理员": "管理",
|
||||
"未启用": "未啟用",
|
||||
@ -718,7 +718,7 @@
|
||||
"钥匙无效": "密鑰無效",
|
||||
"操作失败,请确认锁是否在附近,或重启手机蓝牙后再试。": "無法連接到鎖。請重新啟動手機嘅Blutooth並重試。",
|
||||
"如果是全自动锁,请使屏幕变亮": "如果係全自動鎖,請讓屏幕更光",
|
||||
"正在尝试闭锁……": "嘗試鎖定。 請稍候。。。",
|
||||
"正在尝试闭锁……": "正在嘗試閉鎖……",
|
||||
"清空记录": "清除記錄",
|
||||
"是否要删除操作记录?": "繼續刪除記錄?",
|
||||
"被删除的记录不能恢复": "刪除後無法恢復記錄。",
|
||||
@ -815,7 +815,7 @@
|
||||
"配置网络": "配置網絡",
|
||||
"你好": "你好",
|
||||
"成功": "成功的",
|
||||
"类型选择": "鍵入select",
|
||||
"类型选择": "類型選擇",
|
||||
"请选择要使用哪种类型": "請選擇要使用的類型",
|
||||
"系统邮件(推荐)": "系統電子郵件(推薦)",
|
||||
"系统短信(推荐)": "系統短信(推薦)",
|
||||
@ -1042,42 +1042,47 @@
|
||||
"导出锁数据": "導出鎖定數據",
|
||||
"一键开锁": "一鍵解鎖",
|
||||
"已开通": "打開",
|
||||
"英文": "英文",
|
||||
"简体中文": "簡體中文",
|
||||
"英文": "English",
|
||||
"英文": "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",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 你確定要重置啊?",
|
||||
"在线": "在線",
|
||||
"离线": "離線",
|
||||
@ -1100,8 +1105,8 @@
|
||||
"英语": "英文",
|
||||
"Google Home操作流程的值": "1.使用智能鎖APP添加鎖和網關\n\n2.喺APP中開啟鎖嘅遠程解鎖功能(此功能默認關閉)。 如果冇此選項,鎖唔撐Google Home\n\n3.安裝Google Home APP,點擊左上角嘅“+”按鈕\n\n4.在“設置”頁面上,選擇“與Google合作”\n\n5.搜索“ScienerSmart”,使用智能鎖APP賬號和密碼進行授權",
|
||||
"密码需至少包含数字/字母/字符中的2种组合": "密碼必須至少包含以下2個:數字、字母同特殊字符",
|
||||
"已开锁": "解鎖",
|
||||
"已闭锁": "鎖",
|
||||
"已开锁": "已開鎖",
|
||||
"已闭锁": "已閉鎖",
|
||||
"两次密码不一致哦": "密碼不一緻",
|
||||
"中功率": "中等功率",
|
||||
"常规使用": "經常使用",
|
||||
@ -1121,5 +1126,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置之後,鎖嘅指紋將被刪除。 你確定要重置它啊?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置之後,鎖嘅遙控器將被刪除。 是否要重置它?",
|
||||
"版本说明": "版本說明",
|
||||
"一键登录": "一键登录"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "網關上電之後,長按重置掣5秒鐘。 單擊藍色指示燈閃爍時嘅下一步",
|
||||
"网关添加成功": "已成功添加網關",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "啟用該功能之後,你將能夠透過網關遠程解鎖。",
|
||||
"录屏已保存到相册": "保存到相冊嘅屏幕錄製文件",
|
||||
"通话未接通,已挂断": "呼叫未接通,掛斷",
|
||||
"通话异常中断": "異常通話中斷",
|
||||
"通话连接失败": "呼叫連接失敗",
|
||||
"已挂断": "收線",
|
||||
"正在说话...": "現在正在談論...",
|
||||
"设备不在线": "設備未聯機",
|
||||
"设备未配网": "設備未連接到網絡",
|
||||
"已静音": "聲音已關閉",
|
||||
"该锁的远程开锁功能未启用": "此鎖嘅遠程解鎖功能未啟用",
|
||||
"下载完成,请到相册查看": "下載完成,請至相冊查看",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "当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應用,點擊左上角嘅加號掣",
|
||||
"暂无最新记录": "目前冇可用嘅最新記錄",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "請把手機切換到2.4G WiFi進行手動連接"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Nakon resetiranja, metakarpalne vene brave će biti izbrisane. Jeste li sigurni da želite resetiranje?",
|
||||
"在线": "Na internetu",
|
||||
"离线": "Odspojeno",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Nakon resetovanja, otisci brave će biti izbrisani. Jeste li sigurni da ga želite resetirati?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nakon resetovanja, daljinski upravljač brave će biti izbrisan. Hoæeš da ga resetuješ?",
|
||||
"版本说明": "Informacije o verziji",
|
||||
"一键登录": "Prijavljivanje jednog klika"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Nakon što se uključi prolaz, pritisnite i zadržite dugme za reset 5 sekundi. Kliknite slijedeći kada svjetlo plavog indikatora bljeska",
|
||||
"网关添加成功": "Gateway je uspješno dodano",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Nakon što je funkcija omogućena, moći ćete daljinski otključati putem pristupnika.",
|
||||
"录屏已保存到相册": "Datoteka snimanja zaslona spremljena u album",
|
||||
"通话未接通,已挂断": "Poziv nije povezan, prekinuo vezu",
|
||||
"通话异常中断": "Nenormalan prekid poziva",
|
||||
"通话连接失败": "Veza poziva nije uspjela",
|
||||
"已挂断": "Spuštanje slušalice",
|
||||
"正在说话...": "Razgovaram sada...",
|
||||
"设备不在线": "Uređaj nije na mreži",
|
||||
"设备未配网": "Uređaj nije spojen na mrežu",
|
||||
"已静音": "Zvuk je isključen",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Trenutno nema dostupnih najnovijih podataka",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Prebacite telefon na 2.4G WiFi za ručno povezivanje"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "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",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "A reset után a zár ujjlenyomatai törlődnek. Biztos vagy benne, hogy vissza szeretné állítani?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "A reset után a zár távirányítója törlődik. Szeretné visszaállítani?",
|
||||
"版本说明": "Versió leírás",
|
||||
"一键登录": "Egykattintásos bejelentkezés"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Az átjáró bekapcsolása után 5 másodpercig nyomja meg a reset gombot. Kattintson a következő gombra, amikor a kék jelző fény villog",
|
||||
"网关添加成功": "Átjáró sikeresen hozzáadott",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "A funkció engedélyezése után távolról feloldhatja a zárolást az átjárón keresztül.",
|
||||
"录屏已保存到相册": "Képernyőfelvételi fájl mentése az albumba",
|
||||
"通话未接通,已挂断": "A hívás nincs csatlakoztatva, letette a telefont",
|
||||
"通话异常中断": "Rendellenes hívásmegszakítás",
|
||||
"通话连接失败": "A híváskapcsolat sikertelen",
|
||||
"已挂断": "Leteszi a telefont",
|
||||
"正在说话...": "Most beszélgetünk...",
|
||||
"设备不在线": "A készülék nincs online",
|
||||
"设备未配网": "A készülék nincs csatlakoztatva a hálózathoz",
|
||||
"已静音": "A hang ki van kapcsolva",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "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"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Setelah mengulang, pembuluh darah metakarpal dari kunci akan dihapus. Yakin ingin mengatur ulang?",
|
||||
"在线": "Online",
|
||||
"离线": "Offline",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Setelah mengulang, sidik jari kunci akan dihapus. Yakin ingin meresetnya?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Setelah reset, remote control kunci akan dihapus. Ingin mengatur ulang?",
|
||||
"版本说明": "Catatan versi",
|
||||
"一键登录": "Masuk satu klik"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Setelah gateway dinyalakan, tekan dan tahan tombol Atur ulang selama 5 detik. Klik berikutnya ketika lampu indikator biru berkedip",
|
||||
"网关添加成功": "Gateway berhasil ditambahkan",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Setelah fungsi diaktifkan, anda akan dapat membuka dari jarak jauh melalui gateway.",
|
||||
"录屏已保存到相册": "Rekaman layar disimpan ke album",
|
||||
"通话未接通,已挂断": "Panggilan tidak terhubung, ditutup",
|
||||
"通话异常中断": "Interupsi panggilan Abnormal",
|
||||
"通话连接失败": "Koneksi panggilan gagal",
|
||||
"已挂断": "Tutup teleponnya",
|
||||
"正在说话...": "Berbicara sekarang …",
|
||||
"设备不在线": "Perangkat ini tidak online",
|
||||
"设备未配网": "Alat ini tidak terhubung ke jaringan",
|
||||
"已静音": "Suara telah dimatikan",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Saat ini tidak ada catatan terbaru yang tersedia",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Silahkan beralih ke 2.4G WiFi untuk koneksi manual"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Dopo il reset, le vene metacarpali della serratura verranno cancellate. Sei sicuro di voler reimpostare?",
|
||||
"在线": "Online",
|
||||
"离线": "Offline",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Dopo il reset, le impronte digitali del lucchetto verranno cancellate. Sei sicuro di volerlo resettare?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Dopo il reset, il telecomando del lucchetto verrà eliminato. Vuoi resettarlo?",
|
||||
"版本说明": "Versione",
|
||||
"一键登录": "Accesso con un clic"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Dopo che il gateway è acceso, premere e tenere premuto il pulsante di reset per 5 secondi. Fai clic su Avanti quando la spia blu lampeggia",
|
||||
"网关添加成功": "Gateway aggiunto correttamente",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Dopo che la funzione è abilitata, sarà possibile sbloccare a distanza attraverso il gateway.",
|
||||
"录屏已保存到相册": "File di registrazione dello schermo salvato nell’ album",
|
||||
"通话未接通,已挂断": "Chiamata non connessa, sospesa",
|
||||
"通话异常中断": "Interruzione anormale di chiamata",
|
||||
"通话连接失败": "Connessione chiamata fallita",
|
||||
"已挂断": "In sospeso",
|
||||
"正在说话...": "Parlando ora...",
|
||||
"设备不在线": "Il dispositivo non è in linea",
|
||||
"设备未配网": "Il dispositivo non è connesso alla rete",
|
||||
"已静音": "Il suono è stato spento",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Attualmente non sono disponibili dati più recenti",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Passa il telefono a 2,4g WiFi per la connessione manuale"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "リセット後、ロックの中手骨静脈が削除されます。リセットしてもよろしいですか。",
|
||||
"在线": "オンライン",
|
||||
"离线": "オフライン",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "リセット後、ロックの指紋は削除されます。リセットしてもよろしいですか。",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "リセット後、ロックのリモコンが削除されます。リセットしますか?",
|
||||
"版本说明": "バージョン説明",
|
||||
"一键登录": "ワンクリックログイン"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "ゲートウェイの電源がオンになった後、リセットボタンを5秒間押し続けます。青いインジケータライトが点滅したら、 [Next] をクリックします",
|
||||
"网关添加成功": "ゲートウェイの追加に成功",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "この機能を有効にすると、ゲートウェイからリモートでロックを解除できるようになります。",
|
||||
"录屏已保存到相册": "アルバムに保存された画面録画ファイル",
|
||||
"通话未接通,已挂断": "接続されていない電話を切った",
|
||||
"通话异常中断": "異常電話中断",
|
||||
"通话连接失败": "電話接続ができなかった。",
|
||||
"已挂断": "切る",
|
||||
"正在说话...": "今話して…",
|
||||
"设备不在线": "デバイスはオンラインではありません",
|
||||
"设备未配网": "デバイスがネットワークに接続されていません",
|
||||
"已静音": "音が消えています",
|
||||
"该锁的远程开锁功能未启用": "このロックのリモートロック解除機能は有効になっていません",
|
||||
"下载完成,请到相册查看": "ダウンロードが完了しましたので、アルバムでご覧ください",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "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アプリをインストールし、左上隅のプラスボタンをクリックします",
|
||||
"暂无最新记录": "最新の記録は残っていない",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "手動接続のため、携帯電話を2.4 g wifiに切り替えてください"
|
||||
}
|
||||
@ -62,6 +62,7 @@
|
||||
"批量授权锁": "批量授权锁",
|
||||
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人",
|
||||
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "功能开启后,你将可以通过网关远程开锁。",
|
||||
"排列方式": "排列方式",
|
||||
"早到榜": "早到榜",
|
||||
"迟到榜": "迟到榜",
|
||||
@ -1012,6 +1013,7 @@
|
||||
"请在锁设置中开启远程开锁": "请在锁设置中开启远程开锁",
|
||||
"接听": "接听",
|
||||
"截图已保存到相册": "截图已保存到相册",
|
||||
"录屏已保存到相册": "录屏已保存到相册",
|
||||
"添加遥控": "添加遥控",
|
||||
"已连接到锁,请按遥控": "已连接到锁,请按遥控",
|
||||
"遥控号": "遥控号",
|
||||
@ -1079,6 +1081,10 @@
|
||||
"印度尼西亚语": "印度尼西亚语",
|
||||
"芬兰语": "芬兰语",
|
||||
"丹麦语": "丹麦语",
|
||||
"印地语": "印地语",
|
||||
"乌尔都语": "乌尔都语",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?",
|
||||
"在线": "在线",
|
||||
"离线": "离线",
|
||||
@ -1120,7 +1126,41 @@
|
||||
"分简称": "分简称",
|
||||
"跟随系统": "跟随系统",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置后,该锁的指纹都将被删除哦,确认要重置吗?",
|
||||
"通话未接通,已挂断": "通话未接通,已挂断",
|
||||
"通话异常中断": "通话异常中断",
|
||||
"通话连接失败": "通话连接失败",
|
||||
"已挂断": "已挂断",
|
||||
"正在说话...": "正在说话...",
|
||||
"设备不在线": "设备不在线",
|
||||
"设备未配网": "设备未配网",
|
||||
"已静音": "已静音",
|
||||
"该锁的远程开锁功能未启用": "该锁的远程开锁功能未启用",
|
||||
"下载完成,请到相册查看": "下载完成,请到相册查看",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式",
|
||||
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置后,该锁的遥控都将被删除哦,确认要重置吗?",
|
||||
"版本说明": "版本说明",
|
||||
"一键登录": "一键登录"
|
||||
"呼叫目标": "呼叫目标",
|
||||
"管理员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的账号和密码进行授权",
|
||||
"暂无最新记录": "暂无最新记录",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接",
|
||||
"请扫描可视门铃码二维码": "请扫描可视门铃码二维码",
|
||||
"请确保网络是2.4GHz Wi-Fi": "请确保网络是2.4GHz Wi-Fi",
|
||||
"已选": "已选",
|
||||
"是否要远程开锁": "是否要远程开锁",
|
||||
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
|
||||
"请确认后再继续": "请确认后再继续",
|
||||
"需要相机权限": "需要相机权限",
|
||||
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行",
|
||||
"网关添加成功": "网关添加成功"
|
||||
}
|
||||
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Қайта ысырып тастағаннан соң бұғаттағы метакарпалар өшіріледі. Шынымен ысырып тастауды қалайсыз ба?",
|
||||
"在线": "Онлайн",
|
||||
"离线": "Желіде емес",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Қайта ысырып тастау Шынымен ысырып тастауды қалайсыз ба?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Қайта ысырып ысырып тасымалдауын өшіріледі. Оны ысырып тастауды қалайсыз ба?",
|
||||
"版本说明": "Версиятын көрсету",
|
||||
"一键登录": "Бір шертті кіру"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Шығыс жегілді соң, ысырып тасымалдау батырмасын басып 5 секунд басыңыз. Көк белгісін жарыялды, келесі басыңыз",
|
||||
"网关添加成功": "Шлюз сәтті қосылды",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Функция қосылғаннан кейін шлюз арқылы құлыптан қашықтан ашуға болады·",
|
||||
"录屏已保存到相册": "Альбомға сақталған экран жазу файлы",
|
||||
"通话未接通,已挂断": "Қосылмаған, ілінген қоңырау",
|
||||
"通话异常中断": "Қоңыраудың аномальды үзілуі",
|
||||
"通话连接失败": "Қоңырау қосылымы жаңылысы",
|
||||
"已挂断": "Ілініп тұру",
|
||||
"正在说话...": "Қазір сөйлесу...",
|
||||
"设备不在线": "Құрылғы онлайн емес",
|
||||
"设备未配网": "Құрылғы желіге қосылмаған",
|
||||
"已静音": "Дыбыс өшірілді",
|
||||
"该锁的远程开锁功能未启用": "Бұғаттаудың қашықтан құлыптан босату функциясы қосылмаған",
|
||||
"下载完成,请到相册查看": "Жүктеу аяқталды, көру үшін альбомға өтуіңізді сұраймыз",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "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 бағдарламасын орнатып, жоғарғы сол жақ бұрыштағы қосу түймешігін басыңыз",
|
||||
"暂无最新记录": "Қазіргі уақытта қол жетімді соңғы жазбалар жоқ",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Телефонды қолмен қосу үшін 2.4G WiFi бағдарламасына ауыстыруыңызды сұраймыз"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 중수골 정맥이 삭제됩니다. 당신은 당신이 재설정 하시겠습니까?",
|
||||
"在线": "온라인",
|
||||
"离线": "오프라인",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 지문이 삭제됩니다. 당신은 그것을 재설정 하시겠습니까?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 리모컨이 삭제됩니다. 당신은 그것을 재설정 하시겠습니까?",
|
||||
"版本说明": "버전 설명",
|
||||
"一键登录": "원 클릭 로그인"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "게이트웨이의 전원이 켜지면 재설정 버튼을 5 초 동안 누르고 있습니다. 파란색 표시등이 깜박일 때 다음을 클릭하십시오.",
|
||||
"网关添加成功": "게이트웨이가 성공적으로 추가되었습니다.",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "기능이 활성화된 후에는 게이트웨이를 통해 원격으로 잠금 해제할 수 있습니다.",
|
||||
"录屏已保存到相册": "화면 녹음 파일이 앨범에 저장되었습니다",
|
||||
"通话未接通,已挂断": "전화가 연결되지 않았습니다. 끊겼습니다",
|
||||
"通话异常中断": "비정상적인 통화 중단",
|
||||
"通话连接失败": "통화 연결 실패",
|
||||
"已挂断": "끊고 있",
|
||||
"正在说话...": "지금 이야기하고 …",
|
||||
"设备不在线": "장치가 온라인 상태가 아닙니다",
|
||||
"设备未配网": "장치가 네트워크에 연결되어 있지 않습니다",
|
||||
"已静音": "소리가 꺼졌다",
|
||||
"该锁的远程开锁功能未启用": "이 잠금의 원격 잠금 해제 기능을 사용할 수 없습니다",
|
||||
"下载完成,请到相册查看": "다운로드가 완료되었습니다. 보려면 앨범으로 이동하십시오",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "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. 구글 홈 앱을 설치하고 왼쪽 상단 모서리에 있는 더하기 버튼을 클릭합니다",
|
||||
"暂无最新记录": "현재 사용 가능한 최신 레코드가 없습니다",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "수동 연결을 위해 핸드폰을 2.4G WiFi로 바꿔주세요"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po reset užrakto metakarpinės venos bus ištrintos. Ar tikrai norite atstatyti?",
|
||||
"在线": "Online",
|
||||
"离线": "Neprisijungęs",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po reset užrakto pirštų atspaudai bus ištrinti. Ar tikrai norite jį atkurti?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po reset, nuotolinis valdymo pultas užraktas bus ištrintas. Ar norite jį atkurti?",
|
||||
"版本说明": "Versijos aprašymas",
|
||||
"一键登录": "Vieno paspaudimo prisijungimas"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Įjungus vartus, 5 sekundes paspauskite ir palaikykite mygtuką \"reset\". Spustelėkite toliau, kai mėlyna indikatoriaus šviesa mirksi",
|
||||
"网关添加成功": "Vartai sėkmingai pridėta",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Kai funkcija įjungta, galėsite nuotoliniu būdu atrakinti per šliuzą。",
|
||||
"录屏已保存到相册": "Ekrano įrašymo failas, įrašytas į albumą",
|
||||
"通话未接通,已挂断": "Skambutis neprijungtas, pakabintas",
|
||||
"通话异常中断": "Nenormalus skambučio nutraukimas",
|
||||
"通话连接失败": "Nepavyko prisijungti prie skambučio",
|
||||
"已挂断": "Pakabinimas",
|
||||
"正在说话...": "Kalbasi dabar...",
|
||||
"设备不在线": "Įrenginys nėra prisijungęs",
|
||||
"设备未配网": "Įrenginys neprijungtas prie tinklo",
|
||||
"已静音": "Garsas buvo išjungtas",
|
||||
"该锁的远程开锁功能未启用": "Š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ą",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Šiuo metu nėra naujausių įrašų",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Perjunkite telefoną į 2.4G WiFi, kad galėtumėte prisijungti rankiniu būdu"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, urat metacarpal kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?",
|
||||
"在线": "Dalam talian",
|
||||
"离线": "Luar talian",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, cap jari kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, kawalan jauh kunci akan dipadamkan. Adakah anda mahu menetapkan semula?",
|
||||
"版本说明": "Penerangan versi",
|
||||
"一键登录": "Log masuk satu klik"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Selepas pintu masuk dihidupkan, tekan dan tahan butang reset selama 5 saat. Klik seterusnya apabila lampu penunjuk biru berkelip",
|
||||
"网关添加成功": "Get laluan ditambah berjaya",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Selepas fungsi didayakan, anda akan dapat membuka kunci dari jauh melalui pintu masuk。",
|
||||
"录屏已保存到相册": "Rakaman skrin fail disimpan ke album",
|
||||
"通话未接通,已挂断": "Panggilan tidak disambungkan, ditutup",
|
||||
"通话异常中断": "Gangguan panggilan yang tidak normal",
|
||||
"通话连接失败": "Sambungan panggilan gagal",
|
||||
"已挂断": "Menutup telefon",
|
||||
"正在说话...": "Bercakap sekarang...",
|
||||
"设备不在线": "Peranti tidak dalam talian",
|
||||
"设备未配网": "Peranti tidak disambungkan ke rangkaian",
|
||||
"已静音": "Bunyi telah dimatikan",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Pada masa ini tiada rekod terkini tersedia",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Sila tukar telefon anda kepada WiFi 2.4G untuk sambungan manual"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Na reset worden de middenhandsbeenaders van het slot verwijderd. Weet je zeker dat je wilt resetten?",
|
||||
"在线": "Online",
|
||||
"离线": "Offline",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Na het resetten worden de vingerafdrukken van het slot verwijderd. Weet je zeker dat je het wilt resetten?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Na het resetten wordt de afstandsbediening van het slot verwijderd. Wilt u het resetten?",
|
||||
"版本说明": "Versieomschrijving",
|
||||
"跟随系统": "Systeem volgen",
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Nadat de gateway is ingeschakeld, houdt u de resetknop 5 seconden ingedrukt. Klik op Volgende wanneer het blauwe lampje knippert",
|
||||
"网关添加成功": "Gateway met succes toegevoegd",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Na het inschakelen van de functie kunt u op afstand ontgrendelen via de gateway.",
|
||||
"录屏已保存到相册": "Scherm opname bestanden worden opgeslagen in albums",
|
||||
"通话未接通,已挂断": "De telefoon is niet ingeschakeld en hangt",
|
||||
"通话异常中断": "Buitengewone oproeponderbreking",
|
||||
"通话连接失败": "Mislukte belverbinding",
|
||||
"已挂断": "ophangen",
|
||||
"正在说话...": "Zeg nu …",
|
||||
"设备不在线": "Het apparaat is niet online",
|
||||
"设备未配网": "Het apparaat is niet verbonden met het netwerk",
|
||||
"已静音": "Het geluid is uitgeschakeld",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Er zijn momenteel geen recente gegevens beschikbaar",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Stel uw telefoon in op 2. 4g WiFi bij handmatige verbinding"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po zresetowaniu żyły śródręcza zamka zostaną usunięte. Czy na pewno chcesz zresetować?",
|
||||
"在线": "Online",
|
||||
"离线": "Offline",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po zresetowaniu odciski palców zamka zostaną usunięte. Czy na pewno chcesz go zresetować?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po zresetowaniu zdalne sterowanie zamkiem zostanie usunięte. Czy chcesz go zresetować?",
|
||||
"版本说明": "Wersja",
|
||||
"一键登录": "Login jednym kliknięciem"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Po włączeniu bramy naciśnij i przytrzymaj przycisk resetowania przez 5 sekund. Kliknij przycisk Dalej, gdy miga niebieska lampka kontrolna",
|
||||
"网关添加成功": "Gateway dodany pomyślnie",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Po włączeniu tej funkcji będziesz mógł zdalnie odblokować za pośrednictwem bramy。",
|
||||
"录屏已保存到相册": "Plik nagrania ekranu zapisany w albumie",
|
||||
"通话未接通,已挂断": "Połączenie nie jest połączone, rozłączone",
|
||||
"通话异常中断": "Nietypowe przerywanie połączenia",
|
||||
"通话连接失败": "Połączenie nie powiodło się",
|
||||
"已挂断": "Rozłączanie się",
|
||||
"正在说话...": "Mówiąc teraz...",
|
||||
"设备不在线": "Urządzenie nie jest w trybie online",
|
||||
"设备未配网": "Urządzenie nie jest podłączone do sieci",
|
||||
"已静音": "Dźwięk został wyłączony",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "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"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "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",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Após a redefinição, as impressões digitais do bloqueio serão apagadas. Tens a certeza que queres redefini-lo?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Após a reinicialização, o controle remoto do bloqueio será excluído. Você quer redefini-lo?",
|
||||
"版本说明": "Descrição da versão",
|
||||
"一键登录": "Login com um clique"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Depois que o gateway estiver ligado, pressione e segure o botão de reset por 5 segundos. Clique Próximo quando a luz indicadora azul pisca",
|
||||
"网关添加成功": "Gateway adicionado com sucesso",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Depois que a função for habilitada, você poderá desbloquear remotamente através do gateway。",
|
||||
"录屏已保存到相册": "Arquivo de gravação de tela salvo no álbum",
|
||||
"通话未接通,已挂断": "Chamada não conectada, desligada",
|
||||
"通话异常中断": "Interrupção anormal de chamadas",
|
||||
"通话连接失败": "Falha na conexão da chamada",
|
||||
"已挂断": "Desligando",
|
||||
"正在说话...": "Falando agora...",
|
||||
"设备不在线": "O dispositivo não está online",
|
||||
"设备未配网": "O dispositivo não está conectado à rede",
|
||||
"已静音": "O som foi desligado",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "Atualmente não há registros mais recentes disponíveis",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Mude seu telefone para WiFi 2.4G para conexão manual"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "După resetare, venele metacarpale ale încuietorii vor fi şterse. Sigur doriți să resetați?",
|
||||
"在线": "Online",
|
||||
"离线": "Deconectat",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "După resetare, amprentele încuietorii vor fi şterse. Sigur doriți să-l resetați?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "După resetare, telecomanda de blocare va fi ştersă. Vrei să-l resetezi?",
|
||||
"版本说明": "Descrierea versiunii",
|
||||
"一键登录": "Autentificare cu un singur clicName"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "După pornirea poarta, apăsați și țineți butonul de resetare timp de 5 secunde. Click Next atunci când lumina indicator albastru lăturare",
|
||||
"网关添加成功": "Gateway adăugat cu succes",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "După ce funcția este activată, veți putea debloca de la distanță prin gateway。",
|
||||
"录屏已保存到相册": "Fișier de înregistrare ecran salvat în album",
|
||||
"通话未接通,已挂断": "Apel neconectat, închis",
|
||||
"通话异常中断": "Întrerupere anormală a apelului",
|
||||
"通话连接失败": "Conexiunea la apel a eșuat",
|
||||
"已挂断": "Închiderea",
|
||||
"正在说话...": "Vorbind acum...",
|
||||
"设备不在线": "Dispozitivul nu este online",
|
||||
"设备未配网": "Dispozitivul nu este conectat la rețea",
|
||||
"已静音": "Sunetul a fost oprit",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "Ț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",
|
||||
"暂无最新记录": "Î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ă"
|
||||
}
|
||||
@ -504,7 +504,7 @@
|
||||
"您的钥匙已过期": "Срок действия вашего ключа истек",
|
||||
"常开模式开启": "Замок находится в режиме прохода",
|
||||
"超级管理员": "Супер админ",
|
||||
"授权管理员": "Авторизованный администратор",
|
||||
"授权管理员": "Автор. администратор",
|
||||
"普通用户": "Обычный пользователь",
|
||||
"余": "Баланс",
|
||||
"天": "День",
|
||||
@ -630,12 +630,12 @@
|
||||
"关锁": "Закрыть замок",
|
||||
"功能": "Функция",
|
||||
"配件": "Детали",
|
||||
"云存": "Облачное хранилище",
|
||||
"云存": "Cloud",
|
||||
"本地": "Эта местность",
|
||||
"3天滚动储存": "3 дня прокатного хранения",
|
||||
"去升级": "Обновить сейчас",
|
||||
"下载列表": "Скачать список",
|
||||
"已下载": "Загружено",
|
||||
"已下载": "Downloaded",
|
||||
"全部视频": "Все видео",
|
||||
"已为本设备免费提供3大滚动视频储存服务": "Для этого устройства бесплатно предоставлены три услуги по хранению видео с прокруткой.",
|
||||
"视频播放": "Воспроизведение видео",
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "После сброса пястные вены замка будут удалены. Вы уверены, что хотите сбросить?",
|
||||
"在线": "Онлайн",
|
||||
"离线": "Оффлайн",
|
||||
@ -1121,5 +1125,35 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "После сброса отпечатки пальцев замка будут удалены. Вы уверены, что хотите его перезагрузить?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "После сброса пульт дистанционного управления замком будет удален. А вы хотите его сбросить?",
|
||||
"版本说明": "Объяснение версии",
|
||||
"一键登录": "Вход в один клик"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "После включения шлюза нажмите и удерживайте кнопку сброса в течение 5 секунд. Нажмите Далее, когда синий индикатор мигает",
|
||||
"网关添加成功": "Шлюз успешно добавлен",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "После включения функции вы сможете удаленно открывать шлюз.",
|
||||
"录屏已保存到相册": "Файл записи экрана сохранен в альбом",
|
||||
"通话未接通,已挂断": "Звонок не связан, вешаю трубку",
|
||||
"通话异常中断": "Ненормальное прерывание вызова",
|
||||
"通话连接失败": "Прервано подключение к телефонной линии",
|
||||
"已挂断": "- вешаю трубку.",
|
||||
"正在说话...": "Теперь я говорю...",
|
||||
"设备不在线": "Устройство не работает",
|
||||
"设备未配网": "Устройство не подключено к сети",
|
||||
"已静音": "Звук был выключен",
|
||||
"该锁的远程开锁功能未启用": "Функция дистанционного разблокирования этого замка не включена",
|
||||
"下载完成,请到相册查看": "Загрузка завершена, пожалуйста, перейдите на альбом, чтобы посмотреть",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Когда кошачий глаз установлен в режим энергосбережения, мониторинг не может быть выполнен. Переключитесь на другие режимы в настройках кошачьего глаза",
|
||||
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Удаленная разблокировка невозможна, если кошачий глаз установлен в режим энергосбережения. Пожалуйста, переключитесь в другой режим в настройках кошачьего глаза",
|
||||
"呼叫目标": "Звони в цель.",
|
||||
"管理员APP": "Приложение для администратора",
|
||||
"可视门铃码": "Визуальный код дверного звонка",
|
||||
"电子反锁": "Электронный анти-блокировка",
|
||||
"双重认证": "Двухфакторная аутентификация",
|
||||
"双锁联动": "2.1.3 двойная блокировка",
|
||||
"1.用智能锁APP添加锁和网关": "1. Добавить замки и шлюзы с помощью приложения smart lock",
|
||||
"2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Включите функцию удаленного разблокирования замка в приложении (эта функция выключается по умолчанию). Если эта опция не доступна, блокировка не будет поддерживать Google Home",
|
||||
"3.安装Google Home APP,点击左上角的加号按钮": "3. Установите приложение Google Home и нажмите кнопку plus в левом верхнем углу",
|
||||
"暂无最新记录": "В настоящее время последние данные отсутствуют",
|
||||
"请扫描可视门铃码二维码": "Сканируйте код вызова",
|
||||
"请确保网络是2.4GHz Wi-Fi": "Убедитесь, что сеть имеет 2,4 ГГц Wi - Fi",
|
||||
"已选": "Выбранные",
|
||||
"是否要远程开锁": "Нужно ли удалённо открывать замок",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Пожалуйста, переключите телефон на 2.4G WiFi для ручного подключения"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetovaní budú metakarpálne žily zámku vymazané. Ste si istí, že chcete obnoviť?",
|
||||
"在线": "Online",
|
||||
"离线": "Offline",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po resetovaní budú prstové odtlačky zámku vymazané. Ste si istí, že chcete obnoviť?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po resetovaní bude diaľkové ovládanie zámku vymazané. Chcete ho obnoviť?",
|
||||
"版本说明": "Popis verzie",
|
||||
"一键登录": "Prihlásenie jedným kliknutím"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Po zapnutí brány stlačte a podržte tlačidlo reset 5 sekúnd. Kliknite na ďalšie, keď modrý indikátor svetlo bliká",
|
||||
"网关添加成功": "Brána úspešne pridaná",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Po aktivácii funkcie budete môcť na diaľku odomknúť cez bránu。",
|
||||
"录屏已保存到相册": "Nahrávanie obrazovky file uložený do albumu",
|
||||
"通话未接通,已挂断": "Hovor nie je spojený, zavesený",
|
||||
"通话异常中断": "Abnormálne prerušenie hovoru",
|
||||
"通话连接失败": "Pripojenie hovoru zlyhalo",
|
||||
"已挂断": "Zavesenie",
|
||||
"正在说话...": "Hovorím teraz...",
|
||||
"设备不在线": "Zariadenie nie je online",
|
||||
"设备未配网": "Zariadenie nie je pripojené k sieti",
|
||||
"已静音": "Zvuk bol vypnutý",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "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"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Након ресетовања, метакарпалне вене браве ће бити избрисане. Да ли сте сигурни да желите да ресетујете?",
|
||||
"在线": "Онлине",
|
||||
"离线": "Ванмрежне",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Након ресетовања, отисци прстију браве ће бити избрисани. Да ли сте сигурни да желите да га ресетујете?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Након ресетовања, даљински управљач браве ће бити избрисан. Да ли желите да га ресетујете?",
|
||||
"版本说明": "Опис верзије",
|
||||
"一键登录": "Пријава једним кликом"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Након што је гатеваи укључен, притисните и држите дугме за ресетовање за 5 секунди. Кликните Следећи када плава лампица трепери",
|
||||
"网关添加成功": "Гатеваи је успешно додао",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Након што је функција омогућена, моћи ћете да даљински откључавање преко гатеваи。",
|
||||
"录屏已保存到相册": "Датотека за снимање екрана сачувана у албуму",
|
||||
"通话未接通,已挂断": "Позив није повезан, спустио слушалицу",
|
||||
"通话异常中断": "Ненормалан прекид позива",
|
||||
"通话连接失败": "Позив веза није успела",
|
||||
"已挂断": "Спуштање веша",
|
||||
"正在说话...": "Разговарамо сада ...",
|
||||
"设备不在线": "Уређај није на мрежи",
|
||||
"设备未配网": "Уређај није повезан на мрежу",
|
||||
"已静音": "Звук је искључен",
|
||||
"该锁的远程开锁功能未启用": "Функција даљинског откључавања ове браве није омогућена",
|
||||
"下载完成,请到相册查看": "Преузимање завршено, идите на албум да видите",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Када је Цат Еие подешен на режим за уштеду енергије, праћење се не може извршити. Молимо Вас да пређете на друге режиме у подешавањима Цат Еие",
|
||||
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Даљинско откључавање није могуће када је Цат Еие подешен на режим за уштеду енергије. Молимо Вас да пређете на други режим у подешавањима Цат Еие",
|
||||
"呼叫目标": "Циљ позива",
|
||||
"管理员APP": "Администратор АПП",
|
||||
"可视门铃码": "Визуелни код звона",
|
||||
"电子反锁": "Електронски против блокирања",
|
||||
"双重认证": "Двофакторска аутентификација",
|
||||
"双锁联动": "Двострука брава веза",
|
||||
"1.用智能锁APP添加锁和网关": "1 . Додајте браве и гатеваи помоћу апликације Смарт Лоцк",
|
||||
"2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2 . Омогућите функцију даљинског откључавања браве у АПП-у (ова функција је подразумевано искључена). Ако ова опција није доступна, брава неће подржати Гоогле Хоме",
|
||||
"3.安装Google Home APP,点击左上角的加号按钮": "3 . Инсталирајте апликацију Гоогле Хоме и кликните на дугме плус у горњем левом углу",
|
||||
"暂无最新记录": "Тренутно нема доступних најновијих података",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Пребаците телефон на КСНУМКСГ ВиФи за ручно повезивање"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "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",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Efter återställd, kommer låsets fingeravtryck tas bort. Är du säker på att du vill återställa den?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Efter återställd, fjärrkontrollen på låset tas bort. Vill du återställa den?",
|
||||
"版本说明": "Versionsbeskrivning",
|
||||
"一键登录": "Ett klick inloggning"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "När gateway är aktiverad, tryck på och håll återställningsknappen i 5 sekunder. Klicka Nästa när den blå indikator ljus blinkar",
|
||||
"网关添加成功": "Gateway lagt till med lyckad",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "När funktionen är aktiverad kommer du att kunna låsa upp på distans via gatewayen.",
|
||||
"录屏已保存到相册": "Skärminspelningsfil sparad i album",
|
||||
"通话未接通,已挂断": "Samtalet är inte anslutet, har lagts på",
|
||||
"通话异常中断": "Onormalt samtalsavbrott",
|
||||
"通话连接失败": "Samtalsanslutningen misslyckades",
|
||||
"已挂断": "Lägger på",
|
||||
"正在说话...": "Pratar nu...",
|
||||
"设备不在线": "Enheten är inte online",
|
||||
"设备未配网": "Enheten är inte ansluten till nätverket",
|
||||
"已静音": "Ljudet har stängts av",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "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",
|
||||
"暂无最新记录": "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"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วหลอดเลือดดำ metacarpal ของล็อคจะถูกลบออกคุณแน่ใจว่าอยากจะรีเซ็ต?",
|
||||
"在线": "ออนไลน์ผ่าน",
|
||||
"离线": "ออฟไลน์",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วลายนิ้วมือของล็อคจะถูกลบออกคุณแน่ใจว่าอยากจะรีเซ็ต?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วรีโมทคอนโทรลของล็อคจะถูกลบออกคุณต้องการรีเซ็ตไหม",
|
||||
"版本说明": "คำอธิบายรุ่น",
|
||||
"一键登录": "เข้าสู่ระบบด้วยคลิกเดียว"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "หลังจากเปิดเกตเวย์แล้วให้กดปุ่มรีเซ็ตค้างไว้5วินาทีคลิกถัดไปเมื่อไฟแสดงสถานะสีน้ำเงินกะพริบ",
|
||||
"网关添加成功": "เพิ่มเกตเวย์เรียบร้อยแล้ว",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "หลังจากเปิดใช้งานฟังก์ชั่นแล้วคุณจะสามารถปลดล็อคจากระยะไกลผ่านประตู",
|
||||
"录屏已保存到相册": "แฟ้มบันทึกการบันทึกหน้าจอไปยังอัลบั้ม",
|
||||
"通话未接通,已挂断": "โทรไม่ได้เชื่อมต่อวางสาย",
|
||||
"通话异常中断": "ผิดปกติการโทรขัดจังหวะ",
|
||||
"通话连接失败": "การเชื่อมต่อสายล้มเหลว",
|
||||
"已挂断": "วางสายนะ",
|
||||
"正在说话...": "กำลังคุยอยู่...",
|
||||
"设备不在线": "อุปกรณ์ไม่ออนไลน์",
|
||||
"设备未配网": "อุปกรณ์ไม่ได้เชื่อมต่อกับเครือข่าย",
|
||||
"已静音": "เสียงถูกปิด",
|
||||
"该锁的远程开锁功能未启用": "ไม่เปิดใช้ฟังก์ชันการปลดล็อคระยะไกลของการล็อคนี้",
|
||||
"下载完成,请到相册查看": "การดาวน์โหลดเสร็จสมบูรณ์แล้วโปรดไป ที่อัลบั้มเพื่อดู",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "เมื่อตั้งค่าตาแมวให้เป็นโหมดประหยัดพลังงานการตรวจสอบจะไม่สามารถทำงานได้ โปรดเปลี่ยนไปใช้โหมดอื่น ๆ ในการตั้งค่าตาแมว",
|
||||
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ไม่สามารถปลดล็อคระยะไกลได้เมื่อตั้งค่าดวงตาแมวให้เป็นโหมดประหยัดพลังงาน โปรดเปลี่ยนเป็นโหมดอื่นในการตั้งค่าตาแมว",
|
||||
"呼叫目标": "เรียกเป้าหมาย",
|
||||
"管理员APP": "แอพผู้ดูแลระบบ",
|
||||
"可视门铃码": "รหัสประตูหน้า",
|
||||
"电子反锁": "ล็อคป้องกันอิเล็กทรอนิกส์",
|
||||
"双重认证": "การตรวจสอบสิทธิ์สองระดับ",
|
||||
"双锁联动": "ดับเบิ้ลล็อคการเชื่อมต่อ",
|
||||
"1.用智能锁APP添加锁和网关": "1. เพิ่มล็อค และเกตเวย์โดยใช้แอพสมาร์ทล็อค",
|
||||
"2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. เปิดใช้งานฟังก์ชันการปลดล็อคระยะไกลของการล็อคในแอพ (ฟังก์ชันนี้ จะถูกปิดโดยค่าเริ่มต้น) หากไม่มีตัวเลือกนี้ การล็อคจะไม่สนับสนุนกูเกิ้ลโฮม",
|
||||
"3.安装Google Home APP,点击左上角的加号按钮": "3. ติดตั้ง googlehome แอพ และคลิกปุ่มบวก ที่มุมบนซ้าย",
|
||||
"暂无最新记录": "ปัจจุบันยังไม่มีบันทึกล่าสุด ที่มีอยู่",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "กรุณาเปลี่ยนโทรศัพท์เป็น 2.4 GWiFi สำหรับการเชื่อมต่อด้วยตนเอง"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin metacarpal damarları silinecektir. Sıfırlamak istediğine emin misin?",
|
||||
"在线": "Çevrimiçi",
|
||||
"离线": "Çevrimdışı",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin parmak izleri silinecektir. Sıfırlamak istediğine emin misin?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Sıfırladıktan sonra, kilidin uzaktan kumandası silinecektir. Sıfırlamak ister misin?",
|
||||
"版本说明": "Sürüm açıklaması",
|
||||
"一键登录": "Tek tıklama giriş"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Ağ geçidi açıldıktan sonra sıfırlama düğmesine 5 saniye basılı tutun. Mavi gösterge ışığı yanıp söndüğünde İleri'ye tıklayın",
|
||||
"网关添加成功": "Ağ geçidi başarıyla eklendi",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "İşlev etkinleştirildikten sonra, ağ geçidi üzerinden uzaktan kilit açabileceksiniz。",
|
||||
"录屏已保存到相册": "Albüme kaydedilen ekran kayıt dosyası",
|
||||
"通话未接通,已挂断": "Arama bağlı değil, kapatıldı",
|
||||
"通话异常中断": "Anormal çağrı kesintisi",
|
||||
"通话连接失败": "Çağrı bağlantısı başarısız oldu",
|
||||
"已挂断": "Telefonu kapatmak",
|
||||
"正在说话...": "Şimdi konuşuyoruz...",
|
||||
"设备不在线": "Cihaz çevrimiçi değil",
|
||||
"设备未配网": "Cihaz ağa bağlı değil",
|
||||
"已静音": "Ses kapatıldı",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "Ç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",
|
||||
"暂无最新记录": "Ş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"
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"星锁": "星形鎖",
|
||||
"锁通通": "鎖定通過",
|
||||
"星锁": "星鎖",
|
||||
"锁通通": "鎖通通",
|
||||
"点击开锁,长按闭锁": "觸摸以解鎖,按住以鎖定",
|
||||
"考勤": "出席情況",
|
||||
"考勤设置": "考勤設置",
|
||||
@ -151,7 +151,7 @@
|
||||
"升级": "更新",
|
||||
"空闲": "空缺",
|
||||
"已入住": "已占用",
|
||||
"多语言": "語言",
|
||||
"多语言": "多語言",
|
||||
"添加锁": "添加鎖定",
|
||||
"锁地址": "鎖地址",
|
||||
"选择锁类型": "選擇鎖定類型",
|
||||
@ -172,9 +172,9 @@
|
||||
"接收人信息": "收件人",
|
||||
"转移网关": "傳輸網關",
|
||||
"锁屏": "屏幕鎖定",
|
||||
"已关闭": "關",
|
||||
"已开启": "開啟",
|
||||
"开启": "打開",
|
||||
"已关闭": "已關閉",
|
||||
"已开启": "已開啟",
|
||||
"开启": "開啟",
|
||||
"确定要开启重置键?": "是否繼續啟用重置按鈕?",
|
||||
"确定要关闭重置键?": "是否繼續禁用重置按鈕?",
|
||||
"隐藏无效开锁权限": "隱藏無效訪問",
|
||||
@ -267,9 +267,9 @@
|
||||
"您可通过邮件将密码、电子钥匙信息发给接收人。": "電子郵件可用於向收件人發送密碼和ekey信息。",
|
||||
"购买实名认证提示": "啟用該功能後,您需要使用指紋,臉部或帳戶密碼才能打開該應用程序。 3分鐘不用再驗證",
|
||||
"请选择你希望的实名认证频次": "請選擇您想要的實名認證頻率",
|
||||
"仅首次": "第一次",
|
||||
"仅首次": "僅首次",
|
||||
"每日一次": "每天一次",
|
||||
"每周一次": "每周一次",
|
||||
"每周一次": "每週一次",
|
||||
"每月一次": "每月一次",
|
||||
"当前状态": "當前狀態",
|
||||
"试用中": "在審判中",
|
||||
@ -1078,11 +1078,15 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 是否確實要重置?",
|
||||
"在线": "在線",
|
||||
"离线": "離線",
|
||||
"购买记录": "採購記錄",
|
||||
"使用记录": "用戶記錄",
|
||||
"购买记录": "購買記錄",
|
||||
"使用记录": "使用記錄",
|
||||
"失效时间要大于当前时间": "過期時間必須長於當前時間",
|
||||
"修改名字": "編輯名稱",
|
||||
"时": "小時",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置後,鎖的指紋將被刪除。 是否確實要重置它?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置後,鎖的遙控器將被刪除。 是否要重置它?",
|
||||
"版本说明": "版本說明",
|
||||
"一键登录": "一鍵登錄"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "網關通電後,按住reset按鈕5秒鐘。 當藍色指示燈閃爍時,單擊 「下一步」",
|
||||
"网关添加成功": "已成功添加網關",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "啓用該功能後,您可以通過網關遠程解鎖。",
|
||||
"录屏已保存到相册": "屏幕錄製文件保存到相冊",
|
||||
"通话未接通,已挂断": "電話未接通,已掛斷",
|
||||
"通话异常中断": "異常呼叫中斷",
|
||||
"通话连接失败": "呼叫連接失敗",
|
||||
"已挂断": "已掛斷",
|
||||
"正在说话...": "正在說話…",
|
||||
"设备不在线": "設備未在線",
|
||||
"设备未配网": "設備未連接到網絡",
|
||||
"已静音": "聲音已被關掉了",
|
||||
"该锁的远程开锁功能未启用": "未開啓該鎖的遠程解鎖功能",
|
||||
"下载完成,请到相册查看": "下載完成,請到相冊查看",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "當“貓眼”設置爲省電模式時,無法進行監控。請在貓眼設置中切換到其他模式",
|
||||
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "當貓眼設置爲省電模式時,無法遠程解鎖。請在貓眼設置中切換到其他模式",
|
||||
"呼叫目标": "調用目標",
|
||||
"管理员APP": "管理員應用",
|
||||
"可视门铃码": "可視門鈴碼",
|
||||
"电子反锁": "電子反鎖",
|
||||
"双重认证": "雙重認證",
|
||||
"双锁联动": "雙鎖聯動",
|
||||
"1.用智能锁APP添加锁和网关": "1. 使用智能鎖應用程序添加鎖和網關",
|
||||
"2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. 在APP中開啓鎖的遠程開鎖功能(默認關閉)。如果這個選項不可用,鎖將不支持谷歌Home",
|
||||
"3.安装Google Home APP,点击左上角的加号按钮": "3. 安裝谷歌Home應用程序並單擊左上角的加號按鈕",
|
||||
"暂无最新记录": "目前沒有最新的記錄",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "手動連接時請將手機調至2.4G WiFi"
|
||||
}
|
||||
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Після скидання п'ясткові вени замку будуть видалені. Ви впевнені, що хочете скинути налаштування?",
|
||||
"在线": "Онлайн",
|
||||
"离线": "Автономних",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Після скидання відбитки пальців замка будуть видалені. Ви впевнені, що хочете скинути налаштування?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Після скидання пульт дистанційного керування замком буде видалено. Хочете його скинути?",
|
||||
"版本说明": "Опис версії",
|
||||
"一键登录": "Вхід в один клік"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Після ввімкнення шлюзу натисніть і утримуйте кнопку скидання протягом 5 секунд. Натисніть «Далі», коли синій індикатор почне блимати",
|
||||
"网关添加成功": "Шлюз успішно додано",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Після ввімкнення функції ви зможете віддалено розблокувати через шлюз。",
|
||||
"录屏已保存到相册": "Файл запису екрана, збережений в альбомі",
|
||||
"通话未接通,已挂断": "Дзвінок не підключений, поклав слухавку",
|
||||
"通话异常中断": "Ненормальне переривання виклику",
|
||||
"通话连接失败": "Не вдалося з'єднати дзвінок",
|
||||
"已挂断": "Покласти слухавку",
|
||||
"正在说话...": "Говорячи зараз...",
|
||||
"设备不在线": "Пристрій не підключений до мережі",
|
||||
"设备未配网": "Пристрій не підключений до мережі",
|
||||
"已静音": "Звук вимкнено",
|
||||
"该锁的远程开锁功能未启用": "Функція дистанційного розблокування цього замка не ввімкнена",
|
||||
"下载完成,请到相册查看": "Завантаження завершено, будь ласка, перейдіть до альбому для перегляду",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Коли функцію «Котяче око» переведено в режим енергозбереження, моніторинг неможливий. Будь ласка, перейдіть на інші режими в налаштуваннях 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 і натисніть кнопку плюс у верхньому лівому кутку",
|
||||
"暂无最新记录": "Наразі немає останніх доступних записів",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "Будь ласка, перемкніть свій телефон на 2.4G WiFi для ручного підключення"
|
||||
}
|
||||
1155
lan/lan_ur.json
Normal file
@ -1078,6 +1078,10 @@
|
||||
"印度尼西亚语": "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",
|
||||
@ -1121,5 +1125,31 @@
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Sau khi đặt lại, dấu vân tay của khóa sẽ bị xóa. Bạn có chắc chắn muốn thiết lập lại nó?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Sau khi đặt lại, điều khiển từ xa của khóa sẽ bị xóa. Bạn có muốn đặt lại không?",
|
||||
"版本说明": "Thông tin phiên bản",
|
||||
"一键登录": "Đăng nhập bằng một cú nhấp chuột"
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Sau khi cổng được bật, Nhấn và giữ nút Reset trong 5 giây. Nhấp vào tiếp theo khi đèn báo màu xanh lam nhấp nháy",
|
||||
"网关添加成功": "Gateway đã thêm thành công",
|
||||
"功能开启后,你将可以通过网关远程开锁。": "Sau khi chức năng được kích hoạt, bạn sẽ có thể mở khóa từ xa thông qua gateway.",
|
||||
"录屏已保存到相册": "Trên màn hình lưu vào album",
|
||||
"通话未接通,已挂断": "Gọi không liên lạc, cúp máy",
|
||||
"通话异常中断": "Sự gián đoạn cuộc gọi bất thường",
|
||||
"通话连接失败": "Kết nối cuộc gọi đã thất bại",
|
||||
"已挂断": "Cúp máy",
|
||||
"正在说话...": "Nói chuyện bây giờ...",
|
||||
"设备不在线": "Thiết bị không có trên mạng",
|
||||
"设备未配网": "Thiết bị không được kết nối với mạng",
|
||||
"已静音": "Âm thanh đã bị tắt",
|
||||
"该锁的远程开锁功能未启用": "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",
|
||||
"呼叫目标": "Đặ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",
|
||||
"暂无最新记录": "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"
|
||||
}
|
||||
@ -62,6 +62,9 @@
|
||||
"批量授权锁": "批量授权锁",
|
||||
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人",
|
||||
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。",
|
||||
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行",
|
||||
|
||||
"功能开启后,你将可以通过网关远程开锁。": "功能开启后,你将可以通过网关远程开锁。",
|
||||
"排列方式": "排列方式",
|
||||
"早到榜": "早到榜",
|
||||
"迟到榜": "迟到榜",
|
||||
@ -218,7 +221,7 @@
|
||||
"添加网关": "添加网关",
|
||||
"重新通电": "重新通电",
|
||||
"指示灯": "指示灯",
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步",
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步",
|
||||
"选择网关": "选择网关",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "不支持5G WiFi网络,请选择2.4G WiFi网络进行配置",
|
||||
"WiFi密码": "WiFi密码",
|
||||
@ -1010,6 +1013,7 @@
|
||||
"请在锁设置中开启远程开锁": "请在锁设置中开启远程开锁",
|
||||
"接听": "接听",
|
||||
"截图已保存到相册": "截图已保存到相册",
|
||||
"录屏已保存到相册": "录屏已保存到相册",
|
||||
"添加遥控": "添加遥控",
|
||||
"已连接到锁,请按遥控": "已连接到锁,请按遥控",
|
||||
"遥控号": "遥控号",
|
||||
@ -1079,6 +1083,8 @@
|
||||
"印度尼西亚语": "Bahasa Indonesia",
|
||||
"芬兰语": "Suomi",
|
||||
"丹麦语": "Dansk",
|
||||
"印地语": "हिंदीName",
|
||||
"乌尔都语": "اوردو",
|
||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?",
|
||||
"在线": "在线",
|
||||
"离线": "离线",
|
||||
@ -1120,7 +1126,43 @@
|
||||
"分简称": "分",
|
||||
"跟随系统": "跟随系统",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置后,该锁的指纹都将被删除哦,确认要重置吗?",
|
||||
"通话未接通,已挂断": "通话未接通,已挂断",
|
||||
"通话异常中断": "通话异常中断",
|
||||
"通话连接失败": "通话连接失败",
|
||||
"已挂断": "已挂断",
|
||||
"正在说话...": "正在说话...",
|
||||
"设备不在线": "设备不在线",
|
||||
"设备未配网": "设备未配网",
|
||||
"已静音": "已静音",
|
||||
"该锁的远程开锁功能未启用": "该锁的远程开锁功能未启用",
|
||||
"下载完成,请到相册查看": "下载完成,请到相册查看",
|
||||
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式",
|
||||
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置后,该锁的遥控都将被删除哦,确认要重置吗?",
|
||||
"版本说明": "版本说明",
|
||||
"一键登录": "一键登录"
|
||||
"呼叫目标": "呼叫目标",
|
||||
"管理员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的账号和密码进行授权",
|
||||
"暂无最新记录": "暂无最新记录",
|
||||
"请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接",
|
||||
"请扫描可视门铃码二维码": "请扫描可视门铃码二维码",
|
||||
"请确保网络是2.4GHz Wi-Fi": "请确保网络是2.4GHz Wi-Fi",
|
||||
"已选": "已选",
|
||||
"是否要远程开锁": "是否要远程开锁",
|
||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
|
||||
"请确认后再继续": "请确认后再继续",
|
||||
"需要相机权限": "需要相机权限",
|
||||
"一键登录": "一键登录",
|
||||
"网关添加成功": "网关添加成功"
|
||||
}
|
||||
|
||||
@ -179,12 +179,19 @@ class BlueManage {
|
||||
upload: false);
|
||||
if (isExit) {
|
||||
for (final ScanResult scanResult in results) {
|
||||
if (((scanResult.advertisementData.serviceUuids.isNotEmpty
|
||||
? scanResult.advertisementData.serviceUuids[0]
|
||||
: '')
|
||||
.toString()
|
||||
.contains('758824')) &&
|
||||
(scanResult.rssi >= -100)) {
|
||||
if (scanResult.advertisementData.serviceUuids.isNotEmpty) {
|
||||
// AppLog.log(
|
||||
// '扫描到的设备:${scanResult.advertisementData.serviceUuids[0].toString()}');
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
final isMatch = _isMatch(scanResult
|
||||
.advertisementData.serviceUuids
|
||||
.map((e) => e.uuid)
|
||||
.toList());
|
||||
|
||||
if (isMatch && (scanResult.rssi >= -100)) {
|
||||
// 查询id相同的元素
|
||||
final int knownDeviceIndex = scanDevices.indexWhere(
|
||||
(ScanResult d) =>
|
||||
@ -253,14 +260,21 @@ class BlueManage {
|
||||
FlutterBluePlus.scanResults.listen((List<ScanResult> results) {
|
||||
scanDevices.clear();
|
||||
for (final ScanResult scanResult in results) {
|
||||
// AppLog.log('扫描到的设备:${scanResult.device.platformName} ${scanResult.advertisementData.advName} ${scanResult.rssi}');
|
||||
if (scanResult.advertisementData.serviceUuids.isNotEmpty) {
|
||||
// AppLog.log(
|
||||
// '扫描到的设备:${scanResult.advertisementData.serviceUuids[0].toString()}');
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
final isMatch = _isMatch(
|
||||
scanResult.advertisementData.serviceUuids
|
||||
.map((e) => e.uuid)
|
||||
.toList(),
|
||||
deviceType: deviceType,
|
||||
);
|
||||
// 判断名字为空的直接剔除
|
||||
if (((scanResult.advertisementData.serviceUuids.isNotEmpty
|
||||
? scanResult.advertisementData.serviceUuids[0]
|
||||
: '')
|
||||
.toString()
|
||||
.contains(getDeviceType(deviceType))) &&
|
||||
(scanResult.rssi >= -100)) {
|
||||
if (isMatch && (scanResult.rssi >= -100)) {
|
||||
// 查询id相同的元素
|
||||
final int knownDeviceIndex = scanDevices.indexWhere(
|
||||
(ScanResult d) =>
|
||||
@ -300,6 +314,24 @@ class BlueManage {
|
||||
});
|
||||
}
|
||||
|
||||
/// 判断是否包含指定的uuid
|
||||
bool _isMatch(List<String> serviceUuids,
|
||||
{DeviceType deviceType = DeviceType.blue}) {
|
||||
// 获取设备类型数组
|
||||
List<String> deviceTypeList = getDeviceType(deviceType);
|
||||
|
||||
// 检查 serviceUuids 是否包含 deviceTypeList 中的任意一个值
|
||||
if (serviceUuids != null && serviceUuids.isNotEmpty) {
|
||||
return serviceUuids.any((uuid) {
|
||||
return deviceTypeList
|
||||
.any((type) => uuid.toLowerCase().contains(type.toLowerCase()));
|
||||
});
|
||||
}
|
||||
|
||||
// 如果 serviceUuids 为空,则返回 false
|
||||
return false;
|
||||
}
|
||||
|
||||
/// 调用发送数据 List senderData,
|
||||
Future<void> blueSendData(
|
||||
String deviceName, ConnectStateCallBack stateCallBack,
|
||||
@ -499,8 +531,39 @@ class BlueManage {
|
||||
}
|
||||
AppLog.log('调用了停止扫描的方法');
|
||||
await stopScan();
|
||||
if (scanResult.advertisementData.serviceUuids[0].toString().length >= 5 &&
|
||||
(scanResult.advertisementData.serviceUuids[0].toString()[5] == '0') &&
|
||||
isAddEquipment == false) {
|
||||
// 添加这个判断是因为有些苹果设备或者安卓等性能比较好的设备时,添加完锁之后,锁板未改变为已添加状态之前,就进行了蓝牙连接,导致添加完锁就失败,这里进行了判断,如果第一次连接失败,就清除缓存重新扫描连接
|
||||
if (isReconnect == true) {
|
||||
AppLog.log('该锁已被重置, 重新发送扫描命令');
|
||||
|
||||
if ((scanResult.advertisementData.serviceUuids[0].toString()[31] == '0') &&
|
||||
BuglyTool.uploadException(
|
||||
message: '该锁已被重置, 重新发送扫描命令startScanSingle 上传记录当前方法是:_connectDevice',
|
||||
detail:
|
||||
'添加这个判断是因为有些苹果设备或者安卓等性能比较好的设备时,添加完锁之后,锁板未改变为已添加状态之前,就进行了蓝牙连接,导致添加完锁就失败,这里进行了判断,如果第一次连接失败,就清除缓存重新扫描连接 该锁已被重置, 重新发送扫描命令 serviceUuids:${scanResult.advertisementData.serviceUuids[0].toString()}',
|
||||
upload: false);
|
||||
|
||||
scanDevices.clear();
|
||||
startScanSingle(deviceName, 15, (List<ScanResult> scanDevices) {
|
||||
_connectDevice(scanDevices, deviceName, connectStateCallBack,
|
||||
isAddEquipment: isAddEquipment, isReconnect: false);
|
||||
});
|
||||
} else {
|
||||
connectStateCallBack(BluetoothConnectionState.disconnected);
|
||||
EasyLoading.showToast('该锁已被重置'.tr, duration: 2000.milliseconds);
|
||||
scanDevices.clear();
|
||||
|
||||
BuglyTool.uploadException(
|
||||
message: '提示该锁已被重置, 回调断开连接, 清除缓存,上传记录当前方法是:_connectDevice',
|
||||
detail:
|
||||
'isReconnect:$isReconnect serviceUuids:${scanResult.advertisementData.serviceUuids[0].toString()}',
|
||||
upload: false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (scanResult.advertisementData.serviceUuids[0].toString().length >= 30 &&
|
||||
(scanResult.advertisementData.serviceUuids[0].toString()[31] == '0') &&
|
||||
isAddEquipment == false) {
|
||||
// 添加这个判断是因为有些苹果设备或者安卓等性能比较好的设备时,添加完锁之后,锁板未改变为已添加状态之前,就进行了蓝牙连接,导致添加完锁就失败,这里进行了判断,如果第一次连接失败,就清除缓存重新扫描连接
|
||||
if (isReconnect == true) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:star_lock/flavors.dart';
|
||||
import 'package:star_lock/tools/dateTool.dart';
|
||||
|
||||
import '../../app_settings/app_settings.dart';
|
||||
@ -13,7 +13,6 @@ import 'package:crypto/crypto.dart' as crypto;
|
||||
|
||||
// 修改管理员密码
|
||||
class ChangeAdministratorPasswordCommand extends SenderProtocol {
|
||||
|
||||
ChangeAdministratorPasswordCommand({
|
||||
this.keyID,
|
||||
this.userID,
|
||||
@ -40,7 +39,6 @@ class ChangeAdministratorPasswordCommand extends SenderProtocol {
|
||||
List<int>? signKey;
|
||||
List<int>? privateKey;
|
||||
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ChangeAdministratorPasswordCommand{keyID: $keyID, userID: $userID,'
|
||||
@ -80,7 +78,12 @@ class ChangeAdministratorPasswordCommand extends SenderProtocol {
|
||||
subData = getFixedLengthList(subData, 20 - userIDLength);
|
||||
|
||||
// PwdNo
|
||||
subData.addAll(intChangList(pwdNo!));
|
||||
if (F.isSKY) {
|
||||
subData.add(pwdNo! & 0xFF); // 低字节
|
||||
subData.add((pwdNo! >> 8) & 0xFF); // 高字节
|
||||
} else {
|
||||
subData.addAll(intChangList(pwdNo!));
|
||||
}
|
||||
|
||||
// pwd 20
|
||||
final int pwdLength = utf8.encode(pwd!).length;
|
||||
@ -105,7 +108,7 @@ class ChangeAdministratorPasswordCommand extends SenderProtocol {
|
||||
subData.add((endTime! & 0xff00) >> 8);
|
||||
subData.add(endTime! & 0xff);
|
||||
|
||||
if(needAuthor == 0){
|
||||
if (needAuthor == 0) {
|
||||
//AuthCodeLen 1
|
||||
subData.add(0);
|
||||
} else {
|
||||
@ -147,10 +150,11 @@ class ChangeAdministratorPasswordCommand extends SenderProtocol {
|
||||
}
|
||||
|
||||
class ChangeAdministratorPasswordReply extends Reply {
|
||||
ChangeAdministratorPasswordReply.parseData(CommandType commandType, List<int> dataDetail)
|
||||
ChangeAdministratorPasswordReply.parseData(
|
||||
CommandType commandType, List<int> dataDetail)
|
||||
: super.parseData(commandType, dataDetail) {
|
||||
data = dataDetail;
|
||||
final int status = data[2];
|
||||
errorWithStstus(status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<int> dataDetail);
|
||||
|
||||
CommandType? commandType;
|
||||
@ -13,10 +12,10 @@ abstract class Reply{
|
||||
//command key flag
|
||||
int status = 0;
|
||||
List<int> 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);
|
||||
}
|
||||
|
||||
|
||||
@ -5,14 +5,14 @@ enum DeviceType {
|
||||
gateway // 758825
|
||||
}
|
||||
|
||||
String getDeviceType(DeviceType deviceType) {
|
||||
String t = '758824';
|
||||
List<String> getDeviceType(DeviceType deviceType) {
|
||||
List<String> t = ['758824'];
|
||||
switch (deviceType) {
|
||||
case DeviceType.blue:
|
||||
t = '758824';
|
||||
t = ['758824', '75'];
|
||||
break;
|
||||
case DeviceType.gateway:
|
||||
t = '758825';
|
||||
t = ['758825'];
|
||||
break;
|
||||
}
|
||||
return t;
|
||||
|
||||
@ -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<int> 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<Reply?> parseData(List<int> 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<int> _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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -263,7 +263,12 @@ class SM4 {
|
||||
0x48
|
||||
];
|
||||
|
||||
static const List<int> FK = <int>[0xA3B1BAC6, 0x56AA3350, 0x677D9197, 0xB27022DC];
|
||||
static const List<int> FK = <int>[
|
||||
0xA3B1BAC6,
|
||||
0x56AA3350,
|
||||
0x677D9197,
|
||||
0xB27022DC
|
||||
];
|
||||
|
||||
static const List<int> CK = <int>[
|
||||
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<int> supplementList = List.filled(16, 0x00);
|
||||
|
||||
/// complete list
|
||||
final List<int> completeList = <int>[...list, ...supplementList].sublist(0, 16);
|
||||
final List<int> completeList =
|
||||
<int>[...list, ...supplementList].sublist(0, 16);
|
||||
return completeList;
|
||||
}
|
||||
|
||||
|
||||
@ -140,11 +140,11 @@ class F {
|
||||
case Flavor.dev:
|
||||
case Flavor.xhj_dev:
|
||||
case Flavor.sky_dev:
|
||||
return 'https://dev.lock.star-lock.cn';
|
||||
return 'https://lock.dev.star-lock.cn';
|
||||
case Flavor.pre:
|
||||
case Flavor.xhj_pre:
|
||||
case Flavor.sky_pre:
|
||||
return 'https://pre.lock.star-lock.cn';
|
||||
return 'https://lock.pre.star-lock.cn';
|
||||
case Flavor.sky:
|
||||
return 'https://lock.skychip.top';
|
||||
case Flavor.xhj:
|
||||
|
||||
@ -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<void> 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<void> 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<void> 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() {
|
||||
|
||||
@ -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: <Widget>[
|
||||
SizedBox(width: 5.w),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'国家/地区'.tr,
|
||||
child: Text('国家/地区'.tr,
|
||||
style: TextStyle(
|
||||
fontSize: 26.sp, color: AppColors.blackColor))),
|
||||
SizedBox(width: 20.w),
|
||||
|
||||
@ -1,19 +1,21 @@
|
||||
import 'dart:io';
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/apm/apm_helper.dart';
|
||||
import 'package:jverify/jverify.dart';
|
||||
import 'package:star_lock/appRouters.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
import 'package:star_lock/blue/blue_manage.dart';
|
||||
import 'package:star_lock/blue/io_tool/manager_event_bus.dart';
|
||||
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||||
import 'package:star_lock/login/login/entity/LoginEntity.dart';
|
||||
import 'package:star_lock/mine/mine/starLockMine_state.dart';
|
||||
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
|
||||
import 'package:star_lock/network/start_chart_api.dart';
|
||||
import 'package:star_lock/talk/starChart/entity/star_chart_register_node_entity.dart';
|
||||
import 'package:star_lock/tools/appFirstEnterHandle.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import 'package:star_lock/translations/current_locale_tool.dart';
|
||||
|
||||
import '../../main/lockMian/lockMain/lockMain_logic.dart';
|
||||
import '../../mine/mine/starLockMine_logic.dart';
|
||||
@ -101,39 +103,47 @@ class StarLockLoginLogic extends BaseGetXController {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> oneClickLoginAction() async {
|
||||
await JverifyOneClickLoginManage().loginAuth((e) async {
|
||||
Future<void> oneClickLoginAction(BuildContext context) async {
|
||||
await JverifyOneClickLoginManage().loginAuth(context,(e) async {
|
||||
final int? code = e.code;
|
||||
final String? content = e.message;
|
||||
// final String operator = map['operator'];
|
||||
AppLog.log('1111code:$code content:$content');
|
||||
if (code == 6000) {
|
||||
final LoginEntity entity = await ApiRepository.to.oneClickLogin(
|
||||
loginType: '3',
|
||||
loginToken: content ?? '',
|
||||
deviceInfo: state.deviceInfoMap);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
ApmHelper.instance.trackEvent('login_result', {
|
||||
'account': state.emailOrPhone.value,
|
||||
'date': DateTool().getNowDateWithType(1),
|
||||
'login_res': '成功',
|
||||
});
|
||||
switch (code) {
|
||||
case 6000:
|
||||
final LoginEntity entity = await ApiRepository.to.oneClickLogin(
|
||||
loginType: '3',
|
||||
loginToken: content ?? '',
|
||||
deviceInfo: state.deviceInfoMap);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
ApmHelper.instance.trackEvent('login_result', {
|
||||
'account': state.emailOrPhone.value,
|
||||
'date': DateTool().getNowDateWithType(1),
|
||||
'login_res': '成功',
|
||||
});
|
||||
|
||||
Storage.saveLoginData(entity.data);
|
||||
Storage.setBool(saveIsVip, entity.data!.isVip == 1);
|
||||
eventBus.fire(MineInfoChangeRefreshUI());
|
||||
if (Get.isRegistered<LockMainLogic>()) {
|
||||
Get.find<LockMainLogic>().getStarLockInfo(isUnShowLoading: true);
|
||||
Storage.saveLoginData(entity.data);
|
||||
Storage.setBool(saveIsVip, entity.data!.isVip == 1);
|
||||
eventBus.fire(MineInfoChangeRefreshUI());
|
||||
if (Get.isRegistered<LockMainLogic>()) {
|
||||
Get.find<LockMainLogic>().getStarLockInfo(isUnShowLoading: true);
|
||||
}
|
||||
Get.offNamedUntil(Routers.starLockMain, (Route route) => false);
|
||||
BlueManage().scanDevices.clear(); //清除设备缓存
|
||||
} else {
|
||||
ApmHelper.instance.trackEvent('login_result', {
|
||||
'account': state.emailOrPhone.value,
|
||||
'date': DateTool().getNowDateWithType(1),
|
||||
'login_res': '${entity.errorCode}--${entity.errorMsg}',
|
||||
});
|
||||
}
|
||||
Get.offNamedUntil(Routers.starLockMain, (Route route) => false);
|
||||
BlueManage().scanDevices.clear(); //清除设备缓存
|
||||
} else {
|
||||
ApmHelper.instance.trackEvent('login_result', {
|
||||
'account': state.emailOrPhone.value,
|
||||
'date': DateTool().getNowDateWithType(1),
|
||||
'login_res': '${entity.errorCode}--${entity.errorMsg}',
|
||||
});
|
||||
}
|
||||
break;
|
||||
case 6002:
|
||||
// showToast('用户取消一键登录'.tr);
|
||||
break;
|
||||
default:
|
||||
showToast('一键登录失败,请使用账号/密码登录'.tr);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -141,9 +151,9 @@ class StarLockLoginLogic extends BaseGetXController {
|
||||
Future<void> 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);
|
||||
}
|
||||
@ -175,24 +185,45 @@ class StarLockLoginLogic extends BaseGetXController {
|
||||
state.canNext.value = state.pwdIsOK && state.isEmailOrPhone;
|
||||
}
|
||||
|
||||
late StreamSubscription _agreePrivacySubscription;
|
||||
|
||||
void _initEventListen() {
|
||||
_agreePrivacySubscription = eventBus
|
||||
.on<AgreePrivacyAgreement>()
|
||||
.listen((AgreePrivacyAgreement event) async {
|
||||
/// 检查ip如果属于国内才进行初始化
|
||||
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: '');
|
||||
String currentLanguage =
|
||||
CurrentLocaleTool.getCurrentLocaleString(); // 当前选择语言
|
||||
// 判断如果ip是国内的且选的是中文才初始化一键登录
|
||||
if (entity.data!.abbreviation?.toLowerCase() == 'cn' &&
|
||||
currentLanguage == 'zh_CN') {
|
||||
// 初始化一键登录服务
|
||||
await JverifyOneClickLoginManage();
|
||||
state.isCheckVerifyEnable.value =
|
||||
await JverifyOneClickLoginManage().checkVerifyEnable();
|
||||
AppLog.log('一键登录初始化认证结果:${state.isCheckVerifyEnable.value}');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> onInit() async {
|
||||
_initEventListen();
|
||||
super.onInit();
|
||||
|
||||
JverifyOneClickLoginManage();
|
||||
oneClickLoginAction();
|
||||
state.isCheckVerifyEnable.value =
|
||||
await JverifyOneClickLoginManage().checkVerifyEnable();
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
// 取消事件监听
|
||||
_agreePrivacySubscription.cancel();
|
||||
state.onClose();
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
//刷新设备信息
|
||||
//刷新设备信息
|
||||
Future<void> flushedDeviceInfo() async {
|
||||
eventBus.fire(AgreePrivacyAgreement());
|
||||
XSConstantMacro().getDeviceInfoData().then((Map<String, dynamic> data) {
|
||||
state.deviceInfoMap.value = data;
|
||||
}).catchError((dynamic error) {
|
||||
|
||||
@ -108,7 +108,7 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
|
||||
if (result != null) {
|
||||
result as Map<String, dynamic>;
|
||||
state.countryCode.value = result['code'];
|
||||
state.countryKey = result['countryName'];
|
||||
state.countryKey.value = result['countryName'];
|
||||
logic.checkIpAction();
|
||||
}
|
||||
},
|
||||
@ -133,6 +133,7 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
|
||||
inputFormatters: <TextInputFormatter>[
|
||||
// FilteringTextInputFormatter.allow(RegExp('[0-9]')),
|
||||
LengthLimitingTextInputFormatter(30),
|
||||
FilteringTextInputFormatter.singleLineFormatter
|
||||
]),
|
||||
SizedBox(height: 10.h),
|
||||
LoginInput(
|
||||
@ -282,7 +283,8 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
|
||||
width: 10.sp,
|
||||
)),
|
||||
Obx(() => Visibility(
|
||||
visible: state.isCheckVerifyEnable.value,
|
||||
visible: state.isCheckVerifyEnable.value &&
|
||||
state.currentLanguage == 'zh_CN',
|
||||
child: GestureDetector(
|
||||
child: SizedBox(
|
||||
// width: 150.w,
|
||||
@ -295,7 +297,9 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
|
||||
color: AppColors.mainColor)),
|
||||
),
|
||||
),
|
||||
onTap: logic.oneClickLoginAction,
|
||||
onTap: () {
|
||||
logic.oneClickLoginAction(context);
|
||||
},
|
||||
),
|
||||
))
|
||||
],
|
||||
|
||||
@ -46,7 +46,8 @@ class StarLockLoginState {
|
||||
}.obs;
|
||||
|
||||
RxBool isCheckVerifyEnable = false.obs;
|
||||
|
||||
RxString currentLanguage =
|
||||
CurrentLocaleTool.getCurrentLocaleString().obs; // 当前选择语言
|
||||
void onClose() {
|
||||
// emailOrPhoneController.dispose();
|
||||
// pwdController.dispose();
|
||||
|
||||
@ -243,7 +243,7 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
|
||||
),
|
||||
),
|
||||
onTap: () async {
|
||||
logic.oneClickLoginAction();
|
||||
logic.oneClickLoginAction(context);
|
||||
},
|
||||
),
|
||||
))
|
||||
|
||||
@ -100,9 +100,11 @@ class StarLockRegisterLogic extends BaseGetXController {
|
||||
Future<void> 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);
|
||||
}
|
||||
|
||||
@ -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<StarLockRegisterPage> {
|
||||
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<StarLockRegisterPage> {
|
||||
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<StarLockRegisterPage> {
|
||||
children: <Widget>[
|
||||
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<StarLockRegisterPage> {
|
||||
height: 30.w,
|
||||
),
|
||||
),
|
||||
hintText:
|
||||
state.isIphoneType.value ? '请输入手机号'.tr : '请输入邮箱'.tr,
|
||||
hintText: state.isIphoneType.value ? '请输入手机号'.tr : '请输入邮箱'.tr,
|
||||
keyboardType: TextInputType.number,
|
||||
inputFormatters: <TextInputFormatter>[
|
||||
// FilteringTextInputFormatter.allow(RegExp('[0-9]')),
|
||||
@ -236,7 +248,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
|
||||
height: 30.w,
|
||||
),
|
||||
),
|
||||
hintText:'请输入密码'.tr,
|
||||
hintText: '请输入密码'.tr,
|
||||
inputFormatters: <TextInputFormatter>[
|
||||
LengthLimitingTextInputFormatter(20),
|
||||
]),
|
||||
@ -282,8 +294,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
|
||||
height: 30.w,
|
||||
),
|
||||
),
|
||||
hintText:
|
||||
'请输入验证码'.tr,
|
||||
hintText: '请输入验证码'.tr,
|
||||
inputFormatters: <TextInputFormatter>[
|
||||
LengthLimitingTextInputFormatter(20),
|
||||
]),
|
||||
@ -292,29 +303,29 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
|
||||
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: <String, Object>{
|
||||
'countryCode': state.countryCode,
|
||||
'account': state.phoneOrEmailStr.value
|
||||
});
|
||||
state.xWidth.value =
|
||||
(result! as Map<String, dynamic>)['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: <String, Object>{
|
||||
'countryCode': state.countryCode,
|
||||
'account': state.phoneOrEmailStr.value
|
||||
});
|
||||
state.xWidth.value =
|
||||
(result! as Map<String, dynamic>)['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<StarLockRegisterPage> {
|
||||
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: <String, String>{
|
||||
'url': XSConstantMacro.userAgreementURL,
|
||||
'title': '用户协议'.tr
|
||||
});
|
||||
Get.toNamed(Routers.webviewShowPage,
|
||||
arguments: <String, String>{
|
||||
'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: <String, String>{
|
||||
'url': XSConstantMacro.privacyPolicyURL,
|
||||
'title': '隐私政策'.tr
|
||||
});
|
||||
Get.toNamed(Routers.webviewShowPage,
|
||||
arguments: <String, String>{
|
||||
'url': XSConstantMacro.privacyPolicyURL,
|
||||
'title': '隐私政策'.tr
|
||||
});
|
||||
},
|
||||
)),
|
||||
],
|
||||
|
||||
@ -9,18 +9,24 @@ import 'package:get/get.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:star_lock/flavors.dart';
|
||||
import 'package:star_lock/login/login/starLock_login_logic.dart';
|
||||
import 'package:star_lock/login/register/entity/checkIP_entity.dart';
|
||||
import 'package:star_lock/mine/about/debug/debug_tool.dart';
|
||||
import 'package:star_lock/network/api_provider.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/network/start_chart_api.dart';
|
||||
import 'package:star_lock/talk/starChart/handle/impl/debug_Info_model.dart';
|
||||
import 'package:star_lock/talk/starChart/status/appLifecycle_observer.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import 'package:star_lock/tools/bugly/bugly_tool.dart';
|
||||
import 'package:star_lock/tools/device_info_service.dart';
|
||||
import 'package:star_lock/tools/eventBusEventManage.dart';
|
||||
import 'package:star_lock/tools/jverify_one_click_login.dart';
|
||||
import 'package:star_lock/tools/platform_info_services.dart';
|
||||
import 'package:star_lock/tools/push/notification_service.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';
|
||||
import 'package:star_lock/translations/trans_lib.dart';
|
||||
|
||||
import 'apm/apm_helper.dart';
|
||||
@ -99,4 +105,21 @@ Future<void> privacySDKInitialization() async {
|
||||
final XSJPushProvider jpushProvider = XSJPushProvider();
|
||||
await jpushProvider.initJPushService();
|
||||
NotificationService().init(); // 初始化通知服务
|
||||
|
||||
/// 检查ip如果属于国内才进行初始化
|
||||
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: '');
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
String currentLanguage =
|
||||
CurrentLocaleTool.getCurrentLocaleString(); // 当前选择语言
|
||||
// 判断如果ip是国内的且选的是中文才初始化一键登录
|
||||
if (entity.data!.abbreviation?.toLowerCase() == 'cn' &&
|
||||
currentLanguage == 'zh_CN') {
|
||||
// 初始化一键登录服务
|
||||
final StarLockLoginLogic loginLogic = Get.put(StarLockLoginLogic());
|
||||
await JverifyOneClickLoginManage();
|
||||
loginLogic.state.isCheckVerifyEnable.value =
|
||||
await JverifyOneClickLoginManage().checkVerifyEnable();
|
||||
eventBus.fire(AgreePrivacyAgreement());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -333,6 +333,16 @@ class AuthorizedAdminLogic extends BaseGetXController {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
|
||||
// 监听输入框变化
|
||||
state.emailOrPhoneController.addListener(() {
|
||||
state.emailOrPhone.value = state.emailOrPhoneController.text;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
super.onReady();
|
||||
|
||||
@ -10,6 +10,7 @@ import 'package:star_lock/tools/dateTool.dart';
|
||||
import 'package:star_lock/tools/pickers/pickers.dart';
|
||||
import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart';
|
||||
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
|
||||
import 'package:star_lock/tools/regularExpression.dart';
|
||||
import 'package:star_lock/tools/showTipView.dart';
|
||||
import 'package:star_lock/tools/storage.dart';
|
||||
|
||||
@ -114,29 +115,32 @@ class _AuthorizedAdminPageState extends State<AuthorizedAdminPage>
|
||||
// isHaveRightWidget: true,
|
||||
// rightWidget: getTFWidget(true, '请输入手机号或者邮箱'.tr, 1)),
|
||||
perpetualKeyWidget('接收者'.tr, '请输入手机号或者邮箱'.tr),
|
||||
CommonItem(
|
||||
leftTitel: '国家/地区'.tr,
|
||||
rightTitle: '',
|
||||
isHaveLine: true,
|
||||
isHaveRightWidget: true,
|
||||
isHaveDirection: true,
|
||||
rightWidget: Text(
|
||||
'${state.countryName.value} +${state.countryCode.value}',
|
||||
textAlign: TextAlign.end,
|
||||
style:
|
||||
TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||
),
|
||||
action: () async {
|
||||
final Object? result = await Navigator.pushNamed(
|
||||
context, Routers.selectCountryRegionPage);
|
||||
if (result != null) {
|
||||
result as Map<String, dynamic>;
|
||||
state.countryCode.value = result['code'];
|
||||
state.countryName.value = result['countryName'];
|
||||
setState(() {});
|
||||
}
|
||||
},
|
||||
),
|
||||
Obx(() => Visibility(
|
||||
visible: RegularExpression()
|
||||
.isPhoneNumber(logic.state.emailOrPhone.value),
|
||||
child: CommonItem(
|
||||
leftTitel: '国家/地区'.tr,
|
||||
rightTitle: '',
|
||||
isHaveLine: true,
|
||||
isHaveRightWidget: true,
|
||||
isHaveDirection: true,
|
||||
rightWidget: Text(
|
||||
'${state.countryName.value} +${state.countryCode.value}',
|
||||
textAlign: TextAlign.end,
|
||||
style: TextStyle(
|
||||
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||
),
|
||||
action: () async {
|
||||
final Object? result = await Navigator.pushNamed(
|
||||
context, Routers.selectCountryRegionPage);
|
||||
if (result != null) {
|
||||
result as Map<String, dynamic>;
|
||||
state.countryCode.value = result['code'];
|
||||
state.countryName.value = result['countryName'];
|
||||
setState(() {});
|
||||
}
|
||||
},
|
||||
))),
|
||||
KeyNameItem(
|
||||
leftTitel: '姓名'.tr,
|
||||
rightTitle: '请输入'.tr,
|
||||
@ -268,6 +272,10 @@ class _AuthorizedAdminPageState extends State<AuthorizedAdminPage>
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
color: AppColors.greyLineColor, // 设置边框颜色
|
||||
height: 2.0.h, //
|
||||
)
|
||||
],
|
||||
);
|
||||
@ -571,6 +579,9 @@ class _AuthorizedAdminPageState extends State<AuthorizedAdminPage>
|
||||
BorderSide(width: 0, color: Colors.transparent)),
|
||||
contentPadding: const EdgeInsets.symmetric(vertical: 0),
|
||||
),
|
||||
onChanged: (value) {
|
||||
logic.update();
|
||||
},
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
|
||||
@ -6,6 +6,7 @@ import 'package:star_lock/tools/dateTool.dart';
|
||||
class AuthorizedAdminState {
|
||||
final TextEditingController emailOrPhoneController =
|
||||
TextEditingController(); //邮箱/手机号输入框
|
||||
RxString emailOrPhone = ''.obs; // 在logic的state中添加一个Rx变量
|
||||
final TextEditingController keyNameController =
|
||||
TextEditingController(); //钥匙名输入框
|
||||
late TabController tabController;
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockSet/basicInformation/basicInformation/KeyDetailEntity.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
@ -57,4 +56,13 @@ class VolumeAuthorizationLockLogic extends BaseGetXController {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
|
||||
// 监听输入框变化
|
||||
state.emailOrPhoneController.addListener(() {
|
||||
state.emailOrPhone.value = state.emailOrPhoneController.text;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
@ -11,6 +10,7 @@ import 'package:star_lock/main/lockDetail/authorizedAdmin/volumeAuthorizationLoc
|
||||
import 'package:star_lock/tools/pickers/pickers.dart';
|
||||
import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart';
|
||||
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
|
||||
import 'package:star_lock/tools/regularExpression.dart';
|
||||
import 'package:star_lock/tools/showTipView.dart';
|
||||
|
||||
import '../../../../appRouters.dart';
|
||||
@ -90,40 +90,38 @@ class _VolumeAuthorizationLockPageState
|
||||
isHaveLine: true,
|
||||
isHaveRightWidget: true,
|
||||
rightWidget: getTFWidget(
|
||||
true,
|
||||
'请输入手机号或者邮箱'.tr,
|
||||
state.emailOrPhoneController)),
|
||||
CommonItem(
|
||||
leftTitel: '国家/地区'.tr,
|
||||
rightTitle: '',
|
||||
isHaveLine: true,
|
||||
isHaveRightWidget: true,
|
||||
isHaveDirection: true,
|
||||
rightWidget: Text(
|
||||
'${state.countryName.value} +${state.countryCode.value}',
|
||||
textAlign: TextAlign.end,
|
||||
style:
|
||||
TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||
),
|
||||
action: () async {
|
||||
final Object? result = await Navigator.pushNamed(
|
||||
context, Routers.selectCountryRegionPage);
|
||||
if (result != null) {
|
||||
result as Map<String, dynamic>;
|
||||
state.countryCode.value = result['code'];
|
||||
state.countryName.value = result['countryName'];
|
||||
// setState(() {});
|
||||
}
|
||||
},
|
||||
),
|
||||
true, '请输入手机号或者邮箱'.tr, state.emailOrPhoneController)),
|
||||
Obx(() => Visibility(
|
||||
visible: RegularExpression()
|
||||
.isPhoneNumber(logic.state.emailOrPhone.value),
|
||||
child: CommonItem(
|
||||
leftTitel: '国家/地区'.tr,
|
||||
rightTitle: '',
|
||||
isHaveLine: true,
|
||||
isHaveRightWidget: true,
|
||||
isHaveDirection: true,
|
||||
rightWidget: Text(
|
||||
'${state.countryName.value} +${state.countryCode.value}',
|
||||
textAlign: TextAlign.end,
|
||||
style: TextStyle(
|
||||
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||
),
|
||||
action: () async {
|
||||
final Object? result = await Navigator.pushNamed(
|
||||
context, Routers.selectCountryRegionPage);
|
||||
if (result != null) {
|
||||
result as Map<String, dynamic>;
|
||||
state.countryCode.value = result['code'];
|
||||
state.countryName.value = result['countryName'];
|
||||
// setState(() {});
|
||||
}
|
||||
},
|
||||
))),
|
||||
CommonItem(
|
||||
leftTitel: '姓名'.tr,
|
||||
rightTitle: '',
|
||||
isHaveRightWidget: true,
|
||||
rightWidget: getTFWidget(
|
||||
false,
|
||||
'请输入'.tr,
|
||||
state.keyNameController)),
|
||||
rightWidget: getTFWidget(false, '请输入'.tr, state.keyNameController)),
|
||||
Container(height: 10.h),
|
||||
],
|
||||
);
|
||||
@ -186,7 +184,8 @@ class _VolumeAuthorizationLockPageState
|
||||
: state.lockIdList.length.toString(),
|
||||
isHaveDirection: true,
|
||||
action: () async {
|
||||
final result = await Get.toNamed(Routers.massSendLockGroupListPage,
|
||||
final result = await Get.toNamed(
|
||||
Routers.massSendLockGroupListPage,
|
||||
arguments: <String, Object>{
|
||||
'keyLimits': '1',
|
||||
'lockIdList': state.lockIdList.value
|
||||
|
||||
@ -4,8 +4,11 @@ import 'package:get/get.dart';
|
||||
|
||||
class VolumeAuthorizationLockState {
|
||||
final FlutterContactPicker contactPicker = FlutterContactPicker();
|
||||
final TextEditingController emailOrPhoneController = TextEditingController(); //邮箱/手机号输入框
|
||||
final TextEditingController keyNameController = TextEditingController(); //钥匙名输入框
|
||||
final TextEditingController emailOrPhoneController =
|
||||
TextEditingController(); //邮箱/手机号输入框
|
||||
RxString emailOrPhone = ''.obs; // 在logic的state中添加一个Rx变量
|
||||
final TextEditingController keyNameController =
|
||||
TextEditingController(); //钥匙名输入框
|
||||
late Contact contact;
|
||||
RxList<int> lockIdList = <int>[].obs;
|
||||
RxBool isSendSuccess = false.obs;
|
||||
|
||||
@ -80,7 +80,7 @@ class AddICCardLogic extends BaseGetXController {
|
||||
final List<int> token = reply.data.sublist(5, 9);
|
||||
final List<String> saveStrList = changeIntListToStringList(token);
|
||||
Storage.setStringList(saveBlueToken, saveStrList);
|
||||
// AppLog.log('添加卡token:$token');
|
||||
AppLog.log('添加卡token:$token');
|
||||
|
||||
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
|
||||
keyID: '1',
|
||||
@ -107,6 +107,14 @@ class AddICCardLogic extends BaseGetXController {
|
||||
token: token,
|
||||
isBeforeAddUser: false);
|
||||
break;
|
||||
case 0xFE:
|
||||
case 12:
|
||||
// 管理员已满
|
||||
state.ifAddState.value = false;
|
||||
showToast('管理员已满'.tr, something: () {
|
||||
Get.back();
|
||||
});
|
||||
break;
|
||||
default:
|
||||
//失败
|
||||
state.ifAddState.value = false;
|
||||
@ -146,6 +154,7 @@ class AddICCardLogic extends BaseGetXController {
|
||||
Get.close(1);
|
||||
break;
|
||||
case 0xFE:
|
||||
case 0x12:
|
||||
// 管理员已满
|
||||
showToast('管理员已满'.tr);
|
||||
Get.close(1);
|
||||
|
||||
@ -28,6 +28,7 @@ class CardListLogic extends BaseGetXController {
|
||||
|
||||
// 获取解析后的数据
|
||||
late StreamSubscription<Reply> _replySubscription;
|
||||
|
||||
void _initReplySubscription() {
|
||||
_replySubscription =
|
||||
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) {
|
||||
@ -69,11 +70,15 @@ class CardListLogic extends BaseGetXController {
|
||||
userID: (await Storage.getUid())!,
|
||||
cardNo: state.deletCardNo,
|
||||
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',
|
||||
@ -116,11 +121,15 @@ class CardListLogic extends BaseGetXController {
|
||||
userID: (await Storage.getUid())!,
|
||||
cardNo: state.deletCardNo,
|
||||
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',
|
||||
@ -193,6 +202,7 @@ class CardListLogic extends BaseGetXController {
|
||||
|
||||
// 监听修改完详情之后刷新列表
|
||||
late StreamSubscription _teamEvent;
|
||||
|
||||
void _initRefreshAction() {
|
||||
_teamEvent = eventBus
|
||||
.on<OtherTypeRefreshListEvent>()
|
||||
@ -238,8 +248,9 @@ class CardListLogic extends BaseGetXController {
|
||||
if (isDemoMode == false) {
|
||||
_initReplySubscription();
|
||||
|
||||
_initRefreshAction();
|
||||
// _initRefreshAction();
|
||||
}
|
||||
await getICCardListData(isRefresh: true);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@ -31,24 +31,24 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
|
||||
final CardListLogic logic = Get.put(CardListLogic());
|
||||
final CardListState state = Get.find<CardListLogic>().state;
|
||||
|
||||
Future<void> getHttpData({required bool isRefresh}) async {
|
||||
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
|
||||
if (isDemoMode == false) {
|
||||
logic
|
||||
.getICCardListData(isRefresh: isRefresh)
|
||||
.then((FingerprintListDataEntity value) {
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
// Future<void> logic.getICCardListData({required bool isRefresh}) async {
|
||||
// final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
|
||||
// if (isDemoMode == false) {
|
||||
// logic
|
||||
// .getICCardListData(isRefresh: isRefresh)
|
||||
// .then((FingerprintListDataEntity value) {
|
||||
// if (mounted) {
|
||||
// setState(() {});
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
getHttpData(isRefresh: true);
|
||||
// logic.getICCardListData(isRefresh: true);
|
||||
}
|
||||
|
||||
@override
|
||||
@ -92,17 +92,17 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
|
||||
),
|
||||
body: EasyRefreshTool(
|
||||
onRefresh: () {
|
||||
getHttpData(isRefresh: true);
|
||||
logic.getICCardListData(isRefresh: true);
|
||||
},
|
||||
onLoad: () {
|
||||
getHttpData(isRefresh: false);
|
||||
logic.getICCardListData(isRefresh: false);
|
||||
},
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
KeySearchWidget(
|
||||
editingController: state.searchController,
|
||||
onSubmittedAction: () {
|
||||
getHttpData(isRefresh: true);
|
||||
logic.getICCardListData(isRefresh: true);
|
||||
},
|
||||
),
|
||||
SizedBox(height: 20.h),
|
||||
@ -115,10 +115,10 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
|
||||
'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入
|
||||
})!
|
||||
.then((value) {
|
||||
getHttpData(isRefresh: true);
|
||||
logic.getICCardListData(isRefresh: true);
|
||||
});
|
||||
// if (data != null) {
|
||||
// getHttpData(isRefresh: true);
|
||||
// logic.getICCardListData(isRefresh: true);
|
||||
// }
|
||||
},
|
||||
),
|
||||
@ -180,9 +180,9 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
|
||||
arguments: <String, FingerprintItemData>{
|
||||
'fingerprintItemData': fingerprintItemData,
|
||||
})!
|
||||
.then((value) => getHttpData(isRefresh: true));
|
||||
.then((value) => logic.getICCardListData(isRefresh: true));
|
||||
// if (data != null) {
|
||||
// getHttpData(isRefresh: true);
|
||||
// logic.getICCardListData(isRefresh: true);
|
||||
// }
|
||||
}),
|
||||
);
|
||||
|
||||
@ -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!,
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
@ -17,7 +16,8 @@ import 'massSendElectronicKey_logic.dart';
|
||||
import 'massSendElectronicKey_state.dart';
|
||||
|
||||
class MassSendElectronicKeyPage extends StatefulWidget {
|
||||
const MassSendElectronicKeyPage({required this.type, Key? key}) : super(key: key);
|
||||
const MassSendElectronicKeyPage({required this.type, Key? key})
|
||||
: super(key: key);
|
||||
final String type;
|
||||
|
||||
@override
|
||||
@ -26,8 +26,10 @@ class MassSendElectronicKeyPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
||||
final MassSendElectronicKeyLogic logic = Get.put(MassSendElectronicKeyLogic());
|
||||
final MassSendElectronicKeyState state = Get.find<MassSendElectronicKeyLogic>().state;
|
||||
final MassSendElectronicKeyLogic logic =
|
||||
Get.put(MassSendElectronicKeyLogic());
|
||||
final MassSendElectronicKeyState state =
|
||||
Get.find<MassSendElectronicKeyLogic>().state;
|
||||
|
||||
@override
|
||||
initState() {
|
||||
@ -47,9 +49,7 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
||||
state.type.value = widget.type;
|
||||
|
||||
return SingleChildScrollView(
|
||||
child: state.isDemoMode
|
||||
? indexChangeWidget()
|
||||
: Obx(indexChangeWidget),
|
||||
child: state.isDemoMode ? indexChangeWidget() : Obx(indexChangeWidget),
|
||||
);
|
||||
}
|
||||
|
||||
@ -153,25 +153,25 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
Obx(() => CommonItem(
|
||||
leftTitel: '接收者'.tr,
|
||||
rightTitle: state.receiverList.value.isEmpty
|
||||
? '请添加'.tr
|
||||
: state.receiverList.value.length.toString(),
|
||||
isHaveLine: true,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
Navigator.pushNamed(context, Routers.massSendReceiverPage,
|
||||
arguments: <String, List>{
|
||||
'lockUserList': state.receiverList.value,
|
||||
}).then((Object? value) {
|
||||
if (value != null) {
|
||||
value as Map<String, dynamic>;
|
||||
state.receiverList.value = value['lockUserList'];
|
||||
// setState(() {});
|
||||
}
|
||||
});
|
||||
},
|
||||
)),
|
||||
leftTitel: '接收者'.tr,
|
||||
rightTitle: state.receiverList.value.isEmpty
|
||||
? '请添加'.tr
|
||||
: state.receiverList.value.length.toString(),
|
||||
isHaveLine: true,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
Navigator.pushNamed(context, Routers.massSendReceiverPage,
|
||||
arguments: <String, List>{
|
||||
'lockUserList': state.receiverList.value,
|
||||
}).then((Object? value) {
|
||||
if (value != null) {
|
||||
value as Map<String, dynamic>;
|
||||
state.receiverList.value = value['lockUserList'];
|
||||
// setState(() {});
|
||||
}
|
||||
});
|
||||
},
|
||||
)),
|
||||
CommonItem(
|
||||
leftTitel: '国家/地区'.tr,
|
||||
rightTitle: '',
|
||||
@ -202,7 +202,8 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
||||
: state.lockIdList.length.toString(),
|
||||
isHaveDirection: true,
|
||||
action: () async {
|
||||
final result = await Get.toNamed(Routers.massSendLockGroupListPage,
|
||||
final result = await Get.toNamed(
|
||||
Routers.massSendLockGroupListPage,
|
||||
arguments: <String, Object>{
|
||||
'keyLimits': '2',
|
||||
'lockIdList': state.lockIdList
|
||||
@ -235,7 +236,8 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
||||
PDuration selectDate =
|
||||
PDuration.parse(DateTime.tryParse(state.beginTime.value));
|
||||
Pickers.showDatePicker(context,
|
||||
selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
||||
selectDate: selectDate,
|
||||
mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
||||
state.beginTime.value = DateTool().getYMDHNDateString(p, 1);
|
||||
});
|
||||
})),
|
||||
@ -244,8 +246,11 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
||||
rightTitle: state.endTime.value,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
PDuration selectDate = PDuration.parse(DateTime.tryParse(state.endTime.value));
|
||||
Pickers.showDatePicker(context, selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
||||
PDuration selectDate =
|
||||
PDuration.parse(DateTime.tryParse(state.endTime.value));
|
||||
Pickers.showDatePicker(context,
|
||||
selectDate: selectDate,
|
||||
mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
||||
state.endTime.value = DateTool().getYMDHNDateString(p, 1);
|
||||
});
|
||||
})),
|
||||
@ -279,14 +284,14 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
||||
isHaveDirection: true,
|
||||
isHaveLine: true,
|
||||
action: () async {
|
||||
var result =
|
||||
await Get.toNamed(Routers.seletKeyCyclicDatePage, arguments: <String, Object>{
|
||||
'validityValue': state.weekdaysList.value,
|
||||
'starDate': state.beginTime.value,
|
||||
'endDate': state.endTime.value,
|
||||
'starTime': state.effectiveDateTime.value,
|
||||
'endTime': state.failureDateTime.value
|
||||
});
|
||||
var result = await Get.toNamed(Routers.seletKeyCyclicDatePage,
|
||||
arguments: <String, Object>{
|
||||
'validityValue': state.weekdaysList.value,
|
||||
'starDate': state.beginTime.value,
|
||||
'endDate': state.endTime.value,
|
||||
'starTime': state.effectiveDateTime.value,
|
||||
'endTime': state.failureDateTime.value
|
||||
});
|
||||
if (result != null && result.isNotEmpty) {
|
||||
state.weekdaysList.value = result['validityValue'];
|
||||
state.beginTime.value = result['starDate'];
|
||||
@ -376,5 +381,4 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -39,6 +39,11 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
|
||||
// 监听输入框变化
|
||||
state.emailOrPhoneController.addListener(() {
|
||||
state.emailOrPhone.value = state.emailOrPhoneController.text;
|
||||
});
|
||||
|
||||
Storage.getBool(ifIsDemoModeOrNot)
|
||||
.then((bool? value) => state.isDemoMode = value ?? false);
|
||||
}
|
||||
@ -186,10 +191,11 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
|
||||
final String getMobile = (await Storage.getMobile())!;
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
ApmHelper.instance.trackEvent('add_electronic_key', {
|
||||
'lock_name':BlueManage().connectDeviceName,
|
||||
'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
|
||||
'date':DateTool().getNowDateWithType(1),
|
||||
'add_electronic_key_result':'成功',
|
||||
'lock_name': BlueManage().connectDeviceName,
|
||||
'account':
|
||||
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
|
||||
'date': DateTool().getNowDateWithType(1),
|
||||
'add_electronic_key_result': '成功',
|
||||
});
|
||||
|
||||
emailOrPhone = state.emailOrPhoneController.text;
|
||||
@ -202,10 +208,11 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
|
||||
eventBus.fire(ElectronicKeyListRefreshUI());
|
||||
} else {
|
||||
ApmHelper.instance.trackEvent('add_electronic_key', {
|
||||
'lock_name':BlueManage().connectDeviceName,
|
||||
'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
|
||||
'date':DateTool().getNowDateWithType(1),
|
||||
'add_electronic_key_result':'${entity.errorCode}--${entity.errorMsg}',
|
||||
'lock_name': BlueManage().connectDeviceName,
|
||||
'account':
|
||||
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
|
||||
'date': DateTool().getNowDateWithType(1),
|
||||
'add_electronic_key_result': '${entity.errorCode}--${entity.errorMsg}',
|
||||
});
|
||||
|
||||
emailOrPhone = null;
|
||||
|
||||
@ -17,6 +17,7 @@ import 'package:star_lock/tools/dateTool.dart';
|
||||
import 'package:star_lock/tools/pickers/pickers.dart';
|
||||
import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart';
|
||||
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
|
||||
import 'package:star_lock/tools/regularExpression.dart';
|
||||
import 'package:star_lock/tools/showTipView.dart';
|
||||
import 'package:star_lock/tools/submitBtn.dart';
|
||||
|
||||
@ -114,29 +115,33 @@ class _SendElectronicKeyViewState extends State<SendElectronicKeyView>
|
||||
// 1,
|
||||
// logic)),
|
||||
perpetualKeyWidget(logic, '接收者'.tr, '请输入手机号或者邮箱'.tr),
|
||||
CommonItem(
|
||||
leftTitel: '国家/地区'.tr,
|
||||
rightTitle: '',
|
||||
isHaveLine: true,
|
||||
isHaveRightWidget: true,
|
||||
isHaveDirection: true,
|
||||
rightWidget: Text(
|
||||
'${logic.state.countryName} +${logic.state.countryCode}',
|
||||
textAlign: TextAlign.end,
|
||||
style:
|
||||
TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||
),
|
||||
action: () async {
|
||||
final Object? result = await Navigator.pushNamed(
|
||||
context, Routers.selectCountryRegionPage);
|
||||
if (result != null) {
|
||||
result as Map<String, dynamic>;
|
||||
logic.state.countryCode = result['code'];
|
||||
logic.state.countryName = result['countryName'];
|
||||
logic.update();
|
||||
}
|
||||
},
|
||||
),
|
||||
Obx(() => Visibility(
|
||||
visible: RegularExpression()
|
||||
.isPhoneNumber(logic.state.emailOrPhone.value),
|
||||
child: CommonItem(
|
||||
leftTitel: '国家/地区'.tr,
|
||||
rightTitle: '',
|
||||
isHaveLine: true,
|
||||
isHaveRightWidget: true,
|
||||
isHaveDirection: true,
|
||||
rightWidget: Text(
|
||||
'${logic.state.countryName} +${logic.state.countryCode}',
|
||||
textAlign: TextAlign.end,
|
||||
style: TextStyle(
|
||||
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||
),
|
||||
action: () async {
|
||||
final Object? result = await Navigator.pushNamed(
|
||||
context, Routers.selectCountryRegionPage);
|
||||
if (result != null) {
|
||||
result as Map<String, dynamic>;
|
||||
logic.state.countryCode = result['code'];
|
||||
logic.state.countryName = result['countryName'];
|
||||
logic.update();
|
||||
}
|
||||
},
|
||||
),
|
||||
)),
|
||||
CommonItem(
|
||||
leftTitel: '姓名'.tr,
|
||||
rightTitle: '',
|
||||
@ -526,7 +531,8 @@ class _SendElectronicKeyViewState extends State<SendElectronicKeyView>
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
if (logic.emailOrPhone != null)
|
||||
if (logic.emailOrPhone != null &&
|
||||
logic.state.currentLanguage.value == 'zh_CN')
|
||||
OutLineBtn(
|
||||
btnName: '微信通知'.tr,
|
||||
onClick: () {
|
||||
@ -589,6 +595,9 @@ class _SendElectronicKeyViewState extends State<SendElectronicKeyView>
|
||||
),
|
||||
style: TextStyle(
|
||||
fontSize: 22.sp, textBaseline: TextBaseline.alphabetic),
|
||||
onChanged: (String value) {
|
||||
logic.update();
|
||||
},
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
|
||||
@ -2,10 +2,15 @@ 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 {
|
||||
//循环
|
||||
|
||||
TextEditingController emailOrPhoneController =
|
||||
TextEditingController(); //邮箱/手机号输入框
|
||||
// 监听输入框变化
|
||||
RxString emailOrPhone = ''.obs; // 在logic的state中添加一个Rx变量
|
||||
TextEditingController keyNameController = TextEditingController(); //钥匙名输入框
|
||||
TextEditingController realNameController = TextEditingController(); //真实姓名输入框
|
||||
TextEditingController idCardController = TextEditingController(); //身份证号输入框
|
||||
@ -37,5 +42,8 @@ class SendElectronicKeyViewState {
|
||||
final String timeLimitTips = '接收者在有效期内可以不限次数使用'.tr; //限时
|
||||
final String permanentTips = '接收者可以使用此App开关锁'.tr; //永久
|
||||
final String onceLimitTips = '单次钥匙有效期为1小时,只能使用一次'.tr; //单次
|
||||
final String cycleLimitTips = '接收者可以在有效期内的固定时间段里,不限次数使用'.tr; //循环
|
||||
final String cycleLimitTips = '接收者可以在有效期内的固定时间段里,不限次数使用'.tr;
|
||||
|
||||
RxString currentLanguage =
|
||||
CurrentLocaleTool.getCurrentLocaleString().obs; // 当前选择语言
|
||||
}
|
||||
|
||||
@ -95,6 +95,9 @@ class _SendEmailNotificationPageState extends State<SendEmailNotificationPage> {
|
||||
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,
|
||||
|
||||
@ -54,7 +54,7 @@ class AddFaceLogic extends BaseGetXController {
|
||||
|
||||
// 最大图片数
|
||||
state.maxRegCount.value = reply.data[11];
|
||||
// AppLog.log('人脸开始state.maxRegCount.value:${state.maxRegCount.value}');
|
||||
AppLog.log('人脸开始state.maxRegCount.value:${state.maxRegCount.value}');
|
||||
break;
|
||||
case 0x06:
|
||||
//无权限
|
||||
@ -89,6 +89,12 @@ class AddFaceLogic extends BaseGetXController {
|
||||
isBeforeAddUser: false
|
||||
);
|
||||
break;
|
||||
case 0xFE:
|
||||
case 12:
|
||||
// 管理员已满
|
||||
showToast('管理员已满'.tr);
|
||||
Get.close(1);
|
||||
break;
|
||||
default:
|
||||
//失败
|
||||
state.ifAddState.value = false;
|
||||
@ -112,9 +118,9 @@ class AddFaceLogic extends BaseGetXController {
|
||||
Get.close(1);
|
||||
break;
|
||||
case 0xFE:
|
||||
case 12:
|
||||
// 管理员已满
|
||||
showToast('管理员已满'.tr);
|
||||
state.ifAddState.value = false;
|
||||
Get.close(1);
|
||||
break;
|
||||
case 0xFD:
|
||||
@ -138,7 +144,7 @@ class AddFaceLogic extends BaseGetXController {
|
||||
// 添加人脸中
|
||||
// 当前注册数
|
||||
state.regIndex.value = reply.data[6];
|
||||
// AppLog.log('注册人脸过程state.regIndex.value:${state.regIndex.value}');
|
||||
AppLog.log('注册人脸过程state.regIndex.value:${state.regIndex.value}');
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@ -22,6 +22,7 @@ class FaceListLogic extends BaseGetXController {
|
||||
|
||||
// 获取解析后的数据
|
||||
late StreamSubscription<Reply> _replySubscription;
|
||||
|
||||
void _initReplySubscription() {
|
||||
_replySubscription =
|
||||
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) {
|
||||
@ -77,11 +78,15 @@ class FaceListLogic extends BaseGetXController {
|
||||
userID: (await Storage.getUid())!,
|
||||
faceNo: state.deletFaceNo,
|
||||
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',
|
||||
@ -277,11 +282,15 @@ class FaceListLogic extends BaseGetXController {
|
||||
userID: (await Storage.getUid())!,
|
||||
faceNo: state.deletFaceNo,
|
||||
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',
|
||||
@ -348,8 +357,8 @@ class FaceListLogic extends BaseGetXController {
|
||||
lockId: state.lockId.value,
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast('删除成功'.tr, something: () {
|
||||
getFaceListData(isRefresh: true);
|
||||
showToast('删除成功'.tr, something: () async {
|
||||
await getFaceListData(isRefresh: true);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -366,8 +375,8 @@ class FaceListLogic extends BaseGetXController {
|
||||
lockId: state.lockId.value,
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast('重置成功'.tr, something: () {
|
||||
getFaceListData(isRefresh: true);
|
||||
showToast('重置成功'.tr, something: () async{
|
||||
await getFaceListData(isRefresh: true);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -403,11 +412,12 @@ class FaceListLogic extends BaseGetXController {
|
||||
|
||||
// 监听修改完详情之后刷新列表
|
||||
late StreamSubscription _teamEvent;
|
||||
|
||||
void _initRefreshAction() {
|
||||
_teamEvent = eventBus
|
||||
.on<OtherTypeRefreshListEvent>()
|
||||
.listen((OtherTypeRefreshListEvent event) {
|
||||
getFaceListData(isRefresh: true);
|
||||
.listen((OtherTypeRefreshListEvent event) async {
|
||||
await getFaceListData(isRefresh: true);
|
||||
});
|
||||
}
|
||||
|
||||
@ -420,7 +430,7 @@ class FaceListLogic extends BaseGetXController {
|
||||
if (isDemoMode == false) {
|
||||
_initReplySubscription();
|
||||
|
||||
_initRefreshAction();
|
||||
// _initRefreshAction();
|
||||
}
|
||||
}
|
||||
|
||||
@ -434,6 +444,7 @@ class FaceListLogic extends BaseGetXController {
|
||||
|
||||
// senderCheckingUserInfoCount();
|
||||
}
|
||||
getFaceListData(isRefresh: true);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
@ -31,24 +30,6 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
|
||||
final FaceListLogic logic = Get.put(FaceListLogic());
|
||||
final FaceListState state = Get.find<FaceListLogic>().state;
|
||||
|
||||
Future<void> getHttpData({required bool isRefresh}) async {
|
||||
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
|
||||
if (isDemoMode == false) {
|
||||
logic.getFaceListData(isRefresh: isRefresh).then((FingerprintListDataEntity value) {
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
getHttpData(isRefresh: true);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
@ -92,17 +73,17 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
|
||||
),
|
||||
body: EasyRefreshTool(
|
||||
onRefresh: () {
|
||||
getHttpData(isRefresh: true);
|
||||
logic.getFaceListData(isRefresh: true);
|
||||
},
|
||||
onLoad: () {
|
||||
getHttpData(isRefresh: false);
|
||||
logic.getFaceListData(isRefresh: false);
|
||||
},
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
KeySearchWidget(
|
||||
editingController: state.searchController,
|
||||
onSubmittedAction: () {
|
||||
getHttpData(isRefresh: true);
|
||||
logic.getFaceListData(isRefresh: true);
|
||||
},
|
||||
),
|
||||
SizedBox(
|
||||
@ -110,14 +91,15 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
|
||||
),
|
||||
Expanded(child: _buildMainUI()),
|
||||
AddBottomWhiteBtn(
|
||||
btnName:
|
||||
'添加人脸'.tr,
|
||||
btnName: '添加人脸'.tr,
|
||||
onClick: () async {
|
||||
await Get.toNamed(Routers.addFaceTypePage, arguments: <String, int>{
|
||||
await Get.toNamed(Routers.addFaceTypePage,
|
||||
arguments: <String, int>{
|
||||
'lockId': state.lockId.value,
|
||||
'fromType': 1 // 1从添加钥匙列表进入 2从考勤添加员工入口进入
|
||||
})!.then((value) {
|
||||
getHttpData(isRefresh: true);
|
||||
})!
|
||||
.then((value) {
|
||||
logic.getFaceListData(isRefresh: true);
|
||||
});
|
||||
},
|
||||
),
|
||||
@ -154,9 +136,11 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
|
||||
logic.getKeyType(getFaceItemData),
|
||||
logic.getKeyDateType(getFaceItemData), () async {
|
||||
await Get.toNamed(Routers.faceDetailPage,
|
||||
arguments: <String, FingerprintItemData>{
|
||||
arguments: <String, FingerprintItemData>{
|
||||
'faceItemData': getFaceItemData,
|
||||
})!.then((value) => getHttpData(isRefresh: true));
|
||||
})!
|
||||
.then((value) =>
|
||||
logic.getFaceListData(isRefresh: true));
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@ -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<Reply> _replySubscription;
|
||||
|
||||
void _initReplySubscription() {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
|
||||
_replySubscription =
|
||||
EventBusManager().eventBus!.on<Reply>().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<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey =
|
||||
await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList =
|
||||
changeStringListToIntList(privateKey!);
|
||||
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<String>? signKey =
|
||||
await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
final List<int> token = reply.data.sublist(5, 9);
|
||||
@ -78,30 +82,41 @@ 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;
|
||||
case 0xFE:
|
||||
case 12:
|
||||
// 管理员已满
|
||||
state.ifAddState.value = false;
|
||||
showToast('管理员已满'.tr, something: () {
|
||||
Get.back();
|
||||
});
|
||||
break;
|
||||
default:
|
||||
//失败
|
||||
state.ifAddState.value = false;
|
||||
showToast('添加指纹失败'.tr, something: (){
|
||||
showToast('添加指纹失败'.tr, something: () {
|
||||
Get.back();
|
||||
});
|
||||
break;
|
||||
@ -112,13 +127,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);
|
||||
@ -126,10 +140,12 @@ class AddFingerprintLogic extends BaseGetXController {
|
||||
Get.close(1);
|
||||
break;
|
||||
case 0xFE:
|
||||
// 管理员已满
|
||||
showToast('管理员已满'.tr);
|
||||
case 12:
|
||||
// 管理员已满
|
||||
state.ifAddState.value = false;
|
||||
Get.close(1);
|
||||
showToast('管理员已满'.tr, something: () {
|
||||
Get.back();
|
||||
});
|
||||
break;
|
||||
case 0xFD:
|
||||
// 用户已满
|
||||
@ -166,35 +182,37 @@ class AddFingerprintLogic extends BaseGetXController {
|
||||
Future<void> _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<int> fingerprintList = reply.data.sublist(reply.data.length - 2);
|
||||
final List<int> 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 +221,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 +241,8 @@ class AddFingerprintLogic extends BaseGetXController {
|
||||
|
||||
// 添加指纹开始
|
||||
Future<void> senderAddFingerprint() async {
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<String>? privateKey =
|
||||
await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
@ -232,90 +252,104 @@ class AddFingerprintLogic extends BaseGetXController {
|
||||
final List<int> 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<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
BlueManage().blueSendData(BlueManage().connectDeviceName,
|
||||
(BluetoothConnectionState deviceConnectionState) async {
|
||||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||||
final List<String>? privateKey =
|
||||
await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList =
|
||||
changeStringListToIntList(privateKey!);
|
||||
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<String>? signKey =
|
||||
await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> 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 +360,32 @@ class AddFingerprintLogic extends BaseGetXController {
|
||||
|
||||
// 取消添加指纹
|
||||
Future<void> senderCancelAddFingerprintCommand() async {
|
||||
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
BlueManage().blueSendData(BlueManage().connectDeviceName,
|
||||
(BluetoothConnectionState deviceConnectionState) async {
|
||||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||||
final List<String>? privateKey =
|
||||
await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList =
|
||||
changeStringListToIntList(privateKey!);
|
||||
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<String>? signKey =
|
||||
await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> 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 +395,54 @@ class AddFingerprintLogic extends BaseGetXController {
|
||||
}
|
||||
|
||||
// 添加指纹
|
||||
Future<void> addFingerprintsData() async{
|
||||
final AddFingerprintEntity entity = await ApiRepository.to.addFingerprintsData(
|
||||
Future<void> 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<void> updateFingerprintUserNoLoadData(String fingerprintId) async{
|
||||
final LoginEntity entity = await ApiRepository.to.updateFingerprintUserNoLoadData(
|
||||
fingerprintId: fingerprintId,
|
||||
lockId: state.lockId.value.toString(),
|
||||
fingerprintUserNo: state.fingerprintNumber.value,
|
||||
Future<void> 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 +470,4 @@ class AddFingerprintLogic extends BaseGetXController {
|
||||
|
||||
_replySubscription.cancel();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,6 +23,7 @@ class FingerprintListLogic extends BaseGetXController {
|
||||
|
||||
// 获取解析后的数据
|
||||
late StreamSubscription<Reply> _replySubscription;
|
||||
|
||||
void _initReplySubscription() {
|
||||
_replySubscription =
|
||||
EventBusManager().eventBus!.on<Reply>().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<PasswordKeyListEntity> mockNetworkDataRequest(
|
||||
Future<PasswordKeyListEntity> 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,11 +400,12 @@ class FingerprintListLogic extends BaseGetXController {
|
||||
|
||||
// 监听修改完详情之后刷新列表
|
||||
late StreamSubscription _teamEvent;
|
||||
|
||||
void _initRefreshAction() {
|
||||
_teamEvent = eventBus
|
||||
.on<OtherTypeRefreshListEvent>()
|
||||
.listen((OtherTypeRefreshListEvent event) {
|
||||
getFingerprintsListData(isRefresh: true);
|
||||
.listen((OtherTypeRefreshListEvent event) async {
|
||||
await getFingerprintsListData(isRefresh: true);
|
||||
});
|
||||
}
|
||||
|
||||
@ -449,7 +460,7 @@ class FingerprintListLogic extends BaseGetXController {
|
||||
if (isDemoMode == false) {
|
||||
_initReplySubscription();
|
||||
|
||||
_initRefreshAction();
|
||||
// _initRefreshAction();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||