From 8044aabbfb0784a55296e25cd3cacbd2497d1444 Mon Sep 17 00:00:00 2001 From: Mike van Rossum Date: Mon, 20 Aug 2018 08:39:05 +0000 Subject: [PATCH 1/9] Translated using Weblate (Dutch) Currently translated at 93.2% (498 of 534 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/nl/ --- app/src/main/res/values-nl/strings.xml | 36 +++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 4cad52682b..f0294bb817 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -279,7 +279,7 @@ Staccato Kort - Medium + Middel Lang Waterdruppel Ring @@ -425,7 +425,7 @@ Traditioneel Chinees Engels - Op het punt om data over te zetten sinds %1$s + Op het punt om data over te zetten vanaf %1$s Wachten om opnieuw te verbinden @@ -601,4 +601,34 @@ Kompas Instellingen Alipay - +Kalibreer apparaat + + + ID115 instellingen + Scherm orientatie + + Mi Band 2 instellingen + Mi Band 3 instellingen + Amazfit Cor instellingens + Horizontaal + Vertikaal + Wanneer het horloge trilt, schud hem of druk op de knop. + + Je sliep van %1$s tot %2$s + Je hebt niet geslapen + Band scherm vrijgeven + Veeg omhoog om het scherm vrij te geven + Noors + Russisch + Duits + Italiaans + Frans + Pools + Koreaans + Japans + + Herstel ophaal datum + + MyKronoz ZeTime + Notificaties + From 647dada60b9c16799a20feb610f0df2ace5582bc Mon Sep 17 00:00:00 2001 From: postsorino Date: Wed, 22 Aug 2018 20:27:56 +0000 Subject: [PATCH 2/9] Translated using Weblate (Greek) Currently translated at 100.0% (544 of 544 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/el/ --- app/src/main/res/values-el/strings.xml | 42 +++++++++++++++++--------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 830bfeca12..6c89a7a02e 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -1,5 +1,5 @@ -Gadgetbridge +"Gadgetbridge " Gadgetbridge Ρυθμίσεις @@ -36,9 +36,9 @@ Απενεργοποίηση Ενεργοποίηση μέτρησης υγείας Απενεργοποίηση μέτρησης υγείας - Ενεργοποίηση εφαρμογής καιρού - Απενεργοποίηση εφαρμογής καιρού - "Εγκαταστείστε την εφαρμογή ειδοποίησης καιρού" + Ενεργοποίηση Εφαρμογής Καιρού + Απενεργοποίηση Εφαρμογής Καιρού + Εγκαταστείστε την εφαρμογή ειδοποίησης Καιρού Επιλογές Μετακίνηση στη κορυφή @@ -72,12 +72,12 @@ \n \nΔΕΝ συνίσταται η εγκατάσταση του στο Mi Band σας! Διαχειριστής εφαρμογών - Αν ακόμη θέλετε να προχωρήσετε και μετά όλα λειτουργούν κανονικά, παρακαλούμε ενημερώστε τους δημιουργούς του Gadgetbridge σχετικά με την %s έκδοση + Αν ακόμη θέλετε να προχωρήσετε και μετά όλα λειτουργούν κανονικά, παρακαλούμε ενημερώστε τους δημιουργούς του Gadgetbridge σχετικά με την %s έκδοση. Ρυθμίσεις Γενικές ρυθμίσεις - Σύνδεση με την συσκευή όταν το Bluetooth ενεργοποιείται + Σύνδεση με την φορετή συσκευή όταν το Bluetooth στο κινητό ενεργοποιείται Αυτόματη έναρξη Αυτόματη επανασύνδεση Προτιμώμενο πρόγραμμα ήχου @@ -86,7 +86,7 @@ Ημερομηνία και ώρα Συγχρονισμός ώρας - Συγχρονισμός ώρας στην συσκευή όταν αυτή συνδέεται ή όταν αλλάζετε ζώνη ώρας + Συγχρονισμός ώρας στη φορετή συσκευή όταν αυτή συνδέεται με το κινητό ή όταν αλλάζετε ζώνη ώρας Θέμα Ανοιχτόχρωμο @@ -107,7 +107,7 @@ Υποστήριξη γενικών ειδοποιήσεων ...επίσης όταν είναι ανοιχτή η οθόνη Μην Ενοχλείτε - Αποτροπή αποστολής ειδοποιήσεων όταν έχετε ενεργοποιήσει την λειτουργία Μην Ενοχλείτε + "Μη επιθυμητές ειδοποιήσεις δεν στελνονται σε αυτή τη λειτουργία " Αλλαγή χαρακτήρων Ενεργοποιήστε αυτή την επιλογή αν η συσκευή σας δεν υποστηρίζει τις γραμματοσειρές της γλώσσας σας @@ -313,8 +313,8 @@ Παρ Σαβ Έξυπνο ξύπνημα - Υπήρξε λάθος στη ρύθμιση των ξυπνητηριών, παρακαλώ προσπαθήστε ξανά! - Τα ξυπνητήρια στάλθηκαν στη συσκευή! + Υπήρξε λάθος στη ρύθμιση των ξυπνητηριών, παρακαλώ προσπαθήστε ξανά. + Τα ξυπνητήρια στάλθηκαν στη συσκευή. Χωρίς δεδομένα. Συγχρονισμός με τη συσκευή; "Θα γίνει μεταφορά %1$s δεδομένων ξεκινώντας από %2$s" Στόχος βημάτων ανά μέρα @@ -365,7 +365,7 @@ Θα κρατηθούν τα δεδομένα της δραστηριότητας στο Mi Band και μετά τον συγχρονισμό. Χρήσιμο αν το Gadgetbridge χρησιμοποιείται παράλληλα με άλλες εφαρμογές. %1$s: %2$s %3$s Χρήση της λειτουργίας χαμηλής καθυστέρησης για τις αναβαθμίσεις λογισμικού - Αυτό μπορεί να βοηθήσει για συσκευές που η αναβάθμιση λογισμικού αποτυγχάνει + Αυτό μπορεί να βοηθήσει για συσκευές που η αναβάθμιση λογισμικού αποτυγχάνει. Ιστορικό βημάτων Τρέχων ρυθμός βημάτων/λεπτό @@ -448,7 +448,7 @@ Σφυγμοί Αποθήκευση των ακατέργαστων εγγραφών στη βάση δεδομένων - Αυτή η επιλογή θα αποθηκεύσει τα δεδομένα \"ως έχουν\" και θα είναι διαθέσιμα για ερμηνεία αργότερα. Η βάση δεδομένων θα ναι μεγαλύτερη σε αυτή τη περίπτωση! + Με αυτή την επιλογή θα αποθηκευτούν τα δεδομένα \"ως έχουν\", μεγαλώνοντας τη χρήση της βάσης δεδομένων για να είναι διαθέσιμα για ερμηνεία αργότερα. Διαχείριση βάσης δεδομένων Διαχείριση βάσης δεδομένων "Η λειτουργία της βάσης δεδομένων χρησιμοποιεί τον ακόλουθο φάκελο στη συσκευή σας. @@ -479,7 +479,7 @@ Δόνηση Σύζευξη Pebble - Ένα παράθυρο σύζευξης θα εμφανιστεί στην Abdroid συσκευή σας. Αν αυτό δεν συμβεί, δείτε στη περιοχή ειδοποιήσεων και δεχθείτε την σύζευξη. Επίσης μετά δεχθείτε την σύζευξη και στο Pebble σας + Ένα παράθυρο σύζευξης θα εμφανιστεί στην Abdroid συσκευή σας. Αν αυτό δεν συμβεί, δείτε στη περιοχή ειδοποιήσεων και δεχθείτε την σύζευξη. Επίσης μετά δεχθείτε την σύζευξη και στο Pebble σας. Βεβαιωθείτε ότι αυτό το θέμα είναι ενεργοποιημένο στην εφαρμογή του καιρού ώστε να λάβει τις πληροφορίες το Pebble. \n @@ -649,4 +649,18 @@ Αρχική ρύθμιση (καλιμπράρισμα) Σύζευξη Watch 9 Αρχική ρύθμιση (καλιμπράρισμα) Watch 9 - +Ελάχιστος χρόνος μεταξύ ειδοποιήσεων + Χωρίς όριο + 5 δευτερόλεπτα + 10 δευτερόλεπτα + 20 δευτερόλεπτα + 30 δευτερόλεπτα + 1 λεπτό + 5 λεπτά + 10 λεπτά + 30 λεπτά + + "Κοιμηθήκατε %1$s έως %2$s" + Δεν κοιμηθήκατε + Νορβηγικά (Bokmål) + From b842c38c2c6d9f28d3c1ae31182bdd1413f6a2c1 Mon Sep 17 00:00:00 2001 From: TaaviE Date: Wed, 22 Aug 2018 00:18:59 +0000 Subject: [PATCH 3/9] Translated using Weblate (Estonian) Currently translated at 26.6% (145 of 544 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/et/ --- app/src/main/res/values-et/strings.xml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 5d7c7ed728..a0275bfde5 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -77,9 +77,9 @@ Vaikeväärtus Kuupäev ja kellaaeg Sünkrooni aega - Sünkrooni aeg seadmega ühendumise ajal ja kui aeg või ajatsoon muutub Androidis + "Sünkrooni aeg seadmega ühendumise ajal või kui Androidis aeg või ajatsoon muutub " - Kui te siiski soovite jätkata ja seade jätkab tööd ka hiljem palun andke Gadgetbridge\'i arendajatele teada, et nad lisaksid %s versiooni toetatud püsivarade nimekirja + Kui te siiski soovite jätkata ja seade jätkab tööd ka hiljem palun andke Gadgetbridge\'i arendajatele teada, et nad lisaksid %s versiooni toetatud püsivarade nimekirja. Luba viiped vasakule/paremale graafikute vaates @@ -116,7 +116,7 @@ Olekuriba ikooni ja lukustusekraani märguandeid kuvatakse Olekuriba ikoon ja lukustuserkaani märguanded on peidetud - Tugi rakendustele, mis saadavad PebbleKit kaudu märguandeid Pebblele. + Tugi rakendustele, mis saadavad PebbleKit\'i kaudu märguandeid Pebble\'le. ...ka sisse lülitatud ekraaniga Peata soovimatute märguannete saatmine \"Ära sega\" režiimis Luba see, kui su seadmel puudub su keele fondi tugi @@ -140,8 +140,8 @@ Kalibreeri seade - Lisa kõik teatised musta nimekirja - Lisa kõik teatised valgesse nimekirja + Lisa kõikide nende teatised musta nimekirja + Lisa kõikide nende teatised valgesse nimekirja Te kavatsete installida %s püsivara enda Mi Band 3le. @@ -155,7 +155,7 @@ Sünkrooni Morpheuz Toeta väljaminevaid kõnesid - Selle valiku väljalülitamine lülitab välja ka Pebble 2/LE värisemise väljaminevate kõnede puhul. + Selle valiku väljalülitamine lülitab välja ka Pebble 2/LE värisemise väljaminevate kõnede puhul Luba kolmanda osapoolte rakenduste ligipääs Lülita sisse eksperimentaalne PebbleKit\'i kasutavate rakenduste tugi @@ -187,8 +187,15 @@ Sunniviisiliselt kasuta teatiste protokolli See valik sunnib kõige uuema teatiste protokolli kasutamise vastavalt püsivara versioonile. KASUTA AINULT KUI SA TEAD MIDA SA TEED! Lülita sisse testimata funktsioonid - Lülita sisse testimata funktsioonid. LÜLITA SISSE AINULT SIIS KUI SA TEAD MIDA SA TEED! + Lülita sisse testimata funktsioonid. TEA, MIDA SA TEED! Alati eelista Bluetooth LE\'d Allalaadimine käivitatakse ekraani lahtilukustamise ajal. Töötab ainult sellel juhul kui lukustusmehhanism on seatud! "Pulss: " + Lühim aeg teavituste vahel + Kasuta eksperimentaalset Pebble LE tuge kõikide Pebble\'de jaoks tavalise Bluetoothi asemel. See nõuab sidumist tavalise Bluetoothi kaudu ja seejärel Bluetooth LE sidumist + Pebble 2/LE GATT MTU limiit + Kui Pebble 2/Pebble LE ei taha ootuspäraselt töötada proovi seada MTUle limiit vahemikus 20-512 + Lülita sisse kellarakenduste logimine + Ainult GATT klient + See on ainult Pebble 2le ja eksperimentaalne, katseta kui on ilmnenud ühenduvusprobleeme From 278d1eb9e41814c359cc79ca83d54b9bd36d16a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moln=C3=A1r=20Barnab=C3=A1s?= Date: Wed, 22 Aug 2018 13:25:48 +0000 Subject: [PATCH 4/9] Translated using Weblate (Hungarian) Currently translated at 47.0% (256 of 544 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/hu/ --- app/src/main/res/values-hu/strings.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 1ef59d4422..e1242094ec 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -397,4 +397,6 @@ Válaszd ki a Párosítást az eszköz párosításához. Ha ez nem sikerül, próbáld meg újra párosítás nélkül. Párosítás Nem párosított - +Támogatás + Csatlakoztatás + From 7a1c3ab4fca32c2e4ce6ef011163fc147e768189 Mon Sep 17 00:00:00 2001 From: petronovak Date: Thu, 23 Aug 2018 12:31:07 +0000 Subject: [PATCH 5/9] Translated using Weblate (Ukrainian) Currently translated at 45.4% (247 of 544 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/uk/ --- app/src/main/res/values-uk/strings.xml | 67 +++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index c3d9f5a17d..c59835671d 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -3,7 +3,7 @@ Gadgetbridge Gadgetbridge Налаштування - Зневадження + Відладка Вихід Синхронізувати Аналіз сну (АЛЬФА) @@ -320,4 +320,67 @@ Mi2: Формат дати "HR: " Alipay - +Калібрувати пристрій + + + Мінімальний час між сповіщеннями + Автоматично видаляти відхилені сповіщення + Сповіщення автоматично видаляються з Pebble коли звільняються з Android пристрою + + Приватний режим + Звичайні сповіщення + Показувати лише іконку сповіщення + + Отримати місцезнаходження + Оновлювати місцезнаходження + Спробувати отримати поточне місцезнаходження під час виконання, використовувати збережене місце у випадку невдачі + + Будь ласка, включіть місце розташування мережі + місцезнаходження визначено + + Увімкнути логування додатку + Увімкнути фоновий JS + Вимірювання серцевого ритму протягом дня + Орієнтація екрана + + Автоматичний експорт увімкнено + Натисніть на пристрій для підключення + Налаштування Mi Band 2 + Налаштування Mi Band 3 + Налаштування Amazfit Bip + Горизонтально + Вертикально + Спробувати + E-mail повідомлення + раз на хвилину + кожні 5 хвилин + кожні 10 хвилин + кожні 30 хвилин + раз на годину + + Кроки на хвилину + + Калорії + Відстань + Годинник + Пульс + Акумулятор + + Без обмежень + 5 секунд + 10 секунд + 20 секунд + 30 секунд + 1 хвилина + 5 хвилин + 10 хвилин + 30 хвилин + + Це може допомогти на пристроях, де прошивання прошивки не вдається. + + Ви не спали + Сигнали для резервування для майбутніх подій + Використовувати датчик пульсу для поліпшення виявлення сну + Час + Дата і час + From 915ad99886fdcb8c8366b5ab31f931940a252c2c Mon Sep 17 00:00:00 2001 From: kalaee Date: Mon, 27 Aug 2018 15:05:05 +0200 Subject: [PATCH 6/9] Added Scandinavian characters --- .../freeyourgadget/gadgetbridge/util/LanguageUtils.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/LanguageUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/LanguageUtils.java index 808848eb1b..201e1da1db 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/LanguageUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/LanguageUtils.java @@ -30,8 +30,13 @@ public class LanguageUtils { private static Map transliterateMap = new HashMap(){ { //extended ASCII characters - put('æ', "ae"); put('œ', "oe"); put('ª', "a"); put('º', "o"); put('«',"\""); put('»',"\""); - + put('œ', "oe"); put('ª', "a"); put('º', "o"); put('«',"\""); put('»',"\""); + + // Scandinavian characters + put('Æ',"Ae"); put('æ',"ae"); + put('Ø',"Oe"); put('ø',"oe"); + put('Å',"Aa"); put('å',"aa"); + //german characters put('ä',"ae"); put('ö',"oe"); put('ü',"ue"); put('Ä',"Ae"); put('Ö',"Oe"); put('Ü',"Üe"); From 9fda67b29738a4884679670a12c668034833c009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Fri, 17 Aug 2018 19:06:02 +0100 Subject: [PATCH 7/9] Mi Band 3: Night Mode --- .../activities/SettingsActivity.java | 62 +++++++++++++++++++ .../huami/miband3/MiBand3Coordinator.java | 16 +++++ .../devices/huami/miband3/MiBand3Service.java | 3 + .../devices/miband/MiBandConst.java | 6 ++ .../devices/huami/miband3/MiBand3Support.java | 45 ++++++++++++++ app/src/main/res/values/arrays.xml | 11 ++++ app/src/main/res/values/strings.xml | 4 ++ app/src/main/res/values/values.xml | 1 + app/src/main/res/xml/preferences.xml | 27 ++++++++ 9 files changed, 175 insertions(+) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java index 1242801a55..65f9514e04 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java @@ -52,6 +52,7 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.database.PeriodicExporter; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager; +import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandPreferencesActivity; import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec; import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils; @@ -64,6 +65,11 @@ import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PR import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_DISPLAY_ITEMS; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_ENABLE_TEXT_NOTIFICATIONS; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_BAND_SCREEN_UNLOCK; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_NIGHT_MODE; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_NIGHT_MODE_END; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_NIGHT_MODE_OFF; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_NIGHT_MODE_SCHEDULED; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_NIGHT_MODE_START; import static nodomain.freeyourgadget.gadgetbridge.model.ActivityUser.PREF_USER_HEIGHT_CM; import static nodomain.freeyourgadget.gadgetbridge.model.ActivityUser.PREF_USER_SLEEP_DURATION; import static nodomain.freeyourgadget.gadgetbridge.model.ActivityUser.PREF_USER_STEPS_GOAL; @@ -87,6 +93,8 @@ public class SettingsActivity extends AbstractSettingsActivity { protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); + Prefs prefs = GBApplication.getPrefs(); + Preference pref = findPreference("notifications_generic"); pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { @@ -419,6 +427,60 @@ public class SettingsActivity extends AbstractSettingsActivity { } }); + String nightModeState = prefs.getString(MiBandConst.PREF_MI3_NIGHT_MODE, PREF_MI3_NIGHT_MODE_OFF); + boolean nightModeScheduled = nightModeState.equals(PREF_MI3_NIGHT_MODE_SCHEDULED); + + final Preference nightModeStart = findPreference(PREF_MI3_NIGHT_MODE_START); + nightModeStart.setEnabled(nightModeScheduled); + nightModeStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newVal) { + invokeLater(new Runnable() { + @Override + public void run() { + GBApplication.deviceService().onSendConfiguration(PREF_MI3_NIGHT_MODE_START); + } + }); + return true; + } + }); + + + final Preference nightModeEnd = findPreference(PREF_MI3_NIGHT_MODE_END); + nightModeEnd.setEnabled(nightModeScheduled); + nightModeEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newVal) { + invokeLater(new Runnable() { + @Override + public void run() { + GBApplication.deviceService().onSendConfiguration(PREF_MI3_NIGHT_MODE_END); + } + }); + return true; + } + }); + + + final Preference nightMode = findPreference(PREF_MI3_NIGHT_MODE); + nightMode.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newVal) { + final boolean scheduled = PREF_MI3_NIGHT_MODE_SCHEDULED.equals(newVal.toString()); + + nightModeStart.setEnabled(scheduled); + nightModeEnd.setEnabled(scheduled); + + invokeLater(new Runnable() { + @Override + public void run() { + GBApplication.deviceService().onSendConfiguration(PREF_MI3_NIGHT_MODE); + } + }); + return true; + } + }); + final Preference corDisplayItems = findPreference("cor_display_items"); corDisplayItems.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java index 39035982b5..4d48d0b5c4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java @@ -24,6 +24,8 @@ import android.support.annotation.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Date; + import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; @@ -78,4 +80,18 @@ public class MiBand3Coordinator extends HuamiCoordinator { Prefs prefs = GBApplication.getPrefs(); return prefs.getBoolean(MiBandConst.PREF_MI3_BAND_SCREEN_UNLOCK, false); } + + public static String getNightMode() { + Prefs prefs = GBApplication.getPrefs(); + + return prefs.getString(MiBandConst.PREF_MI3_NIGHT_MODE, MiBandConst.PREF_MI3_NIGHT_MODE_OFF); + } + + public static Date getNightModeStart() { + return getTimePreference( MiBandConst.PREF_MI3_NIGHT_MODE_START, "16:00"); + } + + public static Date getNightModeEnd() { + return getTimePreference(MiBandConst.PREF_MI3_NIGHT_MODE_END, "07:00"); + } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Service.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Service.java index 31cdf89add..6ad3755322 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Service.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Service.java @@ -25,4 +25,7 @@ public class MiBand3Service { public static final byte[] COMMAND_CHANGE_SCREENS = new byte[]{ENDPOINT_DISPLAY_ITEMS, DISPLAY_ITEM_BIT_CLOCK, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00}; public static final byte[] COMMAND_ENABLE_BAND_SCREEN_UNLOCK = new byte[]{ENDPOINT_DISPLAY, 0x16, 0x00, 0x01}; public static final byte[] COMMAND_DISABLE_BAND_SCREEN_UNLOCK = new byte[]{ENDPOINT_DISPLAY, 0x16, 0x00, 0x00}; + public static final byte[] COMMAND_NIGHT_MODE_OFF = new byte[]{0x1a, 0x00}; + public static final byte[] COMMAND_NIGHT_MODE_SUNSET = new byte[]{0x1a, 0x02}; + public static final byte[] COMMAND_NIGHT_MODE_SCHEDULED = new byte[]{0x1a, 0x01, 0x10, 0x00, 0x07, 0x00}; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandConst.java index 0358dfb076..66cb6aa8f0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandConst.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandConst.java @@ -70,6 +70,12 @@ public final class MiBandConst { public static final String PREF_MIBAND_SETUP_BT_PAIRING = "mi_setup_bt_pairing"; public static final String PREF_MI3_BAND_SCREEN_UNLOCK = "mi3_band_screen_unlock"; + public static final String PREF_MI3_NIGHT_MODE = "mi3_night_mode"; + public static final String PREF_MI3_NIGHT_MODE_START = "mi3_night_mode_start"; + public static final String PREF_MI3_NIGHT_MODE_END = "mi3_night_mode_end"; + public static final String PREF_MI3_NIGHT_MODE_OFF = "off"; + public static final String PREF_MI3_NIGHT_MODE_SUNSET = "sunset"; + public static final String PREF_MI3_NIGHT_MODE_SCHEDULED = "scheduled"; public static final String ORIGIN_INCOMING_CALL = "incoming_call"; public static final String ORIGIN_ALARM_CLOCK = "alarm_clock"; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3Support.java index b5ee908c62..599710e850 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3Support.java @@ -24,6 +24,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; import java.util.Locale; import java.util.Set; @@ -94,6 +97,11 @@ public class MiBand3Support extends AmazfitBipSupport { case MiBandConst.PREF_MI3_BAND_SCREEN_UNLOCK: setBandScreenUnlock(builder); break; + case MiBandConst.PREF_MI3_NIGHT_MODE: + case MiBandConst.PREF_MI3_NIGHT_MODE_START: + case MiBandConst.PREF_MI3_NIGHT_MODE_END: + setNightMode(builder); + break; default: super.onSendConfiguration(config); return; @@ -140,11 +148,48 @@ public class MiBand3Support extends AmazfitBipSupport { return this; } + private MiBand3Support setNightMode(TransactionBuilder builder) { + String nightMode = MiBand3Coordinator.getNightMode(); + LOG.info("Setting night mode to " + nightMode); + + switch (nightMode) { + case MiBandConst.PREF_MI3_NIGHT_MODE_SUNSET: + builder.write(getCharacteristic(HuamiService.UUID_CHARACTERISTIC_3_CONFIGURATION), MiBand3Service.COMMAND_NIGHT_MODE_SUNSET); + break; + case MiBandConst.PREF_MI3_NIGHT_MODE_OFF: + builder.write(getCharacteristic(HuamiService.UUID_CHARACTERISTIC_3_CONFIGURATION), MiBand3Service.COMMAND_NIGHT_MODE_OFF); + break; + case MiBandConst.PREF_MI3_NIGHT_MODE_SCHEDULED: + byte[] cmd = MiBand3Service.COMMAND_NIGHT_MODE_SCHEDULED.clone(); + + Calendar calendar = GregorianCalendar.getInstance(); + + Date start = MiBand3Coordinator.getNightModeStart(); + calendar.setTime(start); + cmd[2] = (byte) calendar.get(Calendar.HOUR_OF_DAY); + cmd[3] = (byte) calendar.get(Calendar.MINUTE); + + Date end = MiBand3Coordinator.getNightModeEnd(); + calendar.setTime(end); + cmd[4] = (byte) calendar.get(Calendar.HOUR_OF_DAY); + cmd[5] = (byte) calendar.get(Calendar.MINUTE); + + builder.write(getCharacteristic(HuamiService.UUID_CHARACTERISTIC_3_CONFIGURATION), cmd); + break; + default: + LOG.error("Invalid night mode: " + nightMode); + break; + } + + return this; + } + @Override public void phase2Initialize(TransactionBuilder builder) { super.phase2Initialize(builder); LOG.info("phase2Initialize..."); setBandScreenUnlock(builder); + setNightMode(builder); } @Override diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 39dfa2fc02..450218da8c 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -170,6 +170,17 @@ @string/p_scheduled + + @string/off + @string/mi3_night_mode_sunset + @string/mi2_dnd_scheduled + + + @string/p_off + @string/p_sunset + @string/p_scheduled + + @string/chart_steps @string/distance diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 66e48cfc77..ea12ea5217 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -440,6 +440,9 @@ End time Band screen unlock" Swipe up to unlock the band\'s screen + Night mode + Lower band screen brightness automatically at night + Automatic Simplified Chinese Traditional Chinese @@ -537,6 +540,7 @@ On Off Off + At sunset Automatic (sleep detection) Scheduled (time interval) Attempting to pair with %1$s diff --git a/app/src/main/res/values/values.xml b/app/src/main/res/values/values.xml index 96d5d895c2..570783715b 100644 --- a/app/src/main/res/values/values.xml +++ b/app/src/main/res/values/values.xml @@ -35,6 +35,7 @@ off on + sunset automatic scheduled diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 6744c4e4bc..d4ada4d199 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -251,6 +251,33 @@ android:key="miband3_display_items" android:summary="@string/mi2_prefs_display_items_summary" android:title="@string/mi2_prefs_display_items"/> + + + + + + + + + + + + Date: Mon, 27 Aug 2018 22:58:30 +0200 Subject: [PATCH 8/9] Mi Band 3: temporarily disable sunset/sunrise night mode setting Will revert after we support setting sunrise/sunset --- app/src/main/res/values/arrays.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 450218da8c..c313189009 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -172,12 +172,16 @@ @string/off + @string/mi2_dnd_scheduled @string/p_off + @string/p_scheduled From 6904a62d41e19494cbfed6d8773db14042b2376e Mon Sep 17 00:00:00 2001 From: Pavel Elagin Date: Tue, 28 Aug 2018 15:03:57 +0300 Subject: [PATCH 9/9] Add share log file. Issue #1146 --- .../gadgetbridge/GBApplication.java | 4 ++ .../freeyourgadget/gadgetbridge/Logging.java | 7 +++ .../activities/DebugActivity.java | 52 ++++++++++++++++++- app/src/main/res/layout/activity_debug.xml | 7 +++ app/src/main/res/values-ru/strings.xml | 13 ++--- app/src/main/res/values/strings.xml | 4 ++ 6 files changed, 80 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java index f7c0e442b3..5fa7715a61 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java @@ -228,6 +228,10 @@ public class GBApplication extends Application { logging.setupLogging(enabled); } + public static String getLogPath(){ + return logging.getLogPath(); + } + private void setupExceptionHandler() { LoggingExceptionHandler handler = new LoggingExceptionHandler(Thread.getDefaultUncaughtExceptionHandler()); Thread.setDefaultUncaughtExceptionHandler(handler); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/Logging.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/Logging.java index b21e634ed5..fd77cb097a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/Logging.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/Logging.java @@ -54,6 +54,13 @@ public abstract class Logging { } } + public String getLogPath() { + if (fileLogger != null) + return fileLogger.getFile(); + else + return null; + } + public void debugLoggingConfiguration() { // For debugging problems with the logback configuration LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java index 3a1d8391bd..7e87882d91 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java @@ -17,12 +17,15 @@ along with this program. If not, see . */ package nodomain.freeyourgadget.gadgetbridge.activities; +import android.app.AlertDialog; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; +import android.net.Uri; import android.os.Bundle; import android.support.v4.app.NavUtils; import android.support.v4.app.NotificationCompat; @@ -39,6 +42,7 @@ import android.widget.Toast; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; import java.util.ArrayList; import java.util.Objects; @@ -53,9 +57,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.NotificationType; import nodomain.freeyourgadget.gadgetbridge.model.RecordedDataTypes; import nodomain.freeyourgadget.gadgetbridge.util.GB; +import static android.content.Intent.EXTRA_SUBJECT; import static nodomain.freeyourgadget.gadgetbridge.util.GB.NOTIFICATION_CHANNEL_ID; - public class DebugActivity extends AbstractGBActivity { private static final Logger LOG = LoggerFactory.getLogger(DebugActivity.class); @@ -235,12 +239,58 @@ public class DebugActivity extends AbstractGBActivity { testNewFunctionality(); } }); + + Button shareLogButton = findViewById(R.id.shareLog); + shareLogButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showWarning(); + } + }); + } + + private void showWarning() { + new AlertDialog.Builder(this) + .setCancelable(true) + .setTitle(R.string.warning) + .setMessage(R.string.share_log_warning) + .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String fileName = GBApplication.getLogPath(); + if (fileName != null && fileName.length() > 0) { + Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); + emailIntent.setType("*/*"); + emailIntent.putExtra(EXTRA_SUBJECT, "Gadgetbridge log file"); + emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(fileName))); + startActivity(Intent.createChooser(emailIntent, "Share File")); + } + } + }) + .setNegativeButton(R.string.Cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // do nothing + } + }) + .show(); } private void testNewFunctionality() { GBApplication.deviceService().onTestNewFunction(); } + private void shareLog() { + String fileName = GBApplication.getLogPath(); + if(fileName != null && fileName.length() > 0) { + Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); + emailIntent.setType("*/*"); + emailIntent.putExtra(EXTRA_SUBJECT, "Gadgetbridge log file"); + emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(fileName))); + startActivity(Intent.createChooser(emailIntent, "Share File")); + } + } + private void testNotification() { Intent notificationIntent = new Intent(getApplicationContext(), DebugActivity.class); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK diff --git a/app/src/main/res/layout/activity_debug.xml b/app/src/main/res/layout/activity_debug.xml index 32aa9a3869..6bbfe1b949 100644 --- a/app/src/main/res/layout/activity_debug.xml +++ b/app/src/main/res/layout/activity_debug.xml @@ -138,6 +138,13 @@ grid:layout_columnSpan="2" grid:layout_gravity="fill_horizontal" android:text="Test New Functionality" /> +