From 35c7ea4049e5b416047e382dfb4d29d7eb06e5f1 Mon Sep 17 00:00:00 2001 From: hackoder Date: Sun, 15 Mar 2020 09:44:47 +0100 Subject: [PATCH 01/25] Set max limit on notification body (Fossil Hybrid HR). (#1820) Set max limit on notification body. --- .../fossil/notification/PlayNotificationRequest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/PlayNotificationRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/PlayNotificationRequest.java index 977c6e0d2..b3e0c9f09 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/PlayNotificationRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/notification/PlayNotificationRequest.java @@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.fo import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.Charset; +import java.util.Arrays; import java.util.zip.CRC32; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.adapter.fossil.FossilWatchAdapter; @@ -57,7 +58,9 @@ public abstract class PlayNotificationRequest extends FilePutRequest { byte[] senderBytes = nullTerminatedSender.getBytes(charsetUTF8); String nullTerminatedMessage = StringUtils.terminateNull(message); byte[] messageBytes = nullTerminatedMessage.getBytes(charsetUTF8); - + if (messageBytes.length > 490) { + messageBytes = Arrays.copyOf(messageBytes, 490); + } short mainBufferLength = (short) (lengthBufferLength + uidLength + appBundleCRCLength + titleBytes.length + senderBytes.length + messageBytes.length); ByteBuffer mainBuffer = ByteBuffer.allocate(mainBufferLength); From 9ac36c78392c1db8135312d0bc3414337674551e Mon Sep 17 00:00:00 2001 From: Rafael Fontenelle Date: Thu, 12 Mar 2020 09:56:12 +0000 Subject: [PATCH 02/25] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (766 of 766 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/pt_BR/ --- app/src/main/res/values-pt-rBR/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 6d7ff4cd4..7d542e88e 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -848,4 +848,6 @@ Encontrei! Forçar preto no esquema de cores branco Útil se seu relógio possui ponteiros escuros + Localizar meu telefone + Notificações de Gadgetbridge de alta prioridade \ No newline at end of file From 83a76a0dbfe0695a318452b5700f2a9d68765430 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Thu, 12 Mar 2020 12:20:44 +0000 Subject: [PATCH 03/25] Translated using Weblate (Hebrew) Currently translated at 100.0% (766 of 766 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/he/ --- app/src/main/res/values-he/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 992426208..8ed802fdf 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -838,4 +838,6 @@ מצאתי! לאכוף ערכת צבעים שחור על לבן שימושי לידיים כהות + איתור הטלפון שלי + התראות מ־Gadgetbridge בעדיפות גבוהה \ No newline at end of file From 6ab59557479b5c938efbbebc7616721c546c6ce4 Mon Sep 17 00:00:00 2001 From: Rafael Fontenelle Date: Thu, 12 Mar 2020 12:57:05 +0000 Subject: [PATCH 04/25] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (768 of 768 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/pt_BR/ --- app/src/main/res/values-pt-rBR/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 7d542e88e..f19c4cd74 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -850,4 +850,6 @@ Útil se seu relógio possui ponteiros escuros Localizar meu telefone Notificações de Gadgetbridge de alta prioridade + Mostrar ícone de notificação específica do dispositivo + Mostra o ícone de notificação Android específico de um dispositivo em vez do ícone do Gadgetbridge quando conectado \ No newline at end of file From 5c182dd2ffc1d9b83d4b7402130a3d03a444ac3a Mon Sep 17 00:00:00 2001 From: nautilusx Date: Fri, 13 Mar 2020 06:06:49 +0000 Subject: [PATCH 05/25] Translated using Weblate (German) Currently translated at 100.0% (768 of 768 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/ --- app/src/main/res/values-de/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 45b125244..8e63b4def 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -845,4 +845,8 @@ Gefunden! Schwarz-Weiß-Farbschema erzwingen Nützlich, wenn deine Uhr dunkle Zeiger hat + Mein Telefon finden + Gadgetbridge-Benachrichtigungen mit hoher Priorität + Gerätespezifisches Benachrichtigungssymbol anzeigen + Zeige ein gerätespezifisches Android-Benachrichtigungssymbol anstelle des Gadgetbridge-Symbols, wenn eine Verbindung besteht \ No newline at end of file From 1d6b1b049a146a17e7ca60cde0c23ddc703dcf4b Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Thu, 12 Mar 2020 13:42:09 +0000 Subject: [PATCH 06/25] Translated using Weblate (Hebrew) Currently translated at 100.0% (768 of 768 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/he/ --- app/src/main/res/values-he/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 8ed802fdf..561eab37b 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -840,4 +840,6 @@ שימושי לידיים כהות איתור הטלפון שלי התראות מ־Gadgetbridge בעדיפות גבוהה + הצגת סמל התראה ייעודי למכשיר + הצגת התראת Android תואמת מכשיר במקום הסמל של Gadgetbridge כשיש חיבור \ No newline at end of file From 7268a9343c9380461167295ed100b074bb4cb010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=B0=91=E4=B8=BE?= Date: Thu, 12 Mar 2020 13:56:13 +0000 Subject: [PATCH 07/25] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (768 of 768 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index e141dca60..c56ae10b1 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -838,4 +838,6 @@ 如果您双手颜色较深,将会有帮助 查找我的手机 Gadgetbridge 通知高优先级 + 显示设备特定的通知图标 + 显示设备指定的 Android 通知图标以替代已连接时的 Gadgetbridge 图标 \ No newline at end of file From 11223be4453eae3ea4767583441fe3c83d63f4f8 Mon Sep 17 00:00:00 2001 From: homocomputeris Date: Sat, 14 Mar 2020 22:19:02 +0000 Subject: [PATCH 08/25] Translated using Weblate (Russian) Currently translated at 98.4% (756 of 768 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ru/ --- app/src/main/res/values-ru/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index de90c736f..012ea5aee 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -823,4 +823,9 @@ iTag Разрешить высокий MTU Увеличивает скорость передачи данных, но может не работать на некоторых Android-устройствах. + Включает уведомления календаря, даже когда отключено + Синхронизировать события в календаре + Найти телефон + Показывать собственную иконку устройства + При подключении показывать в уведомлении собственную иконку устройства вместо иконки Gadgetbridge \ No newline at end of file From 0664b5146fcbc84de7e0b6628d81756ee206b352 Mon Sep 17 00:00:00 2001 From: Rafael Fontenelle Date: Sat, 14 Mar 2020 23:46:47 +0000 Subject: [PATCH 09/25] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (775 of 775 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/pt_BR/ --- app/src/main/res/values-pt-rBR/strings.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index f19c4cd74..a8763b31a 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -852,4 +852,11 @@ Notificações de Gadgetbridge de alta prioridade Mostrar ícone de notificação específica do dispositivo Mostra o ícone de notificação Android específico de um dispositivo em vez do ícone do Gadgetbridge quando conectado + Bem-estar + Treino + Cronômetro + Comutar + Botão superior + Botão do meio + Botão inferior \ No newline at end of file From 656584463f61fc4dadce1f6dbef599f20423b447 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Sun, 15 Mar 2020 08:05:50 +0000 Subject: [PATCH 10/25] Translated using Weblate (Hebrew) Currently translated at 100.0% (775 of 775 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/he/ --- app/src/main/res/values-he/strings.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 561eab37b..eb828e2ec 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -842,4 +842,11 @@ התראות מ־Gadgetbridge בעדיפות גבוהה הצגת סמל התראה ייעודי למכשיר הצגת התראת Android תואמת מכשיר במקום הסמל של Gadgetbridge כשיש חיבור + רווחה + אימון + שעון עצר + התניידות + כפתור עליון + כפתור אמצעי + כפתור תחתון \ No newline at end of file From 70dfd93215d151557cc3a84d26a8557684c921e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=B0=91=E4=B8=BE?= Date: Sun, 15 Mar 2020 02:15:44 +0000 Subject: [PATCH 11/25] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (775 of 775 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index c56ae10b1..16d63a097 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -840,4 +840,11 @@ Gadgetbridge 通知高优先级 显示设备特定的通知图标 显示设备指定的 Android 通知图标以替代已连接时的 Gadgetbridge 图标 + 健康 + 健身 + 秒表 + 通勤 + 上按钮 + 中按钮 + 下按钮 \ No newline at end of file From 5daa57e8935bb5b5cdd3133c95f9532de657ca42 Mon Sep 17 00:00:00 2001 From: Andy Yang Date: Sun, 15 Mar 2020 10:38:10 +0000 Subject: [PATCH 12/25] Translated using Weblate (Chinese (Traditional)) Currently translated at 57.9% (449 of 775 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hant/ --- app/src/main/res/values-zh-rTW/strings.xml | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 86e4e6d5d..87526176f 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -401,4 +401,71 @@ 您即將安裝 %s。 裝置電量不足! %1$s 電量剩餘:%2$s%% + 經度 + 螢幕逾時 + 螢幕逾時(秒) + 最低心率 + 測試 + 無法連線。藍芽位址無效? + 不適用 + 正在與 %s 配對… + 未輸入 MAC 位址,無法配對。 + 未提供有效的使用者資料,目前使用假定資料。 + 請確認您的裝置可以被偵測到。已連接的裝置將無法被偵測。請在 Android 6 以上的裝置啟用位置權限(如:GPS)。請對 Gadgetbridge 停用隱私守衛,因為這可能會導致您的手機崩潰並重新啟動。如果在數分鐘後仍未找到任何裝置,請重新啟動您的手機並再試一次。 + 備註: + 正在初始化 + 低電量警告 + 取消以停止振動。 + 上次充電:%s +\n + 匯出資料庫失敗!請檢查您的設定值。 + 韌體安裝完成 + 韌體安裝完成,正在重啟裝置… + 步數 + 卡路里 + 距離 + 尋找手機 + 正在安裝韌體 + 您確定要匯入資料? + 匯入資料庫時發生錯誤:%1$s + 資料已刪除。 + 資料庫的自動匯出位置已設定為: + 自動匯出 + 立即執行自動匯出 + 正在匯出資料庫… + 取消 + 刪除 + 配對 + 運動 + GPS 誤差校正 + 資源包 + 未知的裝置 + 測試用裝置 + 支付寶(捷徑) + 鬧鐘 + 支付寶 + 通知過濾 + 輸入要進行比對的字,使用換行作為分隔 + 通知過濾已儲存 + 不過濾 + 在包含這些字時顯示 + 在包含這些字時隱藏 + 部份符合 + 完全符合 + 請至少輸入一個字 + 過濾模式 + 模式設定 + 新增小工具 + 貪睡 + 允許較高的 MTU 值 + 提高傳送速度,但可能無法在某些 Android 裝置上使用。 + 啟用日曆事件通知,即便在未連線時 + 同步日曆事件 + 心率 + 步數 + 日期 + 電量 + 天氣 + 找到了! + 尋找我的手機 \ No newline at end of file From acca1b2b263a672e1c30ce6ea05977ff143d4456 Mon Sep 17 00:00:00 2001 From: nautilusx Date: Mon, 16 Mar 2020 17:45:28 +0000 Subject: [PATCH 13/25] Translated using Weblate (German) Currently translated at 99.8% (774 of 775 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/ --- app/src/main/res/values-de/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 8e63b4def..10f5a1199 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -849,4 +849,10 @@ Gadgetbridge-Benachrichtigungen mit hoher Priorität Gerätespezifisches Benachrichtigungssymbol anzeigen Zeige ein gerätespezifisches Android-Benachrichtigungssymbol anstelle des Gadgetbridge-Symbols, wenn eine Verbindung besteht + Wellness + Training + Stoppuhr + Obere Taste + Mittlere Taste + Untere Taste \ No newline at end of file From 9846f202768df65e661d9b8a2b9dddec0bfe159e Mon Sep 17 00:00:00 2001 From: FransM Date: Mon, 16 Mar 2020 18:27:45 +0000 Subject: [PATCH 14/25] Translated using Weblate (Dutch) Currently translated at 100.0% (775 of 775 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/nl/ --- app/src/main/res/values-nl/strings.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 2c526e21f..51b13ea2f 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -836,4 +836,15 @@ Gevonden! Zwart op wit kleurenschema forceren Nuttig als je horloge donkere wijzers heeft + Vind mijn telefoon + Gadgetbridge hoge prioriteit meldingen + Toon apparaat specifieke meldingspictogram + Toon een apparaatspecifiek Android-meldpictogram in plaats van het Gadgetbridge-pictogram indien verbonden + Welzijn + Training + Stopwatch + Woon-werkverkeer + Bovenste knop + Middelste knop + Onderste knop \ No newline at end of file From 3f480b30df421109c5c231d2e5b696c13824a82e Mon Sep 17 00:00:00 2001 From: Kintu Date: Wed, 18 Mar 2020 15:18:30 +0000 Subject: [PATCH 15/25] Translated using Weblate (Catalan) Currently translated at 100.0% (775 of 775 strings) Translation: Freeyourgadget/Gadgetbridge Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ca/ --- app/src/main/res/values-ca/strings.xml | 58 ++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 144d7a464..3fdf5b3a4 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -335,7 +335,7 @@ Accions del botó Especifiqueu les accions en prémer el botó Nombre de pulsacions del botó - Nombre de vegades que cal prémer el botó per activar la difusió de missatge + Nombre de vegades que cal prémer el botó per activar un Esdeveniment 1. Després, prémer el mateix nombre de vegades crearà un Esdeveniment 2, i successivament. Missatge de difusió a enviar Activa el botó d\'acció Activa un acció en prémer un botó un cert nombre de vegades @@ -347,7 +347,7 @@ Notificació d\'objectiu La polsera vibrarà quan l\'objectiu diari de passes siga assolit Elements a mostrar - Escolliu els elements a mostrar en la pantalla de la polsera + Escolliu els elements a mostrar a la pantalla de la polsera Activa la pantalla en alçar-la Gira el canell per canviar la informació No molesteu @@ -437,7 +437,7 @@ No enviïs l\'ACK de les dades d\'activitats Si l\'arribada de les dades d\'activitats no és notificada a la polsera, aquestes dades no s\'eliminaran. Aquesta opció pot ser útil si feu servir el Gadgebridge també amb altres aplicacions. Les dades d\'activitats de la Mi Band es guardaran fins i tot després de sincronitzar. Aquesta opció pot ser útil si feu servir el Gadgebridge també amb altres aplicacions. - Messatge que s\'enviarà quan s\'hagi premut el botó el nombre de vegades establert + Difón el missatge enviat amb l\'esdeveniment. El paràmetre `button_id` és afegit automàticament a cada missatge. Retard després d\'una acció de botó (el nombre és a l\'intent extra de button_id) o 0 per procedir immediatament Desa dades sense processar a la base de dades Desa les dades \"tal qual\", tot augmentant l\'ús de la base de dades per tal de permetre possibles interpretacions més tard. @@ -793,4 +793,56 @@ Fes servir la teva banda per a reproduir el to del telèfon. Aquest aparell requereix una clau d\'autenticació secreta, mantingueu premut sobre l\'aparell per a introduir-la. Consulteu la wiki. Augmenta la velocitat de transferència, però pot ser que no funcioni en alguns aparells Android. + Fossil Q Hybrid + Configuració de Q Hybrid + Rellotge no connectat + intensitat de vibració: + Objectiu en passes + decalat horari + decalat del segon fus horari relatiu a UTC + sobreescriu els botons + utilitza la maneta d\'activitat com a comptador de notificacions + Si us plau, estableix el comptador de passes a un milió per a activar-ho. + Botons sobreescrits + Error al sobreescriure botons + decala el fus horari en + el canvi pot trigar uns segons… + temps decalat en + Desactiva el nou escaneig BLE + Marca aquesta opció si el teu aparell no pot ser trobat durant la detecció + Bangle.js + Y5 + Acció d\'esdeveniment 1 + Acció d\'esdeveniment 2 + Acció d\'esdeveniment 3 + Configuració detallada de premuda de botó + Acció de premuda llarga de botó + Posposa + S\'ha de permetre i activar l\'accés a la localitztació per al correcte funcionament de l\'escaneig + iTag + Permet una alta MTU + Activa les alertes de calendari, fins i tot quan estigui desconnectat + Sincronitza els esdeveniments del calendari + Ritme cardíac + Passes + Data + Minuts actius + Calories + Bateria + El temps + Res + Trobat! + Força l\'esquema de color blanc sobre negre + Útil si si el teu rellotge té les manetes negres + Troba el meu telèfon + Notificacions de Gadgetbridge d\'alta prioritat + Mostra l\'icona de notificació específica de l\'aparell + Mostra l\'icona de notificació d\'Android específica de l\'aparell enlloc de l\'icona de Gadgetbridge quan estigui connectat + Benestar + Entrenament + Cronòmetre + Desplçament + Botó superior + Botó mitger + Botó inferior \ No newline at end of file From 101e2c66642bcfafc2014f479b71a1831d55c374 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 20 Mar 2020 17:14:00 +0100 Subject: [PATCH 16/25] Fossil Hybrid HR: allow setting vibration strength Also allow re-fetching of configuration again (it updates battery levels) --- .../DeviceSettingsPreferenceConst.java | 1 + .../DeviceSpecificSettingsFragment.java | 2 ++ .../devices/qhybrid/QHybridCoordinator.java | 2 +- .../adapter/fossil_hr/FossilHRWatchAdapter.java | 14 +++++++++++++- app/src/main/res/values/strings.xml | 1 + .../main/res/xml/devicesettings_fossilhybridhr.xml | 10 +++++++++- 6 files changed, 27 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java index b74575ba2..72573b18f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java @@ -28,4 +28,5 @@ public class DeviceSettingsPreferenceConst { public static final String PREF_BUTTON_1_FUNCTION = "button_1_function"; public static final String PREF_BUTTON_2_FUNCTION = "button_2_function"; public static final String PREF_BUTTON_3_FUNCTION = "button_3_function"; + public static final String PREF_VIBRATION_STRENGH_PERCENTAGE = "vibration_strength"; } \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java index 2c9ce0c49..dbd96d8a6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java @@ -45,6 +45,7 @@ import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.Dev import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DATEFORMAT; import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_SCREEN_ORIENTATION; import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_TIMEFORMAT; +import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_VIBRATION_STRENGH_PERCENTAGE; import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_WEARLOCATION; import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT; import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISCONNECT_NOTIFICATION; @@ -319,6 +320,7 @@ public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat { addPreferenceHandlerFor(PREF_BUTTON_1_FUNCTION); addPreferenceHandlerFor(PREF_BUTTON_2_FUNCTION); addPreferenceHandlerFor(PREF_BUTTON_3_FUNCTION); + addPreferenceHandlerFor(PREF_VIBRATION_STRENGH_PERCENTAGE); String displayOnLiftState = prefs.getString(PREF_ACTIVATE_DISPLAY_ON_LIFT, PREF_DO_NOT_DISTURB_OFF); boolean displayOnLiftScheduled = displayOnLiftState.equals(PREF_DO_NOT_DISTURB_SCHEDULED); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java index 4f4802d9c..12d444e82 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java @@ -79,7 +79,7 @@ public class QHybridCoordinator extends AbstractDeviceCoordinator { @Override public boolean supportsActivityDataFetching() { - return false; + return true; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java index 41a5eaed8..ad8d955e0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java @@ -106,7 +106,7 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { loadNotificationConfigurations(); queueWrite(new NotificationFilterPutHRRequest(this.notificationConfigurations, this)); - setVibrationStrength((short) 75); + setVibrationStrength(); syncSettings(); @@ -123,6 +123,15 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { queueWrite(new SetDeviceStateRequest(GBDevice.State.INITIALIZED)); } + private void setVibrationStrength() { + Prefs prefs = new Prefs(getDeviceSpecificPreferences()); + int vibrationStrengh = prefs.getInt(DeviceSettingsPreferenceConst.PREF_VIBRATION_STRENGH_PERCENTAGE, 2); + if (vibrationStrengh > 0) { + vibrationStrengh = (vibrationStrengh + 1) * 25; // Seems 0,50,75,100 are working... + } + setVibrationStrength((short) (vibrationStrengh)); + } + @Override public void setVibrationStrength(short strength) { negotiateSymmetricKey(); @@ -692,6 +701,9 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { case DeviceSettingsPreferenceConst.PREF_BUTTON_2_FUNCTION: case DeviceSettingsPreferenceConst.PREF_BUTTON_3_FUNCTION: overwriteButtons(null); + break; + case DeviceSettingsPreferenceConst.PREF_VIBRATION_STRENGH_PERCENTAGE: + setVibrationStrength(); } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ab354ee0f..01d37264e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -186,6 +186,7 @@ Increases transfer speed, but might not work on some Android devices. Enables calendar alerts, even when disconnected Sync calendar events + Vibration strength Connect new device button Always visible Visible only if no device is added diff --git a/app/src/main/res/xml/devicesettings_fossilhybridhr.xml b/app/src/main/res/xml/devicesettings_fossilhybridhr.xml index a2a2e608b..4217e9401 100644 --- a/app/src/main/res/xml/devicesettings_fossilhybridhr.xml +++ b/app/src/main/res/xml/devicesettings_fossilhybridhr.xml @@ -1,5 +1,6 @@ - + + + From ea606713d724ed695cf5a65da6de0d4a941b4dba Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 20 Mar 2020 17:21:20 +0100 Subject: [PATCH 17/25] Huami: Igore all-day events when syncing calendar events --- .../gadgetbridge/service/devices/huami/HuamiSupport.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java index 6069ae144..7616846c6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java @@ -1697,6 +1697,9 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { int iteration = 0; for (CalendarEvents.CalendarEvent mEvt : mEvents) { + if (mEvt.isAllDay()) { + continue; + } if (iteration >= availableSlots || iteration > 2) { break; } @@ -1724,6 +1727,10 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { int iteration = 0; for (CalendarEvents.CalendarEvent calendarEvent : calendarEvents) { + if (calendarEvent.isAllDay()) { + continue; + } + if (iteration > 8) { // limit ? break; } From 518edc8e878458a71b8841fdb0bc99bf98eb337c Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 20 Mar 2020 17:21:40 +0100 Subject: [PATCH 18/25] add changelog (WIP) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64adc34bb..0e9adf892 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,11 @@ ### Changelog +#### Version 0.43.0 (WIP) +* Initial support for Fossil Hybrid HR (needs complicated key extraction, read wiki) +* Fossil: Allow switching off the Q Icon and use the default Gadgetbridge icon +* Fix VoIP call handling during DND +* Fix find-my-phone for Android 10 +* Huami: Fix crash when calendar event desctription or title was null +* Huami: Igore all-day events when syncing calendar events #### Version 0.42.1 * Fix accepting/rejecting calls on Android 9 From 8d89c397a7035ecaafcdd35045ab875ceea1d1cc Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 20 Mar 2020 21:52:59 +0100 Subject: [PATCH 19/25] repare release --- CHANGELOG.md | 2 +- app/src/main/res/xml/changelog_master.xml | 8 ++++++++ fastlane/metadata/android/en-US/changelogs/169.txt | 6 ++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/169.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e9adf892..14baf4985 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ ### Changelog -#### Version 0.43.0 (WIP) +#### Version 0.43.0 * Initial support for Fossil Hybrid HR (needs complicated key extraction, read wiki) * Fossil: Allow switching off the Q Icon and use the default Gadgetbridge icon * Fix VoIP call handling during DND diff --git a/app/src/main/res/xml/changelog_master.xml b/app/src/main/res/xml/changelog_master.xml index 5f6349d9b..ed8f95ab3 100644 --- a/app/src/main/res/xml/changelog_master.xml +++ b/app/src/main/res/xml/changelog_master.xml @@ -1,5 +1,13 @@ + + Initial support for Fossil Hybrid HR (needs complicated key extraction, read wiki) + Fossil: Allow switching off the Q Icon and use the default Gadgetbridge icon + Fix VoIP call handling during DND + Fix find-my-phone for Android 10 + Huami: Fix crash when calendar event desctription or title was null + Huami: Igore all-day events when syncing calendar events + Fix accepting/rejecting calls on Android 9 Mi Band 3/4, Amazfit Bip/Cor/GTS/GTR: Option to sync calender events as reminder diff --git a/fastlane/metadata/android/en-US/changelogs/169.txt b/fastlane/metadata/android/en-US/changelogs/169.txt new file mode 100644 index 000000000..88e4575e0 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/169.txt @@ -0,0 +1,6 @@ +* Initial support for Fossil Hybrid HR (needs complicated key extraction, read wiki) +* Fossil: Allow switching off the Q Icon and use the default Gadgetbridge icon +* Fix VoIP call handling during DND +* Fix find-my-phone for Android 10 +* Huami: Fix crash when calendar event desctription or title was null +* Huami: Igore all-day events when syncing calendar events From c66e9450d3bddfa1bae27c32a22b002c0c30ca71 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Mon, 23 Mar 2020 11:02:22 +0100 Subject: [PATCH 20/25] Try to blindly enable Amazfit Bip S This is an initial bringup it will most probably fail in some areas Related: #1822 --- .../amazfitbips/AmazfitBipSCoordinator.java | 94 +++++++++++++++++++ .../gadgetbridge/model/DeviceType.java | 1 + .../service/DeviceSupportFactory.java | 4 + .../huami/amazfitbip/AmazfitBipSSupport.java | 43 +++++++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 143 insertions(+) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSSupport.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java new file mode 100644 index 000000000..e5526a8dc --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java @@ -0,0 +1,94 @@ +/* Copyright (C) 2017-2020 Andreas Shimokawa, Carsten Pfeiffer, Daniele + Gobbetti, João Paulo Barraca, Nephiel, vanous + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbips; + +import android.bluetooth.BluetoothDevice; +import android.content.Context; +import android.net.Uri; + +import androidx.annotation.NonNull; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; +import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; + +public class AmazfitBipSCoordinator extends HuamiCoordinator { + private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipSCoordinator.class); + + @Override + public DeviceType getDeviceType() { + return DeviceType.AMAZFITBIPS; + } + + @NonNull + @Override + public DeviceType getSupportedType(GBDeviceCandidate candidate) { + try { + BluetoothDevice device = candidate.getDevice(); + String name = device.getName(); + if (name != null && (name.equalsIgnoreCase("Amazfit Bip S"))) { + return DeviceType.AMAZFITBIPS; + } + } catch (Exception ex) { + LOG.error("unable to check device support", ex); + } + return DeviceType.UNKNOWN; + } + + @Override + public InstallHandler findInstallHandler(Uri uri, Context context) { + return null; + } + + @Override + public boolean supportsHeartRateMeasurement(GBDevice device) { + return true; + } + + @Override + public boolean supportsActivityTracks() { + return true; + } + + @Override + public boolean supportsWeather() { + return true; + } + + @Override + public int[] getSupportedDeviceSpecificSettings(GBDevice device) { + return new int[]{ + R.xml.devicesettings_amazfitbip, + R.xml.devicesettings_timeformat, + R.xml.devicesettings_wearlocation, + R.xml.devicesettings_custom_emoji_font, + R.xml.devicesettings_liftwrist_display, + R.xml.devicesettings_disconnectnotification, + R.xml.devicesettings_sync_calendar, + R.xml.devicesettings_expose_hr_thirdparty, + R.xml.devicesettings_buttonactions_with_longpress, + R.xml.devicesettings_pairingkey + }; + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java index e8b9e25e6..789c2f585 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -43,6 +43,7 @@ public enum DeviceType { AMAZFITBIP_LITE(17, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_amazfit_bip_lite), AMAZFITGTR(18, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_amazfit_gtr), AMAZFITGTS(19, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_amazfit_gts), + AMAZFITBIPS(20, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_amazfit_bips), LIVEVIEW(30, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled, R.string.devicetype_liveview), HPLUS(40, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_hplus), MAKIBESF68(41, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_makibes_f68), diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java index 858c34954..691dc0a30 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java @@ -36,6 +36,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.casiogb6900.CasioGB6 import nodomain.freeyourgadget.gadgetbridge.service.devices.hplus.HPlusSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipLiteSupport; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipSSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr.AmazfitGTRSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitcor.AmazfitCorSupport; @@ -148,6 +149,9 @@ public class DeviceSupportFactory { case AMAZFITBIP_LITE: deviceSupport = new ServiceDeviceSupport(new AmazfitBipLiteSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING)); break; + case AMAZFITBIPS: + deviceSupport = new ServiceDeviceSupport(new AmazfitBipSSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING)); + break; case AMAZFITGTR: deviceSupport = new ServiceDeviceSupport(new AmazfitGTRSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING)); break; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSSupport.java new file mode 100644 index 000000000..600869c7e --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSSupport.java @@ -0,0 +1,43 @@ +/* Copyright (C) 2017-2020 Andreas Shimokawa, Carsten Pfeiffer + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip; + +import android.content.Context; +import android.net.Uri; + +import java.io.IOException; + +import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip.AmazfitBipLiteFWHelper; + +public class AmazfitBipSSupport extends AmazfitBipSupport { + + @Override + public byte getCryptFlags() { + return (byte) 0x80; + } + + @Override + protected byte getAuthFlags() { + return 0x00; + } + + @Override + public HuamiFWHelper createFWHelper(Uri uri, Context context) throws IOException { + return null; + } +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 01d37264e..60a0ac1ff 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -679,6 +679,7 @@ Amazfit Cor Amazfit Cor 2 Amazfit GTR + Amazfit Bip S Vibratissimo LiveView HPlus From 334e74a794ac7985c924f0166709a52e5858ce02 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Mon, 23 Mar 2020 11:12:17 +0100 Subject: [PATCH 21/25] Update README --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4cdefbedc..d22d0a34c 100644 --- a/README.md +++ b/README.md @@ -29,13 +29,14 @@ vendor's servers. ## Supported Devices (Some of them WIP and some of them without maintainer) * Amazfit Bip [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-Bip) -* Amazfit Bip Lite (NOT RECOMMENDED, NEEDS MI FIT WITH ACCOUNT ONCE) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-Bip-Lite) +* Amazfit Bip Lite (WARNING: NEEDS MI FIT WITH ACCOUNT ONCE) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-Bip-Lite) * Amazfit Cor [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-Cor) * Amazfit Cor 2 [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-Cor-2) -* Amazfit GTR (NOT RECOMMENDED, NEEDS MI FIT WITH ACCOUNT ONCE) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-GTR) -* Amazfit GTS (NOT RECOMMENDED, NEEDS MI FIT WITH ACCOUNT ONCE) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-GTS) +* Amazfit GTR (WARNING: NEEDS MI FIT WITH ACCOUNT ONCE) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-GTR) +* Amazfit GTS (WARNING: NEEDS MI FIT WITH ACCOUNT ONCE) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-GTS) * BFH-16 * Casio GB-6900B +* Fossil Hybrid HR (WARNING: NEEDS FOSSIL APP WITH ACCOUNT ONCE AND COMPLICATED PROCEDURE) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Fossil-Hybrid-HR) * Fossil Q Hybrid * HPlus Devices (e.g. ZeBand) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/HPlus) * iTag @@ -81,7 +82,7 @@ Please see [FEATURES.md](https://codeberg.org/Freeyourgadget/Gadgetbridge/src/ma * Jean-François Greffier (Mi Scale 2) * Johannes Schmitt (BFH-16) * Lukas Schwichtenberg (Makibes HR3) -* Daniel Dakhno (Fossil Q Hybrid) +* Daniel Dakhno (Fossil Q Hybrid, Fossil Hybrid HR) * Gordon Williams (Bangle.js) * Pavel Elagin (JYou Y5) * Taavi Eomäe (iTag) From 9fd5a053310ef27477cfc116fb504cb6b6a11eba Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Mon, 23 Mar 2020 11:58:14 +0100 Subject: [PATCH 22/25] fix Bip S discovery --- .../nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java index e904758d1..cda97642a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java @@ -48,6 +48,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.hplus.EXRIZUK8Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.hplus.HPlusCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.hplus.MakibesF68Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip.AmazfitBipLiteCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbips.AmazfitBipSCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr.AmazfitGTRCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgts.AmazfitGTSCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.itag.ITagCoordinator; @@ -216,6 +217,7 @@ public class DeviceHelper { result.add(new AmazfitCor2Coordinator()); result.add(new AmazfitGTRCoordinator()); result.add(new AmazfitGTSCoordinator()); + result.add(new AmazfitBipSCoordinator()); result.add(new MiBand3Coordinator()); result.add(new MiBand4Coordinator()); result.add(new MiBand2HRXCoordinator()); From ff3ce84ba1c61224380560600a59184e2cced1d3 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Mon, 23 Mar 2020 14:57:26 +0100 Subject: [PATCH 23/25] Amazfit Bip S: force key input before pairing --- .../devices/huami/amazfitbips/AmazfitBipSCoordinator.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java index e5526a8dc..9acf0a5dd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java @@ -91,4 +91,9 @@ public class AmazfitBipSCoordinator extends HuamiCoordinator { R.xml.devicesettings_pairingkey }; } + + @Override + public int getBondingStyle() { + return BONDING_STYLE_REQUIRE_KEY; + } } From f04c9aed2969d6e5f357edcd2dcfd3a0251f88dd Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Thu, 26 Mar 2020 23:27:35 +0100 Subject: [PATCH 24/25] Amazfit Bip S: Fix empty notifications Was reported to work in #1822 --- .../devices/huami/amazfitbip/AmazfitBipSSupport.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSSupport.java index 600869c7e..71b308efd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSSupport.java @@ -22,7 +22,7 @@ import android.net.Uri; import java.io.IOException; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper; -import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip.AmazfitBipLiteFWHelper; +import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; public class AmazfitBipSSupport extends AmazfitBipSupport { @@ -30,7 +30,12 @@ public class AmazfitBipSSupport extends AmazfitBipSupport { public byte getCryptFlags() { return (byte) 0x80; } - + + @Override + public void onNotification(NotificationSpec notificationSpec) { + super.sendNotificationNew(notificationSpec, true); + } + @Override protected byte getAuthFlags() { return 0x00; From 1a57c4db68e359ff8fe54eba67f7cdb16ba69c90 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 27 Mar 2020 11:00:16 +0100 Subject: [PATCH 25/25] Amazift Bip Lite: Allow relaxing firmware checks to allow flashing of the regular Bip firmware (for the brave) Closes #1819 --- .../DeviceSettingsPreferenceConst.java | 1 + .../amazfitbip/AmazfitBipLiteCoordinator.java | 19 +++++++++++++++++++ .../AmazfitBipLiteFirmwareInfo.java | 12 ++++++++++++ app/src/main/res/values/strings.xml | 2 ++ .../devicesettings_relax_firmware_checks.xml | 8 ++++++++ 5 files changed, 42 insertions(+) create mode 100644 app/src/main/res/xml/devicesettings_relax_firmware_checks.xml diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java index 72573b18f..80cf5e004 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java @@ -29,4 +29,5 @@ public class DeviceSettingsPreferenceConst { public static final String PREF_BUTTON_2_FUNCTION = "button_2_function"; public static final String PREF_BUTTON_3_FUNCTION = "button_3_function"; public static final String PREF_VIBRATION_STRENGH_PERCENTAGE = "vibration_strength"; + public static final String PREF_RELAX_FIRMWARE_CHECKS = "relax_firmware_checks"; } \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java index e104c514e..6fe18a135 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java @@ -26,7 +26,9 @@ import androidx.annotation.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; @@ -63,4 +65,21 @@ public class AmazfitBipLiteCoordinator extends AmazfitBipCoordinator { public int getBondingStyle() { return BONDING_STYLE_REQUIRE_KEY; } + + @Override + public int[] getSupportedDeviceSpecificSettings(GBDevice device) { + return new int[]{ + R.xml.devicesettings_amazfitbip, + R.xml.devicesettings_timeformat, + R.xml.devicesettings_wearlocation, + R.xml.devicesettings_custom_emoji_font, + R.xml.devicesettings_liftwrist_display, + R.xml.devicesettings_disconnectnotification, + R.xml.devicesettings_sync_calendar, + R.xml.devicesettings_expose_hr_thirdparty, + R.xml.devicesettings_buttonactions_with_longpress, + R.xml.devicesettings_pairingkey, + R.xml.devicesettings_relax_firmware_checks, + }; + } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteFirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteFirmwareInfo.java index bfe279e8e..98607ec98 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteFirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteFirmwareInfo.java @@ -19,11 +19,14 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip; import java.util.HashMap; import java.util.Map; +import nodomain.freeyourgadget.gadgetbridge.GBApplication; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareInfo; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType; import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils; +import nodomain.freeyourgadget.gadgetbridge.util.Prefs; public class AmazfitBipLiteFirmwareInfo extends HuamiFirmwareInfo { @@ -66,6 +69,15 @@ public class AmazfitBipLiteFirmwareInfo extends HuamiFirmwareInfo { if (searchString32BitAligned(bytes, "Amazfit Bip Lite")) { return HuamiFirmwareType.FIRMWARE; } + GBDevice device = GBApplication.app().getDeviceManager().getSelectedDevice(); + if (device != null) { + Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(device.getAddress())); + if (prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_RELAX_FIRMWARE_CHECKS, false)) { + if (searchString32BitAligned(bytes, "Amazfit Bip")) { + return HuamiFirmwareType.FIRMWARE; + } + } + } return HuamiFirmwareType.INVALID; } if (ArrayUtils.startsWith(bytes, WATCHFACE_HEADER)) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 60a0ac1ff..6f3901e4e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -186,6 +186,8 @@ Increases transfer speed, but might not work on some Android devices. Enables calendar alerts, even when disconnected Sync calendar events + Relax firmware checks + Enable this if you want to flash a firmware not intended for you device (at your own risk) Vibration strength Connect new device button Always visible diff --git a/app/src/main/res/xml/devicesettings_relax_firmware_checks.xml b/app/src/main/res/xml/devicesettings_relax_firmware_checks.xml new file mode 100644 index 000000000..aad1eca53 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_relax_firmware_checks.xml @@ -0,0 +1,8 @@ + + + +