From 020d758f692d25c4ee6fecfb4af6f551fe6f3986 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Sun, 6 Sep 2015 21:13:10 +0200 Subject: [PATCH 1/2] Updated translations --- app/src/main/res/values-de/strings.xml | 47 +++++++++++++++++++++++++- app/src/main/res/values-es/strings.xml | 33 ++++++++++++++++-- app/src/main/res/values-fr/strings.xml | 4 +-- app/src/main/res/values-it/strings.xml | 2 -- app/src/main/res/values-ko/strings.xml | 2 -- app/src/main/res/values-ru/strings.xml | 2 -- app/src/main/res/values/strings.xml | 2 +- 7 files changed, 78 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e10ccfb5..77d54c80 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -5,8 +5,9 @@ Einstellungen Debug Beenden + Synchronisieren Schlafmonitor (ALPHA) - Verlegtes Gerät finden + Suche verlegtes Gerät... Bildschirmfoto Trennen Debug @@ -14,6 +15,11 @@ App Manager Löschen + FW/App Installer + Es soll die Firmware %s anstelle der aktuell installierten Version aufs Mi Band gespielt werden. + Diese Firmware ist getestet worden und ist zu Gadgetbridge kompatibel. + Diese Firmware ist nicht getestet und könnte inkompatibel mit Gadgetbridge sind.\n\nEs wird nicht empfohlen sie zu installieren! + Falls die Firmware trotzdem installiert werden soll und nachher alles korrekt funktioniert, melde bitte den Gadgetbridge Entwicklern, dass die Firmware %s tauglich ist. Einstellungen Allgemeine Einstellungen @@ -38,6 +44,8 @@ Pebble Einstellungen Benachrichtigungsprotokoll erzwingen Diese Option erzwingt das neuste Benachrichtigungsprotokoll abhängig von der Firmwareversion. NUR EINSCHALTEN, WENN DU WEISST WAS DU TUST! + Ungetestete Features freischalten + Schaltet ungetetestete Features frei. TU DIES NUR, WENN DU WEIßT, WAS DU TUST! nicht verbunden verbinde verbunden @@ -57,6 +65,7 @@ installiere Datei %1$d/%2$d Installation fehlgeschlagen! Installation erfolgreich + DU VERSUCHST EINE FIRMWARE ZU INSTALLIEREN; FAHRE AUF EIGENES RISIKO FORT.\n\n\nDiese Firmware ist für HW Revision: %s Du bist dabei die folgende app zu installieren:\n\n\n%1$s Version %2$s von %3$s\n N/A initialisiert @@ -114,6 +123,7 @@ Benachrichtigung für eingehende Anrufe Verlegtes Gerät suchen Abbrechen um die Vibration zu stoppen. + Deine Aktivität Wecker stellen Wecker stellen Wecker Stellen @@ -127,4 +137,39 @@ Intelligenter Wecker Beim Stellen der Wecker ist ein Fehler aufgetreten. Bitte erneut versuchen! Wecker wurden auf dem Gerät gestellt! + Keine Daten. Gerät synchronisieren? + %1$s an Daten werden übertragen, beginnend mit %2$s + Ziel Anzahl Schritte pro Tag + Fehler beim Ausführen von \'%1$s\' + Deine Aktivität (ALPHA) + Kann keine Verbindung herstellen: %1$s + Kann keinen Handler für die Installation dieser Datei finden. + Kann die gegebene Datei %1$s nicht installieren + Kann die gegebene Firmware nicht installieren. Sie passt nicht zur Hardware Revision der Pebble. + Bitte warten während der Installationsoption festgestellt wird... + Gadget Akkustand niedrig! + %1$s Akku übrig: %2$s%% + Zuletzt aufgeladen: %s\n + Anzahl Ladungen: %s + Dein Schlaf + Schritte der Woche + Deine Aktivität und Schlaf + Firmware wird aktualisiert... + Datei kann nicht installiert werden, Gerät nicht bereit. + Mi Band Firmware %1$s + Kompatible Version + Ungetestete Version! + Verbindung zum Gerät: %1$s + Pebble Firmware %1$s + Korrekte Hardware Revision + Falsche Hardware Revision! + %1$s (%2$s) + Problem mit der Firmwareübertragung: NICHT das Mi Band neu starten! + Problem bei der Firmware Metadatenübertragung + Firmware Installation erfolgreich beendet + Firmware Installation erfolgreich beendet, Gerät wird neu gestartet... + Schreiben der Firmware fehlgeschlagen + Schritte + Live Aktivität + Schritte heute, Ziel: %1$s diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0bfb925f..d888ee7d 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -7,7 +7,7 @@ Salir Sincronizar Monitor de sueño (ALPHA) - Encontrar dispositivo... + Encontrar dispositivo perdido... Capturar pantall Desconectar Depuración @@ -16,6 +16,10 @@ Borrar Instalador de FW/App + Estás a punto de instalar el firmware %s en lugar del que está en tu MiBand. + Este firmware ha sido probado y se sabe que es compatible con Gadgetbridge. + Este firmware no ha sido probado y puede no se compatible con Gadgetbridge.\n\nNO se recomienda la instalación en tu MiBand!. + Si aún así quieres seguir y las cosas continúan funcionando correctamente después de esto, por favor indícales a los desarrolladores de Gadgetbridge que la versión del firmware: %s funciona bien Ajustes Ajustes generales @@ -69,7 +73,7 @@ Detección de dispositivos Finalizar el escaneo Comenzar la detección - Detectar dispositivo + Conectar un nuevo dispositivo %1$s (%2$s) Emparejar dispositivo Usar el menú de emparejar Bluetooth de Android para emparejar el dispositivo. @@ -140,9 +144,32 @@ Tu actividad (ALPHA) No se puede conectar: %1$s No se ha podido encontrar un controlador para instalar este archivo. - No se puede instalar el archivo: $1%s + No se puede instalar el archivo: %1$s No se puede instalar este firmware: no coincide con la revision hardware de tu Pebble. + Por favor, espera mientras se determina el estado de la instalación... + Batería baja del Gadget! + A %1$s le queda: %2$s%% batería + Última carga: %s \n + Número de cargas: %s Tu sueño Pasos por semana Tu actividad y sueño + Actualizando firmware... + El archivo no puede ser instalado, el dispositivo no está listo. + Firmware de Miband %1$s + Versión compatible + Versión no probada! + Conexión al dispositivo: %1$s + Firmware de Pebble %1$s + Revisión de hardware correcta + La revisión de hardware no coincide! + %1$s (%2$s) + Hubo un problema con la transferencia de firmware. NO REINICIES tu MiBand! + Hubo un problema con la transferencia de metadatos del firmware + Instalación del firmware completa + Instalación del firmware completa, reiniciando dispositivo... + Falló la escritura del firmware + Pasos + Actividad + Pasos hoy, objetivo: %1$s diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index a86ebf6b..e971ee2f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -7,7 +7,6 @@ Quitter Synchroniser Moniteur de sommeil (ALPHA) - Trouver l\'appareil Prendre une capture d\'écran Déconnexion Débugger @@ -71,7 +70,6 @@ Décourir les appareils Arreter de scanner Démarrer le scan - Découvrir l\'appareil %1$s (%2$s) Coupler l\'appareil Utiliser l\'appareillage bluetouth d\'android pour coupler l\'appareil @@ -142,7 +140,7 @@ Votre activité (ALPHA) Impossible de se connecter: %1$s Impossible de trouver un gestionnaire pour installer ce fichier. - Impossible d\'installer le fichier donné: $1%s + Impossible d\'installer le fichier donné: %1$s Impossible d\'installer le firmware donnée: il ne correspond pas à la version du matériel de votre Pebble. S\'il vous plait patientez pendant la détermination du status de l\'installation... Gadget batterie Vide! diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 6196ad5a..b71c7f16 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -7,7 +7,6 @@ Esci Sincronizza Monitoraggio del sonno (ALPHA) - Trova dispositivo... Salva uno screenshot Disconetti Debug @@ -65,7 +64,6 @@ Ricerca dispositivi Interrompi scansione Inizia scansione - Cerca dispositivo %1$s (%2$s) Accoppia dispositivo Utilizza la funzione del sistema operativo per accoppiare il dispositivo. diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index d797f5e7..3a5b0e91 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -6,7 +6,6 @@ 디버그 종료 수면 측정계 (초기 버전) - 기기 찾기 스크린샷 찍기 연결 해제 디버그 @@ -64,7 +63,6 @@ 기기 찾기 스캔 중지 기기 탐색 시작 - 기기 발견 %1$s (%2$s) 기기 페어링 기기를 페어링하려면 안드로이드 블루투스 페어링 설정을 사용하세요 diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 7d763680..7c0c35c3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -6,7 +6,6 @@ Отладка Выход Анализ сна (АЛЬФА) - Найти устройство... Сделать снимок экрана Отключиться Отладка @@ -64,7 +63,6 @@ Поиск устройства Остановить поиск Умный поиск - Найти устройство %1$s (%2$s) Сопряжение устройств Для сопряжения устройств используйте диалог Android. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a7685369..84da3389 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -159,7 +159,7 @@ Your Activity (ALPHA) Cannot connect: %1$s Unable to find a handler to install this file. - Unable to install the given file: $1%s + Unable to install the given file: %1$s Unable to install the given firmware: it doesn\'t match your Pebble\'s hardware revision. Please wait while determining the installation status… Gadget battery Low! From 6c28b50f52df1adbb454fee69f6390e5df9e69c0 Mon Sep 17 00:00:00 2001 From: Daniele Gobbetti Date: Mon, 7 Sep 2015 12:06:56 +0200 Subject: [PATCH 2/2] allow the transfer of activity data without clearing MiBand's memory --- CHANGELOG.md | 3 +++ .../activities/AbstractSettingsActivity.java | 14 ++++++++--- .../devices/miband/MiBandConst.java | 2 ++ .../miband/MiBandPreferencesActivity.java | 2 ++ .../devices/miband/MiBandService.java | 6 +++-- .../operations/FetchActivityOperation.java | 25 +++++++++++++++++-- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/miband_preferences.xml | 5 ++++ 8 files changed, 51 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c0b2ca2..7e12b00c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ###Changelog +####Version next +* Miband: allow the transfer of activity data without clearing MiBand's memory + ####Version 0.5.3 * Pebble: For generic notifications, support dismissing individual notficications and "Open on Phone" feature (OG & PT) * Pebble: Allow to treat K9 notifcations as generic notifications (if notification mode is set to never) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java index dc51417a..aca51f45 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java @@ -120,10 +120,16 @@ public class AbstractSettingsActivity extends PreferenceActivity { preference.setOnPreferenceChangeListener(listener); // Trigger the listener immediately with the preference's current value. - listener.updateSummary(preference, - PreferenceManager - .getDefaultSharedPreferences(preference.getContext()) - .getString(preference.getKey(), "")); + try { + listener.updateSummary(preference, + PreferenceManager + .getDefaultSharedPreferences(preference.getContext()) + .getString(preference.getKey(), "")); + } catch (ClassCastException cce) { + //the preference is not a string, use the provided summary + //TODO: it shows true/false instead of the xml summary + listener.updateSummary(preference, preference.getSummary()); + } } @Override 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 10f84444..32b7c78c 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 @@ -17,6 +17,8 @@ public final class MiBandConst { public static final String PREF_MIBAND_ADDRESS = "development_miaddr"; // FIXME: should be prefixed mi_ public static final String PREF_MIBAND_ALARMS = "mi_alarms"; public static final String PREF_MIBAND_FITNESS_GOAL = "mi_fitness_goal"; + public static final String PREF_MIBAND_DONT_ACK_TRANSFER = "mi_dont_ack_transfer"; + public static final String ORIGIN_SMS = "sms"; public static final String ORIGIN_INCOMING_CALL = "incoming_call"; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandPreferencesActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandPreferencesActivity.java index c6a5f503..fd16cf35 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandPreferencesActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandPreferencesActivity.java @@ -16,6 +16,7 @@ import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.OR import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_SMS; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_ADDRESS; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_FITNESS_GOAL; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_DONT_ACK_TRANSFER; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_WEARSIDE; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_USER_ALIAS; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_USER_GENDER; @@ -58,6 +59,7 @@ public class MiBandPreferencesActivity extends AbstractSettingsActivity { PREF_MIBAND_WEARSIDE, PREF_MIBAND_ADDRESS, PREF_MIBAND_FITNESS_GOAL, + PREF_MIBAND_DONT_ACK_TRANSFER, getNotificationPrefKey(VIBRATION_PROFILE, ORIGIN_SMS), getNotificationPrefKey(VIBRATION_COUNT, ORIGIN_SMS), getNotificationPrefKey(VIBRATION_PROFILE, ORIGIN_INCOMING_CALL), diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandService.java index 9addf457..3d34b439 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandService.java @@ -103,6 +103,8 @@ public class MiBandService { public static final byte NOTIFY_STATUS_MOTOR_TEST = 0x16; + // 0x18 is returned when we cancel data sync, perhaps is an ack for this message + public static final byte NOTIFY_UNKNOWN = -0x1; public static final int NOTIFY_PAIR_CANCEL = 0xef; @@ -148,6 +150,8 @@ public class MiBandService { public static final byte COMMAND_SET_WEAR_LOCATION = 0xf; + public static final byte COMMAND_STOP_SYNC_DATA = 0x11; + public static final byte COMMAND_STOP_MOTOR_VIBRATE = 0x13; /* FURTHER COMMANDS: unchecked therefore left commented @@ -160,8 +164,6 @@ public class MiBandService { public static final COMMAND_SET_REALTIME_STEP = 0x10t - public static final COMMAND_STOP_SYNC_DATA = 0x11t - public static final byte COMMAND_GET_SENSOR_DATA = 0x12t */ diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/FetchActivityOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/FetchActivityOperation.java index d7a02905..cdf19128 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/FetchActivityOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/FetchActivityOperation.java @@ -2,7 +2,9 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCharacteristic; +import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; +import android.preference.PreferenceManager; import android.widget.Toast; import org.slf4j.Logger; @@ -19,6 +21,7 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; +import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandDateConverter; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandService; import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation; @@ -224,6 +227,18 @@ public class FetchActivityOperation extends AbstractBTLEOperation */ private void sendAckDataTransfer(Calendar time, int bytesTransferred) { byte[] ackTime = MiBandDateConverter.calendarToRawBytes(time); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GBApplication.getContext()); + + byte[] ackChecksum = new byte[]{ + (byte) (bytesTransferred & 0xff), + (byte) (0xff & (bytesTransferred >> 8)) + }; + if (prefs.getBoolean(MiBandConst.PREF_MIBAND_DONT_ACK_TRANSFER, false)) { + ackChecksum = new byte[]{ + (byte) (~bytesTransferred & 0xff), + (byte) (0xff & (~bytesTransferred >> 8)) + }; + } byte[] ack = new byte[]{ MiBandService.COMMAND_CONFIRM_ACTIVITY_DATA_TRANSFER_COMPLETE, ackTime[0], @@ -232,8 +247,8 @@ public class FetchActivityOperation extends AbstractBTLEOperation ackTime[3], ackTime[4], ackTime[5], - (byte) (bytesTransferred & 0xff), - (byte) (0xff & (bytesTransferred >> 8)) + ackChecksum[0], + ackChecksum[1] }; try { TransactionBuilder builder = performInitialized("send acknowledge"); @@ -246,6 +261,12 @@ public class FetchActivityOperation extends AbstractBTLEOperation //The last data chunk sent by the miband has always length 0. //When we ack this chunk, the transfer is done. if (getDevice().isBusy() && bytesTransferred == 0) { + //if we are not clearing miband's data, we have to stop the sync + if (prefs.getBoolean(MiBandConst.PREF_MIBAND_DONT_ACK_TRANSFER, false)) { + builder = performInitialized("send acknowledge"); + builder.write(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_CONTROL_POINT), new byte[]{MiBandService.COMMAND_STOP_SYNC_DATA}); + builder.queue(getQueue()); + } handleActivityFetchFinish(); } } catch (IOException ex) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 84da3389..781c6a4f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -187,4 +187,6 @@ Steps Live Activity Steps today, target: %1$s + Do not ack activity data transfer + If the activity data are not acked to the band, they will not be cleared. Useful if GB is used together with other apps. diff --git a/app/src/main/res/xml/miband_preferences.xml b/app/src/main/res/xml/miband_preferences.xml index 5fbbb386..ff5be814 100644 --- a/app/src/main/res/xml/miband_preferences.xml +++ b/app/src/main/res/xml/miband_preferences.xml @@ -164,5 +164,10 @@ android:key="development_miaddr" android:maxLength="17" android:title="@string/pref_title_development_miaddr" /> + \ No newline at end of file