Merge branch 'develop_sky' into 'canary_release_sky'
Develop sky See merge request StarlockTeam/app-starlock!259
This commit is contained in:
commit
61fa6c7e77
@ -1160,5 +1160,9 @@
|
|||||||
"锁语音包设置": "قفل مجموعة صوت",
|
"锁语音包设置": "قفل مجموعة صوت",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "ذكر صوت",
|
"男声": "ذكر صوت",
|
||||||
"女声": "صوت بنات"
|
"女声": "صوت بنات",
|
||||||
|
"您的图像和视频数据仅保留": "يتم الاحتفاظ ببيانات الصور والفيديو فقط",
|
||||||
|
"后图像和视频数据将会失效,开通": "بعد ذلك ، ستكون بيانات الصورة والفيديو غير صالحة ويتم تنشيطها",
|
||||||
|
"云存会员": "عضوية التخزين السحابي",
|
||||||
|
"服务,图像视频信息随心存!": "معلومات الخدمة والصور والفيديو في قلبك!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Заключване на настройките на гласовия пакет",
|
"锁语音包设置": "Заключване на настройките на гласовия пакет",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Мъжки глас",
|
"男声": "Мъжки глас",
|
||||||
"女声": "Женски глас"
|
"女声": "Женски глас",
|
||||||
|
"您的图像和视频数据仅保留": "Данните ви за изображения и видеоклипове се запазват само",
|
||||||
|
"后图像和视频数据将会失效,开通": "След това данните за изображението и видеото ще бъдат невалидни и активирани",
|
||||||
|
"云存会员": "Членство в Cloud Storage",
|
||||||
|
"服务,图像视频信息随心存!": "Информацията за обслужване, изображения и видео са във вашето сърце!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "ভয়েস প্যাকেজ সেটিংস লক করুন",
|
"锁语音包设置": "ভয়েস প্যাকেজ সেটিংস লক করুন",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "পুরুষের কণ্ঠ",
|
"男声": "পুরুষের কণ্ঠ",
|
||||||
"女声": "নারী কণ্ঠ"
|
"女声": "নারী কণ্ঠ",
|
||||||
|
"您的图像和视频数据仅保留": "আপনার চিত্র এবং ভিডিও ডেটা কেবল ধরে রাখা হয়",
|
||||||
|
"后图像和视频数据将会失效,开通": "এর পরে, চিত্র এবং ভিডিও ডেটা অবৈধ এবং সক্রিয় হবে",
|
||||||
|
"云存会员": "ক্লাউড স্টোরেজ সদস্যতা",
|
||||||
|
"服务,图像视频信息随心存!": "পরিষেবা, চিত্র এবং ভিডিও তথ্য আপনার হৃদয়ে!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Zamknout nastavení hlasového balíčku",
|
"锁语音包设置": "Zamknout nastavení hlasového balíčku",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Mužský hlas",
|
"男声": "Mužský hlas",
|
||||||
"女声": "Ženský hlas"
|
"女声": "Ženský hlas",
|
||||||
|
"您的图像和视频数据仅保留": "Uchovávají se pouze vaše obrazová data a data videí",
|
||||||
|
"后图像和视频数据将会失效,开通": "Poté budou obrazová a video data neplatná a aktivovaná",
|
||||||
|
"云存会员": "Členství v cloudovém úložišti",
|
||||||
|
"服务,图像视频信息随心存!": "Servis, obrazové a video informace jsou na prvním místě!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Lås stemmepakkeindstillinger",
|
"锁语音包设置": "Lås stemmepakkeindstillinger",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Mandlige stemmer",
|
"男声": "Mandlige stemmer",
|
||||||
"女声": "Kvindelige stemmer"
|
"女声": "Kvindelige stemmer",
|
||||||
|
"您的图像和视频数据仅保留": "Dine billed- og videodata opbevares kun",
|
||||||
|
"后图像和视频数据将会失效,开通": "Derefter vil billed- og videodataene være ugyldige og aktiveret",
|
||||||
|
"云存会员": "Medlemskab af Cloud Storage",
|
||||||
|
"服务,图像视频信息随心存!": "Service-, billed- og videoinformation er i dit hjerte!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Sperren von Sprachpaketeinstellungen",
|
"锁语音包设置": "Sperren von Sprachpaketeinstellungen",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Männliche Stimme",
|
"男声": "Männliche Stimme",
|
||||||
"女声": "Frauenstimme"
|
"女声": "Frauenstimme",
|
||||||
|
"您的图像和视频数据仅保留": "Ihre Bild- und Videodaten werden nur dann aufbewahrt",
|
||||||
|
"后图像和视频数据将会失效,开通": "Danach sind die Bild- und Videodaten ungültig und aktiviert",
|
||||||
|
"云存会员": "Cloud-Speicher-Mitgliedschaft",
|
||||||
|
"服务,图像视频信息随心存!": "Service-, Bild- und Videoinformationen liegen Ihnen am Herzen!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Ρυθμίσεις κλειδώματος πακέτου φωνής",
|
"锁语音包设置": "Ρυθμίσεις κλειδώματος πακέτου φωνής",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Ανδρική φωνή",
|
"男声": "Ανδρική φωνή",
|
||||||
"女声": "Γυναικεία φωνή"
|
"女声": "Γυναικεία φωνή",
|
||||||
|
"您的图像和视频数据仅保留": "Τα δεδομένα εικόνας και βίντεο διατηρούνται μόνο",
|
||||||
|
"后图像和视频数据将会失效,开通": "Μετά από αυτό, τα δεδομένα εικόνας και βίντεο θα είναι άκυρα και θα ενεργοποιηθούν",
|
||||||
|
"云存会员": "Συνδρομή Cloud Storage",
|
||||||
|
"服务,图像视频信息随心存!": "Οι πληροφορίες εξυπηρέτησης, εικόνας και βίντεο είναι στην καρδιά σας!"
|
||||||
}
|
}
|
||||||
@ -1167,5 +1167,9 @@
|
|||||||
"锁语音包设置": "Lock voice package settings",
|
"锁语音包设置": "Lock voice package settings",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "male voice",
|
"男声": "male voice",
|
||||||
"女声": "female voice"
|
"女声": "female voice",
|
||||||
|
"您的图像和视频数据仅保留": "Your image and video data is only retained",
|
||||||
|
"后图像和视频数据将会失效,开通": "After that, the image and video data will be invalid and activated",
|
||||||
|
"云存会员": "Cloud Storage Membership",
|
||||||
|
"服务,图像视频信息随心存!": "Service, image and video information are at your heart!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Configuración del paquete de voz de bloqueo",
|
"锁语音包设置": "Configuración del paquete de voz de bloqueo",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Voz masculina",
|
"男声": "Voz masculina",
|
||||||
"女声": "Voz femenina"
|
"女声": "Voz femenina",
|
||||||
|
"您的图像和视频数据仅保留": "Solo se conservan los datos de imagen y vídeo",
|
||||||
|
"后图像和视频数据将会失效,开通": "Después de eso, los datos de imagen y video no serán válidos y se activarán",
|
||||||
|
"云存会员": "Membresía de almacenamiento en la nube",
|
||||||
|
"服务,图像视频信息随心存!": "¡La información de servicio, imagen y video está en su corazón!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Lukustage häälepaketi seaded",
|
"锁语音包设置": "Lukustage häälepaketi seaded",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Meeste hääl",
|
"男声": "Meeste hääl",
|
||||||
"女声": "Naiste hääl"
|
"女声": "Naiste hääl",
|
||||||
|
"您的图像和视频数据仅保留": "Teie pildi- ja videoandmeid säilitatakse ainult",
|
||||||
|
"后图像和视频数据将会失效,开通": "Pärast seda on pildi- ja videoandmed kehtetud ja aktiveeritud",
|
||||||
|
"云存会员": "Pilvesalvestuse liikmelisus",
|
||||||
|
"服务,图像视频信息随心存!": "Teenindus-, pildi- ja videoteave on teie südames!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Lukitse äänipaketin asetukset",
|
"锁语音包设置": "Lukitse äänipaketin asetukset",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Miehen ääni",
|
"男声": "Miehen ääni",
|
||||||
"女声": "Naisten ääni"
|
"女声": "Naisten ääni",
|
||||||
|
"您的图像和视频数据仅保留": "Kuva- ja videotietosi säilytetään vain",
|
||||||
|
"后图像和视频数据将会失效,开通": "Sen jälkeen kuva- ja videotiedot ovat virheellisiä ja aktivoituvat",
|
||||||
|
"云存会员": "Pilvitallennustilan jäsenyys",
|
||||||
|
"服务,图像视频信息随心存!": "Palvelu-, kuva- ja videotiedot ovat sydämessäsi!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Paramètres du pack Lock Voice",
|
"锁语音包设置": "Paramètres du pack Lock Voice",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Voix masculine",
|
"男声": "Voix masculine",
|
||||||
"女声": "Voix de femmes"
|
"女声": "Voix de femmes",
|
||||||
|
"您的图像和视频数据仅保留": "Vos données d’image et de vidéo ne sont conservées que",
|
||||||
|
"后图像和视频数据将会失效,开通": "Après cela, les données de l’image et de la vidéo seront invalides et activées",
|
||||||
|
"云存会员": "Adhésion au stockage dans le cloud",
|
||||||
|
"服务,图像视频信息随心存!": "Le service, l’image et les informations vidéo sont au cœur de vos préoccupations !"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "הגדרות חבילת קול לנעול",
|
"锁语音包设置": "הגדרות חבילת קול לנעול",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "קול גבר",
|
"男声": "קול גבר",
|
||||||
"女声": "קול נשי"
|
"女声": "קול נשי",
|
||||||
|
"您的图像和视频数据仅保留": "נתוני התמונה והסרטונים נשמרים רק",
|
||||||
|
"后图像和视频数据将会失效,开通": "לאחר מכן, נתוני התמונה והווידאו לא יהיו חוקיים ויופעלו",
|
||||||
|
"云存会员": "חברות באחסון בענן",
|
||||||
|
"服务,图像视频信息随心存!": "מידע על שירות, תמונה ווידאו נמצאים בלב שלך!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "आवाज पैकेज सेटिंग्स ताला लगाएँ",
|
"锁语音包设置": "आवाज पैकेज सेटिंग्स ताला लगाएँ",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "पुरुष आवाज",
|
"男声": "पुरुष आवाज",
|
||||||
"女声": "महिला आवाज"
|
"女声": "महिला आवाज",
|
||||||
|
"您的图像和视频数据仅保留": "आपकी छवि और वीडियो डेटा केवल बनाए रखा जाता है",
|
||||||
|
"后图像和视频数据将会失效,开通": "उसके बाद, छवि और वीडियो डेटा अमान्य और सक्रिय हो जाएगा",
|
||||||
|
"云存会员": "क्लाउड स्टोरेज सदस्यता",
|
||||||
|
"服务,图像视频信息随心存!": "सेवा, छवि और वीडियो जानकारी आपके दिल में हैं!"
|
||||||
}
|
}
|
||||||
@ -1162,5 +1162,9 @@
|
|||||||
"锁语音包设置": "鎖語音包設定",
|
"锁语音包设置": "鎖語音包設定",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "男聲",
|
"男声": "男聲",
|
||||||
"女声": "女聲"
|
"女声": "女聲",
|
||||||
|
"您的图像和视频数据仅保留": "您的圖像和視頻數據僅保留",
|
||||||
|
"后图像和视频数据将会失效,开通": "后圖像和視頻數據將會失效,開通",
|
||||||
|
"云存会员": "雲存會員",
|
||||||
|
"服务,图像视频信息随心存!": "服務,圖像視頻資訊隨心存!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Postavke zaključavanja glasovnog paketa",
|
"锁语音包设置": "Postavke zaključavanja glasovnog paketa",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Muški glas",
|
"男声": "Muški glas",
|
||||||
"女声": "Ženski glas"
|
"女声": "Ženski glas",
|
||||||
|
"您的图像和视频数据仅保留": "Vaši podaci o slici i videozapisu zadržavaju se samo",
|
||||||
|
"后图像和视频数据将会失效,开通": "Nakon toga, slikovni i video podaci bit će nevažeći i aktivirani",
|
||||||
|
"云存会员": "Članstvo u pohrani u oblaku",
|
||||||
|
"服务,图像视频信息随心存!": "Informacije o usluzi, slikama i videozapisima su vam u srcu!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Hangcsomag zárolási beállításai",
|
"锁语音包设置": "Hangcsomag zárolási beállításai",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Férfi hang",
|
"男声": "Férfi hang",
|
||||||
"女声": "női hang"
|
"女声": "női hang",
|
||||||
|
"您的图像和视频数据仅保留": "A kép- és videóadatokat csak a rendszer őrzi meg",
|
||||||
|
"后图像和视频数据将会失效,开通": "Ezt követően a kép- és videóadatok érvénytelenek lesznek és aktiválódnak",
|
||||||
|
"云存会员": "Felhőalapú tárolási tagság",
|
||||||
|
"服务,图像视频信息随心存!": "A szolgáltatás, a képi és videós információk a szívedben vannak!"
|
||||||
}
|
}
|
||||||
@ -1167,5 +1167,9 @@
|
|||||||
"锁语音包设置": "Փակել ձայնային փաթեթի պարամետրերը",
|
"锁语音包设置": "Փակել ձայնային փաթեթի պարամետրերը",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "տղամարդկանց ձայն",
|
"男声": "տղամարդկանց ձայն",
|
||||||
"女声": "կանանց ձայն"
|
"女声": "կանանց ձայն",
|
||||||
|
"您的图像和视频数据仅保留": "Ձեր պատկերի եւ վիդեո տվյալները պահպանվում են միայն",
|
||||||
|
"后图像和视频数据将会失效,开通": "Դրանից հետո պատկերի եւ վիդեո տվյալները կլինեն անվավեր եւ կակտիվացվեն",
|
||||||
|
"云存会员": "Cloud Storage Membership",
|
||||||
|
"服务,图像视频信息随心存!": "Ծառայությունը, պատկերը եւ վիդեո տեղեկատվությունը ձեր սրտում են:"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Mengunci paket suara",
|
"锁语音包设置": "Mengunci paket suara",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "6 tahun sebelumnya",
|
"男声": "6 tahun sebelumnya",
|
||||||
"女声": "Suara wanita"
|
"女声": "Suara wanita",
|
||||||
|
"您的图像和视频数据仅保留": "Data gambar dan video Anda hanya disimpan",
|
||||||
|
"后图像和视频数据将会失效,开通": "Setelah itu, data gambar dan video akan tidak valid dan diaktifkan",
|
||||||
|
"云存会员": "Keanggotaan Cloud Storage",
|
||||||
|
"服务,图像视频信息随心存!": "Informasi layanan, gambar, dan video adalah inti Anda!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Impostazioni pacchetto vocale blocco",
|
"锁语音包设置": "Impostazioni pacchetto vocale blocco",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "voce maschile",
|
"男声": "voce maschile",
|
||||||
"女声": "voce femminile"
|
"女声": "voce femminile",
|
||||||
|
"您的图像和视频数据仅保留": "I dati delle immagini e dei video vengono conservati solo",
|
||||||
|
"后图像和视频数据将会失效,开通": "Successivamente, i dati dell'immagine e del video non saranno più validi e attivati",
|
||||||
|
"云存会员": "Iscrizione al cloud storage",
|
||||||
|
"服务,图像视频信息随心存!": "Le informazioni sul servizio, le immagini e i video sono al tuo centro!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "ロック音声パケット設定",
|
"锁语音包设置": "ロック音声パケット設定",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "男声",
|
"男声": "男声",
|
||||||
"女声": "女声"
|
"女声": "女声",
|
||||||
|
"您的图像和视频数据仅保留": "画像と動画のデータのみが保持されます",
|
||||||
|
"后图像和视频数据将会失效,开通": "その後、画像とビデオのデータは無効になり、アクティブになります",
|
||||||
|
"云存会员": "クラウドストレージメンバーシップ",
|
||||||
|
"服务,图像视频信息随心存!": "サービス、画像、ビデオ情報があなたの中心にあります!"
|
||||||
}
|
}
|
||||||
@ -1167,5 +1167,9 @@
|
|||||||
"锁语音包设置": "ხმის პაკეტის პარამეტრები",
|
"锁语音包设置": "ხმის პაკეტის პარამეტრები",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "მამაკაცის ხმა",
|
"男声": "მამაკაცის ხმა",
|
||||||
"女声": "ქალის ხმა"
|
"女声": "ქალის ხმა",
|
||||||
|
"您的图像和视频数据仅保留": "თქვენი სურათი და ვიდეო მონაცემები ინახება მხოლოდ",
|
||||||
|
"后图像和视频数据将会失效,开通": "ამის შემდეგ, სურათისა და ვიდეო მონაცემები არასწორი და გააქტიურებული იქნება",
|
||||||
|
"云存会员": "Cloud Storage წევრობა",
|
||||||
|
"服务,图像视频信息随心存!": "მომსახურება, სურათი და ვიდეო ინფორმაცია თქვენს გულშია!"
|
||||||
}
|
}
|
||||||
@ -1172,5 +1172,9 @@
|
|||||||
"语音包设置": "语音包设置",
|
"语音包设置": "语音包设置",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "男声",
|
"男声": "男声",
|
||||||
"女声": "女声"
|
"女声": "女声",
|
||||||
|
"您的图像和视频数据仅保留": "您的图像和视频数据仅保留",
|
||||||
|
"后图像和视频数据将会失效,开通": "后图像和视频数据将会失效,开通",
|
||||||
|
"云存会员": "云存会员",
|
||||||
|
"服务,图像视频信息随心存!": "服务,图像视频信息随心存!"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Дауыстық бума параметрлерін құлыптау",
|
"锁语音包设置": "Дауыстық бума параметрлерін құлыптау",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "ер дауысы",
|
"男声": "ер дауысы",
|
||||||
"女声": "Әйел дауысы"
|
"女声": "Әйел дауысы",
|
||||||
|
"您的图像和视频数据仅保留": "Сіздің кескініңіз бен бейне деректеріңіз тек сақталады",
|
||||||
|
"后图像和视频数据将会失效,开通": "Осыдан кейін кескін мен бейне деректер жарамсыз болып, белсендіріледі",
|
||||||
|
"云存会员": "Бұлтты сақтауға мүшелік",
|
||||||
|
"服务,图像视频信息随心存!": "Қызмет, бейне және бейне ақпарат сіздің жүрегіңізде жатыр!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "음성팩 설정 잠금",
|
"锁语音包设置": "음성팩 설정 잠금",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "남성",
|
"男声": "남성",
|
||||||
"女声": "여성 목소리"
|
"女声": "여성 목소리",
|
||||||
|
"您的图像和视频数据仅保留": "이미지 및 동영상 데이터만 보존됩니다.",
|
||||||
|
"后图像和视频数据将会失效,开通": "그 후 이미지 및 비디오 데이터는 유효하지 않고 활성화됩니다",
|
||||||
|
"云存会员": "클라우드 스토리지 멤버십",
|
||||||
|
"服务,图像视频信息随心存!": "서비스, 이미지 및 비디오 정보가 당신의 중심에 있습니다!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Balso paketo nustatymų užrakinimas",
|
"锁语音包设置": "Balso paketo nustatymų užrakinimas",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "vyriškas balsas",
|
"男声": "vyriškas balsas",
|
||||||
"女声": "Moteriškas balsas"
|
"女声": "Moteriškas balsas",
|
||||||
|
"您的图像和视频数据仅保留": "Vaizdo ir vaizdo įrašų duomenys saugomi tik",
|
||||||
|
"后图像和视频数据将会失效,开通": "Po to vaizdo ir vaizdo duomenys bus negaliojantys ir suaktyvinti",
|
||||||
|
"云存会员": "Debesies saugyklos narystė",
|
||||||
|
"服务,图像视频信息随心存!": "Aptarnavimas, vaizdas ir video informacija yra jūsų širdis!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Balso paketo nustatymų užrakinimas",
|
"锁语音包设置": "Balso paketo nustatymų užrakinimas",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "vyriškas balsas",
|
"男声": "vyriškas balsas",
|
||||||
"女声": "Moteriškas balsas"
|
"女声": "Moteriškas balsas",
|
||||||
|
"您的图像和视频数据仅保留": "Data imej dan video anda hanya dikekalkan",
|
||||||
|
"后图像和视频数据将会失效,开通": "Selepas itu, data imej dan video akan menjadi tidak sah dan diaktifkan",
|
||||||
|
"云存会员": "Keahlian Storan Awan",
|
||||||
|
"服务,图像视频信息随心存!": "Maklumat perkhidmatan, imej dan video adalah di hati anda!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Instellingen voor spraakpakket vergrendelen",
|
"锁语音包设置": "Instellingen voor spraakpakket vergrendelen",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "mannelijke stem",
|
"男声": "mannelijke stem",
|
||||||
"女声": "Vrouwelijke stem"
|
"女声": "Vrouwelijke stem",
|
||||||
|
"您的图像和视频数据仅保留": "Uw beeld- en videogegevens worden alleen bewaard",
|
||||||
|
"后图像和视频数据将会失效,开通": "Daarna zijn de afbeeldings- en videogegevens ongeldig en geactiveerd",
|
||||||
|
"云存会员": "Lidmaatschap voor cloudopslag",
|
||||||
|
"服务,图像视频信息随心存!": "Service-, beeld- en video-informatie staan bij u centraal!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Ustawienia blokowania pakietu głosowego",
|
"锁语音包设置": "Ustawienia blokowania pakietu głosowego",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Mężczyzna",
|
"男声": "Mężczyzna",
|
||||||
"女声": "Głos kobiecy"
|
"女声": "Głos kobiecy",
|
||||||
|
"您的图像和视频数据仅保留": "Dane obrazu i filmu są przechowywane tylko",
|
||||||
|
"后图像和视频数据将会失效,开通": "Po tym czasie dane obrazu i wideo zostaną nieważne i aktywowane",
|
||||||
|
"云存会员": "Członkostwo w usłudze Cloud Storage",
|
||||||
|
"服务,图像视频信息随心存!": "Informacje o serwisie, obrazie i wideo są w Twoim sercu!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Configurações do pacote de voz bloqueada",
|
"锁语音包设置": "Configurações do pacote de voz bloqueada",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Voz masculina",
|
"男声": "Voz masculina",
|
||||||
"女声": "voz feminina"
|
"女声": "voz feminina",
|
||||||
|
"您的图像和视频数据仅保留": "Seus dados de imagem e vídeo são retidos apenas",
|
||||||
|
"后图像和视频数据将会失效,开通": "Depois disso, os dados de imagem e vídeo serão inválidos e ativados",
|
||||||
|
"云存会员": "Associação de armazenamento em nuvem",
|
||||||
|
"服务,图像视频信息随心存!": "Informações de serviço, imagem e vídeo estão no seu coração!"
|
||||||
}
|
}
|
||||||
@ -1166,5 +1166,9 @@
|
|||||||
"语音包设置": "Configurações do pacote de voz",
|
"语音包设置": "Configurações do pacote de voz",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Macho",
|
"男声": "Macho",
|
||||||
"女声": "Garota"
|
"女声": "Garota",
|
||||||
|
"您的图像和视频数据仅保留": "Seus dados de imagem e vídeo são retidos apenas",
|
||||||
|
"后图像和视频数据将会失效,开通": "Depois disso, os dados de imagem e vídeo serão inválidos e ativados",
|
||||||
|
"云存会员": "Associação de armazenamento em nuvem",
|
||||||
|
"服务,图像视频信息随心存!": "Informações de serviço, imagem e vídeo estão no seu coração!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Configurarea pachetului vocal de blocare",
|
"锁语音包设置": "Configurarea pachetului vocal de blocare",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "vocea bărbatului",
|
"男声": "vocea bărbatului",
|
||||||
"女声": "Voce feminină"
|
"女声": "Voce feminină",
|
||||||
|
"您的图像和视频数据仅保留": "Datele tale de imagine și video sunt păstrate numai",
|
||||||
|
"后图像和视频数据将会失效,开通": "După aceea, datele de imagine și video vor fi invalide și activate",
|
||||||
|
"云存会员": "Abonament de stocare în cloud",
|
||||||
|
"服务,图像视频信息随心存!": "Serviciile, imaginile și informațiile video sunt în centrul dumneavoastră!"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,9 @@
|
|||||||
"锁语音包设置": "Запустить настройки голосового пакета",
|
"锁语音包设置": "Запустить настройки голосового пакета",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Мужской голос",
|
"男声": "Мужской голос",
|
||||||
"女声": "Женские голоса"
|
"女声": "Женские голоса",
|
||||||
|
"您的图像和视频数据仅保留": "Ваши изображения и видеоданные сохраняются только",
|
||||||
|
"后图像和视频数据将会失效,开通": "После этого изображение и видео данные будут недействительными и активированы",
|
||||||
|
"云存会员": "Членство в облачном хранилище",
|
||||||
|
"服务,图像视频信息随心存!": "Сервисная, имиджевая и видеоинформация в Вашем сердце!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Zamknutie nastavení hlasového balíka",
|
"锁语音包设置": "Zamknutie nastavení hlasového balíka",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "mužský hlas",
|
"男声": "mužský hlas",
|
||||||
"女声": "Ženský hlas"
|
"女声": "Ženský hlas",
|
||||||
|
"您的图像和视频数据仅保留": "Vaše údaje o obrázkoch a videách sa zachovajú iba",
|
||||||
|
"后图像和视频数据将会失效,开通": "Potom budú údaje o obrázku a videu neplatné a aktivované",
|
||||||
|
"云存会员": "Členstvo v cloudovom úložisku",
|
||||||
|
"服务,图像视频信息随心存!": "Informácie o službách, obrázkoch a videách sú vo vašom srdci!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Закључајте подешавања говорног пакета",
|
"锁语音包设置": "Закључајте подешавања говорног пакета",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "мушки глас",
|
"男声": "мушки глас",
|
||||||
"女声": "женски глас"
|
"女声": "женски глас",
|
||||||
|
"您的图像和视频数据仅保留": "Ваши подаци о слици и видео записима се задржавају само",
|
||||||
|
"后图像和视频数据将会失效,开通": "Након тога, сликовни и видео подаци ће бити неважећи и активирани",
|
||||||
|
"云存会员": "Чланство у облаку за складиштење",
|
||||||
|
"服务,图像视频信息随心存!": "Сервис , слике и видео информације су у вашем срцу!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Lås inställningar för röstpaket",
|
"锁语音包设置": "Lås inställningar för röstpaket",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Mänsklig röst",
|
"男声": "Mänsklig röst",
|
||||||
"女声": "Kvinnlig röst"
|
"女声": "Kvinnlig röst",
|
||||||
|
"您的图像和视频数据仅保留": "Dina bild- och videodata sparas endast",
|
||||||
|
"后图像和视频数据将会失效,开通": "Efter det kommer bild- och videodata att vara ogiltiga och aktiverade",
|
||||||
|
"云存会员": "Medlemskap i molnlagring",
|
||||||
|
"服务,图像视频信息随心存!": "Service, bild- och videoinformation finns i ditt hjärta!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "ล็อคการตั้งค่า Voice Pack",
|
"锁语音包设置": "ล็อคการตั้งค่า Voice Pack",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "เสียงผู้ชาย",
|
"男声": "เสียงผู้ชาย",
|
||||||
"女声": "เสียงผู้หญิง"
|
"女声": "เสียงผู้หญิง",
|
||||||
|
"您的图像和视频数据仅保留": "ระบบจะเก็บข้อมูลรูปภาพและวิดีโอของคุณไว้เท่านั้น",
|
||||||
|
"后图像和视频数据将会失效,开通": "หลังจากนั้น ข้อมูลรูปภาพและวิดีโอจะไม่ถูกต้องและเปิดใช้งาน",
|
||||||
|
"云存会员": "สมาชิกที่เก็บข้อมูลบนคลาวด์",
|
||||||
|
"服务,图像视频信息随心存!": "ข้อมูลบริการ รูปภาพ และวิดีโออยู่ที่หัวใจของคุณ!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Ses Paketi Ayarlarını Kilitle",
|
"锁语音包设置": "Ses Paketi Ayarlarını Kilitle",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Erkek Sesi",
|
"男声": "Erkek Sesi",
|
||||||
"女声": "Kadın Sesi"
|
"女声": "Kadın Sesi",
|
||||||
|
"您的图像和视频数据仅保留": "Görüntü ve video verileriniz yalnızca korunur",
|
||||||
|
"后图像和视频数据将会失效,开通": "Bundan sonra, görüntü ve video verileri geçersiz olacak ve etkinleştirilecektir",
|
||||||
|
"云存会员": "Bulut Depolama Üyeliği",
|
||||||
|
"服务,图像视频信息随心存!": "Servis, görüntü ve video bilgileri kalbinizde!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "鎖語音包設定",
|
"锁语音包设置": "鎖語音包設定",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "男聲",
|
"男声": "男聲",
|
||||||
"女声": "女聲"
|
"女声": "女聲",
|
||||||
|
"您的图像和视频数据仅保留": "您的圖像和視頻數據僅保留",
|
||||||
|
"后图像和视频数据将会失效,开通": "后圖像和視頻數據將會失效,開通",
|
||||||
|
"云存会员": "雲存會員",
|
||||||
|
"服务,图像视频信息随心存!": "服務,圖像視頻資訊隨心存!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Параметри блокування голосового пакету",
|
"锁语音包设置": "Параметри блокування голосового пакету",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Чоловічий голос",
|
"男声": "Чоловічий голос",
|
||||||
"女声": "жіночий голос"
|
"女声": "жіночий голос",
|
||||||
|
"您的图像和视频数据仅保留": "Ваші зображення та відеодані зберігаються лише",
|
||||||
|
"后图像和视频数据将会失效,开通": "Після цього дані зображення та відео будуть недійсними та активованими",
|
||||||
|
"云存会员": "Членство в хмарних сховищах",
|
||||||
|
"服务,图像视频信息随心存!": "Сервіс, зображення та відео інформація у вашому серці!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "صوتی پیکیج کی ترتیبات لاک کریں",
|
"锁语音包设置": "صوتی پیکیج کی ترتیبات لاک کریں",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "مردوں کی آواز",
|
"男声": "مردوں کی آواز",
|
||||||
"女声": "خواتین کی آواز"
|
"女声": "خواتین کی آواز",
|
||||||
|
"您的图像和视频数据仅保留": "آپ کی تصویر اور ویڈیو کا ڈیٹا صرف برقرار رکھا گیا ہے",
|
||||||
|
"后图像和视频数据将会失效,开通": "اس کے بعد ، تصویر اور ویڈیو کا ڈیٹا غیر قانونی اور فعال ہوجائے گا۔",
|
||||||
|
"云存会员": "Cloud Storage Membership",
|
||||||
|
"服务,图像视频信息随心存!": "خدمت، تصویر اور ویڈیو کی معلومات آپ کے دل میں ہیں!"
|
||||||
}
|
}
|
||||||
@ -1161,5 +1161,9 @@
|
|||||||
"锁语音包设置": "Khóa cài đặt gói thoại",
|
"锁语音包设置": "Khóa cài đặt gói thoại",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "Giọng nam",
|
"男声": "Giọng nam",
|
||||||
"女声": "Giọng nữ"
|
"女声": "Giọng nữ",
|
||||||
|
"您的图像和视频数据仅保留": "Dữ liệu hình ảnh và video của bạn chỉ được giữ lại",
|
||||||
|
"后图像和视频数据将会失效,开通": "Sau đó, dữ liệu hình ảnh và video sẽ không hợp lệ và được kích hoạt",
|
||||||
|
"云存会员": "Tư cách thành viên lưu trữ đám mây",
|
||||||
|
"服务,图像视频信息随心存!": "Thông tin dịch vụ, hình ảnh và video là trọng tâm của bạn!"
|
||||||
}
|
}
|
||||||
@ -63,7 +63,6 @@
|
|||||||
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人",
|
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人",
|
||||||
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。",
|
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。",
|
||||||
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行",
|
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行",
|
||||||
|
|
||||||
"功能开启后,你将可以通过网关远程开锁。": "功能开启后,你将可以通过网关远程开锁。",
|
"功能开启后,你将可以通过网关远程开锁。": "功能开启后,你将可以通过网关远程开锁。",
|
||||||
"排列方式": "排列方式",
|
"排列方式": "排列方式",
|
||||||
"早到榜": "早到榜",
|
"早到榜": "早到榜",
|
||||||
@ -1102,7 +1101,7 @@
|
|||||||
"支持的国家": "支持的国家",
|
"支持的国家": "支持的国家",
|
||||||
"支持的国家值": "美国、加拿大、英国、澳大利亚、印度、德国、法国、意大利、西班牙、日本",
|
"支持的国家值": "美国、加拿大、英国、澳大利亚、印度、德国、法国、意大利、西班牙、日本",
|
||||||
"操作流程": "操作流程",
|
"操作流程": "操作流程",
|
||||||
"操作流程值":"1 用智能锁APP添加锁和网关\n\n2 在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Alexa \n\n3 在Alexa中添加Skill,并用智能锁APP的账号和密码进行授权。授权成功后就可以发现账号下的设备\n\n4 在Alexa app里找到锁,开启语音开锁的功能,并设置语言密码\n\n5 可以通过Alexa操作锁了",
|
"操作流程值": "1 用智能锁APP添加锁和网关\n\n2 在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Alexa \n\n3 在Alexa中添加Skill,并用智能锁APP的账号和密码进行授权。授权成功后就可以发现账号下的设备\n\n4 在Alexa app里找到锁,开启语音开锁的功能,并设置语言密码\n\n5 可以通过Alexa操作锁了",
|
||||||
"Google Home": "Google Home",
|
"Google Home": "Google Home",
|
||||||
"Action name": "Action name",
|
"Action name": "Action name",
|
||||||
"ScienerSmart": "ScienerSmart",
|
"ScienerSmart": "ScienerSmart",
|
||||||
@ -1174,5 +1173,9 @@
|
|||||||
"语音包设置": "语音包设置",
|
"语音包设置": "语音包设置",
|
||||||
"(中国台湾)": "(中国台湾)",
|
"(中国台湾)": "(中国台湾)",
|
||||||
"男声": "男声",
|
"男声": "男声",
|
||||||
"女声": "女声"
|
"女声": "女声",
|
||||||
|
"您的图像和视频数据仅保留": "您的图像和视频数据仅保留",
|
||||||
|
"后图像和视频数据将会失效,开通": "后图像和视频数据将会失效,开通",
|
||||||
|
"云存会员": "云存会员",
|
||||||
|
"服务,图像视频信息随心存!": "服务,图像视频信息随心存!"
|
||||||
}
|
}
|
||||||
@ -125,4 +125,9 @@ class DoorLockLogDataItem {
|
|||||||
data['recordDetailStr'] = recordDetailStr;
|
data['recordDetailStr'] = recordDetailStr;
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'DoorLockLogDataItem{recordId: $recordId, lockId: $lockId, lockAlias: $lockAlias, recordType: $recordType, recordTypeName: $recordTypeName, username: $username, operateDate: $operateDate, imagesUrl: $imagesUrl, videoUrl: $videoUrl, headUrl: $headUrl, userid: $userid, keyboardPwd: $keyboardPwd, recordStr: $recordStr, recordDetailStr: $recordDetailStr}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,12 +3,15 @@ import 'dart:async';
|
|||||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/apm/apm_helper.dart';
|
import 'package:star_lock/apm/apm_helper.dart';
|
||||||
|
import 'package:star_lock/appRouters.dart';
|
||||||
import 'package:star_lock/app_settings/app_settings.dart';
|
import 'package:star_lock/app_settings/app_settings.dart';
|
||||||
|
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||||||
import 'package:star_lock/main/lockDetail/doorLockLog/date_time_extensions.dart';
|
import 'package:star_lock/main/lockDetail/doorLockLog/date_time_extensions.dart';
|
||||||
|
|
||||||
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart';
|
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart';
|
||||||
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_state.dart';
|
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_state.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart';
|
import 'package:star_lock/main/lockDetail/lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart';
|
||||||
|
import 'package:star_lock/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_entity.dart';
|
||||||
import 'package:star_lock/tools/commonDataManage.dart';
|
import 'package:star_lock/tools/commonDataManage.dart';
|
||||||
import 'package:star_lock/tools/dateTool.dart';
|
import 'package:star_lock/tools/dateTool.dart';
|
||||||
import 'package:star_lock/tools/eventBusEventManage.dart';
|
import 'package:star_lock/tools/eventBusEventManage.dart';
|
||||||
@ -402,7 +405,20 @@ class DoorLockLogLogic extends BaseGetXController {
|
|||||||
void refreshWeek() {
|
void refreshWeek() {
|
||||||
_setWeekRange();
|
_setWeekRange();
|
||||||
}
|
}
|
||||||
|
getWebPlayUrl() async {
|
||||||
|
final AdvancedFeaturesWebEntity entity =
|
||||||
|
await ApiRepository.to.getServicePackageBuyUrl();
|
||||||
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
|
state.cloudStorageWebViewUrl.value = entity.data!.cloudStorage!;
|
||||||
|
final uploadReportBuyRequest = await ApiRepository.to
|
||||||
|
.uploadReportBuyRequest(lockId: state.keyInfos.value.lockId!);
|
||||||
|
if (uploadReportBuyRequest.errorCode!.codeIsSuccessful) {
|
||||||
|
Get.toNamed(Routers.advancedFeaturesWebPage, arguments: <String, int>{
|
||||||
|
'webBuyType': XSConstantMacro.webBuyTypeCloudStorage,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@override
|
@override
|
||||||
Future<void> onClose() async {
|
Future<void> onClose() async {
|
||||||
super.onClose();
|
super.onClose();
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import 'package:flustars/flustars.dart';
|
import 'package:flustars/flustars.dart';
|
||||||
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
@ -284,6 +285,17 @@ class _DoorLockLogPageState extends State<DoorLockLogPage> with RouteAware {
|
|||||||
return formatter.format(dateTime);
|
return formatter.format(dateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool _checkIsVideoOrImagesType(DoorLockLogDataItem item) {
|
||||||
|
final recordType = item.recordType;
|
||||||
|
switch (recordType) {
|
||||||
|
case 130:
|
||||||
|
case 220:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
String _buildIDByType(DoorLockLogDataItem item) {
|
String _buildIDByType(DoorLockLogDataItem item) {
|
||||||
final recordType = item.recordType;
|
final recordType = item.recordType;
|
||||||
switch (recordType) {
|
switch (recordType) {
|
||||||
@ -407,6 +419,14 @@ class _DoorLockLogPageState extends State<DoorLockLogPage> with RouteAware {
|
|||||||
itemCount: state.lockLogItemList.length,
|
itemCount: state.lockLogItemList.length,
|
||||||
contentsBuilder: (BuildContext context, int index) {
|
contentsBuilder: (BuildContext context, int index) {
|
||||||
final DoorLockLogDataItem timelineData = state.lockLogItemList[index];
|
final DoorLockLogDataItem timelineData = state.lockLogItemList[index];
|
||||||
|
// 👇 提前计算第一个有 videoUrl 的索引(可以在 build 外层计算一次,避免重复)
|
||||||
|
int? firstVideoIndex = state.lockLogItemList
|
||||||
|
.indexWhere((item) => _checkIsVideoOrImagesType(item));
|
||||||
|
bool isInvalid = _checkIsVideoOrImagesType(timelineData) &&
|
||||||
|
((timelineData.imagesUrl == null &&
|
||||||
|
timelineData.videoUrl == null) ||
|
||||||
|
(timelineData.videoUrl == '' && timelineData.imagesUrl == ''));
|
||||||
|
AppLog.log('isInvalid:${isInvalid}');
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(
|
Get.toNamed(
|
||||||
@ -428,17 +448,33 @@ class _DoorLockLogPageState extends State<DoorLockLogPage> with RouteAware {
|
|||||||
// 使用 SingleChildScrollView 实现横向滚动
|
// 使用 SingleChildScrollView 实现横向滚动
|
||||||
SingleChildScrollView(
|
SingleChildScrollView(
|
||||||
scrollDirection: Axis.horizontal, // 横向滚动
|
scrollDirection: Axis.horizontal, // 横向滚动
|
||||||
child: Text(
|
child: RichText(
|
||||||
_buildIDByType(timelineData),
|
|
||||||
textAlign: TextAlign.left,
|
textAlign: TextAlign.left,
|
||||||
|
text: TextSpan(
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: _buildTextColorByType(timelineData),
|
color: _buildTextColorByType(timelineData),
|
||||||
fontSize: 24.sp,
|
fontSize: 24.sp,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
),
|
),
|
||||||
// 关键:禁用换行,强制单行显示
|
children: [
|
||||||
|
TextSpan(
|
||||||
|
text: _buildIDByType(timelineData) +
|
||||||
|
(isInvalid ? '(' + '已失效'.tr + ')' : ''),
|
||||||
|
),
|
||||||
|
WidgetSpan(
|
||||||
|
alignment: PlaceholderAlignment.middle,
|
||||||
|
child: Visibility(
|
||||||
|
visible: isInvalid,
|
||||||
|
child: Icon(
|
||||||
|
Icons.error,
|
||||||
|
size: 24.sp,
|
||||||
|
color: Colors.red,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
// 可选:添加省略号(如果文本过长)
|
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -455,8 +491,71 @@ class _DoorLockLogPageState extends State<DoorLockLogPage> with RouteAware {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20.h,
|
height: 12.h,
|
||||||
),
|
),
|
||||||
|
Visibility(
|
||||||
|
visible: _checkIsVideoOrImagesType(timelineData) &&
|
||||||
|
index == firstVideoIndex,
|
||||||
|
child: GestureDetector(
|
||||||
|
onTap: () async {
|
||||||
|
await logic.getWebPlayUrl();
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
padding: EdgeInsets.all(8.w),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(8.r)),
|
||||||
|
),
|
||||||
|
child: RichText(
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
text: TextSpan(
|
||||||
|
children: [
|
||||||
|
// 普通文字部分
|
||||||
|
TextSpan(
|
||||||
|
text:
|
||||||
|
'${'您的图像和视频数据仅保留'.tr} ${state.rollingStorageDays.value} ${'天'.tr} ,${state.rollingStorageDays.value} ${'天'.tr} ${'后图像和视频数据将会失效,开通'.tr}',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey,
|
||||||
|
fontSize: 16.sp,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
height: 1.8,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// 🔥 高亮且可点击的“云存会员”文本
|
||||||
|
TextSpan(
|
||||||
|
text: '云存会员'.tr,
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColors.mainColor,
|
||||||
|
fontSize: 22.sp,
|
||||||
|
fontWeight: FontWeight.w800,
|
||||||
|
// 更粗
|
||||||
|
decoration: TextDecoration.underline,
|
||||||
|
decorationThickness: 1.5,
|
||||||
|
height: 1.8,
|
||||||
|
),
|
||||||
|
recognizer: TapGestureRecognizer()
|
||||||
|
..onTap = () async {
|
||||||
|
// 👉 点击回调:跳转或弹窗
|
||||||
|
print('点击了“云存会员”');
|
||||||
|
await logic.getWebPlayUrl();
|
||||||
|
// 例如:Navigator.push(context, MaterialPageRoute(builder: ...));
|
||||||
|
},
|
||||||
|
),
|
||||||
|
// 后续文字
|
||||||
|
TextSpan(
|
||||||
|
text: '服务,图像视频信息随心存!'.tr,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.grey,
|
||||||
|
fontSize: 16.sp,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
height: 1.8,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:get/get_rx/get_rx.dart';
|
||||||
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||||||
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart';
|
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart';
|
||||||
import 'package:star_lock/tools/advancedCalendar/src/controller.dart';
|
import 'package:star_lock/tools/advancedCalendar/src/controller.dart';
|
||||||
@ -73,4 +74,6 @@ class DoorLockLogState {
|
|||||||
int logCountPage = 10; // 蓝牙记录一页多少个
|
int logCountPage = 10; // 蓝牙记录一页多少个
|
||||||
Rx<DateTime> currentSelectDate = DateTime.now().obs;
|
Rx<DateTime> currentSelectDate = DateTime.now().obs;
|
||||||
bool isLockReceiveResponse = false; // 是否收到回复
|
bool isLockReceiveResponse = false; // 是否收到回复
|
||||||
|
RxString cloudStorageWebViewUrl = ''.obs;
|
||||||
|
RxInt rollingStorageDays = 3.obs; //滚动存储日期
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:star_lock/app_settings/app_settings.dart';
|
||||||
import 'package:star_lock/blue/blue_manage.dart';
|
import 'package:star_lock/blue/blue_manage.dart';
|
||||||
import 'package:star_lock/blue/io_protocol/io_setSupportFunctionsWithParameters.dart';
|
import 'package:star_lock/blue/io_protocol/io_setSupportFunctionsWithParameters.dart';
|
||||||
import 'package:star_lock/blue/io_reply.dart';
|
import 'package:star_lock/blue/io_reply.dart';
|
||||||
@ -82,30 +83,31 @@ class CatEyeSetLogic extends BaseGetXController {
|
|||||||
//成功
|
//成功
|
||||||
cancelBlueConnetctToastTimer();
|
cancelBlueConnetctToastTimer();
|
||||||
dismissEasyLoading();
|
dismissEasyLoading();
|
||||||
|
AppLog.log('state.settingOptions.value:${state.settingOptions.value}');
|
||||||
switch (state.settingOptions.value) {
|
switch (state.settingOptions.value) {
|
||||||
case 1: //自动亮屏
|
case 1: //自动亮屏
|
||||||
{
|
{
|
||||||
updateAutoLightScreenConfig();
|
await updateAutoLightScreenConfig();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2: //逗留警告
|
case 2: //逗留警告
|
||||||
{
|
{
|
||||||
updateStayWarnConfig();
|
await updateStayWarnConfig();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3: //异常警告
|
case 3: //异常警告
|
||||||
{
|
{
|
||||||
updateAbnormalWarnConfig();
|
await updateAbnormalWarnConfig();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4: //设置亮屏持续时间
|
case 4: //设置亮屏持续时间
|
||||||
{
|
{
|
||||||
updateLightScreenTimeConfig();
|
await updateLightScreenTimeConfig();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5: //修改猫眼工作模式
|
case 5: //修改猫眼工作模式
|
||||||
{
|
{
|
||||||
updateCatEyeModeConfig();
|
await updateCatEyeModeConfig();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -288,6 +290,7 @@ class CatEyeSetLogic extends BaseGetXController {
|
|||||||
.catEyeConfig![0]
|
.catEyeConfig![0]
|
||||||
.catEyeModeConfig
|
.catEyeModeConfig
|
||||||
?.realTimeMode = state.catEyeConfig.value.realTimeMode;
|
?.realTimeMode = state.catEyeConfig.value.realTimeMode;
|
||||||
|
|
||||||
eventBus
|
eventBus
|
||||||
.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
|
.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
|
||||||
}
|
}
|
||||||
@ -456,6 +459,10 @@ class CatEyeSetLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void sendBlueMessage() {
|
void sendBlueMessage() {
|
||||||
|
showEasyLoading();
|
||||||
|
showBlueConnetctToastTimer(action: () {
|
||||||
|
dismissEasyLoading();
|
||||||
|
});
|
||||||
final message = _buildCatEyeSetBlueMessage();
|
final message = _buildCatEyeSetBlueMessage();
|
||||||
BlueManage().blueSendData(BlueManage().connectDeviceName,
|
BlueManage().blueSendData(BlueManage().connectDeviceName,
|
||||||
(BluetoothConnectionState connectionState) async {
|
(BluetoothConnectionState connectionState) async {
|
||||||
|
|||||||
@ -104,10 +104,10 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
|
|||||||
codecType: 'h264',
|
codecType: 'h264',
|
||||||
);
|
);
|
||||||
// 初始化解码器并获取textureId
|
// 初始化解码器并获取textureId
|
||||||
AppLog.log('StartChartManage().videoWidth:${StartChartManage()
|
AppLog.log(
|
||||||
.videoWidth}');
|
'StartChartManage().videoWidth:${StartChartManage().videoWidth}');
|
||||||
AppLog.log('StartChartManage().videoHeight:${StartChartManage()
|
AppLog.log(
|
||||||
.videoHeight}');
|
'StartChartManage().videoHeight:${StartChartManage().videoHeight}');
|
||||||
final textureId = await VideoDecodePlugin.initDecoder(config);
|
final textureId = await VideoDecodePlugin.initDecoder(config);
|
||||||
if (textureId != null) {
|
if (textureId != null) {
|
||||||
Future.microtask(() => state.textureId.value = textureId);
|
Future.microtask(() => state.textureId.value = textureId);
|
||||||
@ -746,7 +746,6 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//开始录音
|
//开始录音
|
||||||
Future<void> startProcessingAudio() async {
|
Future<void> startProcessingAudio() async {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (await state.voiceProcessor?.hasRecordAudioPermission() ?? false) {
|
if (await state.voiceProcessor?.hasRecordAudioPermission() ?? false) {
|
||||||
await state.voiceProcessor?.start(state.frameLength, state.sampleRate);
|
await state.voiceProcessor?.start(state.frameLength, state.sampleRate);
|
||||||
@ -793,27 +792,13 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
|
|||||||
|
|
||||||
// 添加音频增益处理方法
|
// 添加音频增益处理方法
|
||||||
List<int> _applyGain(List<int> pcmData, double gainFactor) {
|
List<int> _applyGain(List<int> pcmData, double gainFactor) {
|
||||||
List<int> result = List<int>.filled(pcmData.length, 0);
|
return pcmData.map((sample) {
|
||||||
|
// 增益并裁剪
|
||||||
for (int i = 0; i < pcmData.length; i++) {
|
int amplified = (sample * gainFactor).round();
|
||||||
// PCM数据通常是有符号的16位整数
|
return amplified.clamp(-32768, 32767);
|
||||||
int sample = pcmData[i];
|
}).toList();
|
||||||
|
|
||||||
// 应用增益
|
|
||||||
double amplified = sample * gainFactor;
|
|
||||||
|
|
||||||
// 限制在有效范围内,防止溢出
|
|
||||||
if (amplified > 32767) {
|
|
||||||
amplified = 32767;
|
|
||||||
} else if (amplified < -32768) {
|
|
||||||
amplified = -32768;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
result[i] = amplified.toInt();
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
static const int chunkSize = 320; // 每次发送320字节(10ms G.711)
|
static const int chunkSize = 320; // 每次发送320字节(10ms G.711)
|
||||||
static const int intervalMs = 35; // 每40ms发送一次(4个chunk)
|
static const int intervalMs = 35; // 每40ms发送一次(4个chunk)
|
||||||
void _sendAudioChunk(Timer timer) async {
|
void _sendAudioChunk(Timer timer) async {
|
||||||
@ -849,10 +834,11 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
|
|||||||
List<int> encodedData = G711Tool.encode(applyGain, 0); // 0表示A-law
|
List<int> encodedData = G711Tool.encode(applyGain, 0); // 0表示A-law
|
||||||
_bufferedAudioFrames.addAll(encodedData);
|
_bufferedAudioFrames.addAll(encodedData);
|
||||||
|
|
||||||
|
|
||||||
// 启动定时发送器(仅启动一次)
|
// 启动定时发送器(仅启动一次)
|
||||||
if (_startProcessingAudioTimer == null && _bufferedAudioFrames.length > chunkSize) {
|
if (_startProcessingAudioTimer == null &&
|
||||||
_startProcessingAudioTimer = Timer.periodic(Duration(milliseconds: intervalMs), _sendAudioChunk);
|
_bufferedAudioFrames.length > chunkSize) {
|
||||||
|
_startProcessingAudioTimer =
|
||||||
|
Timer.periodic(Duration(milliseconds: intervalMs), _sendAudioChunk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user