From 69f4b115942d20248817b67ea414fa792b0625d4 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Thu, 23 Jul 2015 15:56:47 +0200 Subject: [PATCH 1/9] update Korean translation from transifex --- app/src/main/res/values-ko/strings.xml | 45 ++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 183225554..b8c209065 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -5,6 +5,10 @@ 설정 디버그 종료 + 수면 측정계 (초기 버전) + 기기 찾기 + 스크린샷 찍기 + 연결 해제 디버그 앱 관리자 @@ -19,7 +23,9 @@ 시간 동기화 시간이 바뀌거나, 시간대가 바뀌거나, 접속을 할 때 기기와 시간을 동기화 알림 + 반복 SMS + 걸려오는 전화 K-9 메일 Pebble 메세지 인텐트를 통해 Pebble에 알림을 전송할 수 있는 앱 지원. Conversations 앱 등에 사용할 수 있습니다. @@ -30,6 +36,9 @@ 하지 않음 개발자 옵션 Mi Band 주소 + Pebble 설정 + 강제 알림 프로토콜 + 이 옵션은 펌웨어 버전에 따라 최신 알림 프로토콜을 강제로 사용하도록 합니다. 자세한 내용을 알 경우에만 이 옵션을 사용하세요. 연결되지 않음 연결 중 연결됨 @@ -73,6 +82,8 @@ 남성 여성 기타 + 왼쪽 + 오른쪽 올바르지 않은 사용자 정보입니다. 일단 임시 사용자 정보를 사용합니다. Mi Band가 진동하고 깜빡일 때, 연달아 몇 번 두드리세요. 설치 @@ -88,4 +99,38 @@ 진동 횟수 수면 측정계 기록 파일 작성 (재시작 필요) + 초기화 중 + 활동 데이터 가져오는 중 + %1$s에서 %2$s(으)로 + 왼쪽과 오른쪽 중 어느 방향으로 착용합니까? + 진동 프로파일 + 스타카토 + 짧게 + 보통 + 길게 + 물방울 + 벨소리 + 알람 시계 + 진동 + SMS 알림 + 진동 설정 + 일반 알림 + Pebble 알림 + K-9 Mail 알림 + 걸려오는 전화 알림 + 잃어버린 기기 찾기 + 진동을 멈추려면 취소를 선택하세요. + 알람 설정 + 알람 설정 + 알람 상세 정보 + 일요일 + 월요일 + 화요일 + 수요일 + 목요일 + 금요일 + 토요일 + 스마트 깨우기 + 알람 설정 오류가 발생했습니다. 다시 시도하세요! + 알람을 기기로 보냈습니다! From 844d9297480d4c65ab53de5e39d3433c0975eed6 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Thu, 23 Jul 2015 16:00:36 +0200 Subject: [PATCH 2/9] update remaining languages from transifex Please fix the removed strings on transifex. Some of them might have been removed because the original english string has been changed. --- app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-es/strings.xml | 3 +- app/src/main/res/values-it/strings.xml | 2 -- app/src/main/res/values-ru/strings.xml | 39 +++++++++++++++++++++++++- 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index a53800fdc..006d2eda6 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -5,7 +5,6 @@ Einstellungen Debug Beenden - Aktivitätsdaten holen Schlafmonitor (ALPHA) Gerätesuche Bildschirmfoto diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 4b98df975..c6e5cbc0f 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -5,7 +5,6 @@ Ajustes Depuración Salir - Extraer datos de actividad Monitor de sueño (ALPHA) Encontrar dispositivo... Capturar pantall @@ -121,7 +120,6 @@ Notificación de llamada entrante Encuentra un dispositivo perdido Cancelar para detener la vibración. - Gráficos Configurar alarmas Configurar alarmas Detalles de alarma @@ -135,4 +133,5 @@ despertador inteligente Hubo un error al configurar las alarmas, ¡por favor inténtalo de nuevo! ¡Alarmas enviadas al dispositivo! + Sin datos. ¿Sincronizar dispositivo? diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 51837f87e..9f6d69453 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -5,7 +5,6 @@ Impostazioni Debug Esci - Recupera dati attività Monitoraggio del sonno (ALPHA) Trova dispositivo... Salva uno screenshot @@ -121,7 +120,6 @@ Notiche chiamata in arrivo Trova dispositivo smarrito Annulla per fermare la vibrazion - Grafici Configurazione sveglia Configurazione sveglia Sveglia diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 82b560f95..61cd89ca3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -5,8 +5,9 @@ Настройки Отладка Выход - Получить данные активности Анализ сна (АЛЬФА) + Найти устройство... + Сделать снимок экрана Отключиться Отладка @@ -22,7 +23,9 @@ Синхронизировать время при подключении Синхронизировать время при подключении к устройству, а также при изменении времени или временной зоны в системе Уведомления + Повторы СМС-сообщения + Входящие звонки K9-Mail Сообщения Pebble Поддержка приложений, посылающих уведомления на Pebble с помощью Intent. Может использоваться для Conversations. @@ -79,6 +82,8 @@ мужской женский другой + слева + справа Не предоставлено действительных данных пользователя. Используются данные по-умолчанию. Когда ваш Mi Band вибрирует и мигает, постучите по нему несколько раз. Установить @@ -97,4 +102,36 @@ Инициализация Получение данных активности От %1$s до %2$s + Носите на левой или правой руке? + Профиль вибро + Стаккато + Короткий + Средний + Длинный + Капля воды + Звонок + Будильник + Вибро + SMS-уведомление + Настройки вибро + Общие уведомления + Уведомления Pebble + Уведомления почты K9 + Уведомления о входящем звонке + Найти потерянное устройство + Отмените, чтобы остановить вибро + Завести Будильник + Завести будильник + Свойства будильника + Вс + Пн + Вт + Ср + Чт + Пт + Сб + умное пробуждение + Произошла ошибка при настройке будильника, попробуйте ещё! + Будильник был послан на устройство! + Нет данных. Синхронизировать устройство? From 91cc19befe367248e8e365262c9b9372b724acbb Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 24 Jul 2015 01:34:50 +0200 Subject: [PATCH 3/9] Pebble: spoof a newer application version (3.x) --- .../gadgetbridge/pebble/PebbleProtocol.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/pebble/PebbleProtocol.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/pebble/PebbleProtocol.java index bf9571365..658ba5c84 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/pebble/PebbleProtocol.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/pebble/PebbleProtocol.java @@ -520,8 +520,7 @@ public class PebbleProtocol extends GBDeviceProtocol { return buf.array(); } - @Override - public byte[] encodePhoneVersion(byte os) { + private byte[] encodePhoneVersion2x(byte os) { ByteBuffer buf = ByteBuffer.allocate(LENGTH_PREFIX + LENGTH_PHONEVERSION); buf.order(ByteOrder.BIG_ENDIAN); buf.putShort(LENGTH_PHONEVERSION); @@ -544,6 +543,35 @@ public class PebbleProtocol extends GBDeviceProtocol { return buf.array(); } + private byte[] encodePhoneVersion3x(byte os) { + ByteBuffer buf = ByteBuffer.allocate(LENGTH_PREFIX + 25); + buf.order(ByteOrder.BIG_ENDIAN); + buf.putShort((short) 25); + buf.putShort(ENDPOINT_PHONEVERSION); + buf.put((byte) 0x01); + buf.putInt(-1); //0xffffffff + buf.putInt(0); + + buf.putInt(os); + + buf.put(PHONEVERSION_APPVERSION_MAGIC); + buf.put((byte) 3); // major? + buf.put((byte) 0); // minor? + buf.put((byte) 1); // patch? + buf.put((byte) 3); // ??? + buf.put((byte) 0); // ??? + buf.put((byte) 0); // ??? + buf.put((byte) 0); // ??? + buf.putInt(0); // ??? + + return buf.array(); + } + + @Override + public byte[] encodePhoneVersion(byte os) { + return encodePhoneVersion3x(os); + } + @Override public byte[] encodeReboot() { return encodeSimpleMessage(ENDPOINT_RESET, RESET_REBOOT); From 49cc4ec9d64eef196777498c982ada82c11585dd Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 24 Jul 2015 09:33:20 +0200 Subject: [PATCH 4/9] Pebble: for 3.x notification, do not zero parent UUID instead reuse the same reandom UUID again. --- .../freeyourgadget/gadgetbridge/pebble/PebbleProtocol.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/pebble/PebbleProtocol.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/pebble/PebbleProtocol.java index 658ba5c84..0606f6bac 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/pebble/PebbleProtocol.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/pebble/PebbleProtocol.java @@ -404,7 +404,6 @@ public class PebbleProtocol extends GBDeviceProtocol { // pin - 46 bytes buf.put(uuid_buf); // random UUID - Arrays.fill(uuid_buf, (byte) 0); buf.put(uuid_buf); // parent UUID buf.putInt(timestamp); // 32-bit timestamp buf.putShort((short) 0); // duration From a1f60aab91168a8dca48f2b2b18cdc1e28c0b03e Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Sat, 25 Jul 2015 00:07:33 +0200 Subject: [PATCH 5/9] Fix logging configuration Make sure to not invoke any logging before it is properly configured. --- .../nodomain/freeyourgadget/gadgetbridge/GBApplication.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java index 9bf18f1be..8b67a2bd9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java @@ -23,13 +23,15 @@ public class GBApplication extends Application { public GBApplication() { context = this; - mActivityDatabaseHandler = new ActivityDatabaseHandler(context); + // don't do anything here, add it to onCreate instead } @Override public void onCreate() { super.onCreate(); + // don't do anything here before we set up logging, otherwise + // slf4j may be implicitly initialized before we properly configured it. setupLogging(); // For debugging problems with the logback configuration // LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); @@ -37,6 +39,7 @@ public class GBApplication extends Application { // StatusPrinter.print(lc); // Logger logger = LoggerFactory.getLogger(GBApplication.class); + mActivityDatabaseHandler = new ActivityDatabaseHandler(context); // for testing DB stuff // SQLiteDatabase db = mActivityDatabaseHandler.getWritableDatabase(); // db.close(); From 716bbc7b787cd16978fea7d9370b430ce2cb26f8 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Sat, 25 Jul 2015 00:08:15 +0200 Subject: [PATCH 6/9] Avoid NPE when fetching activity data: java.lang.NullPointerException: Attempt to write to field 'int nodomain.freeyourgadget.gadgetbridge.miband.MiBandSupport$ActivityStruct.activityDataHolderProgress' on a null object reference at nodomain.freeyourgadget.gadgetbridge.miband.MiBandSupport.flushActivityDataHolder(MiBandSupport.java:748) at nodomain.freeyourgadget.gadgetbridge.miband.MiBandSupport.handleActivityNotif(MiBandSupport.java:689) at nodomain.freeyourgadget.gadgetbridge.miband.MiBandSupport.onCharacteristicChanged(MiBandSupport.java:583) at nodomain.freeyourgadget.gadgetbridge.btle.BtLEQueue$2.onCharacteristicChanged(BtLEQueue.java:369) --- .../gadgetbridge/miband/MiBandSupport.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java index 33da795d0..6d2b49fa0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java @@ -672,7 +672,6 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport { if (activityStruct.activityDataRemainingBytes == 0) { sendAckDataTransfer(activityStruct.activityDataTimestampToAck, activityStruct.activityDataUntilNextHeader); - flushActivityDataHolder(); } } @@ -712,6 +711,11 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport { } private void flushActivityDataHolder() { + if (activityStruct == null) { + LOG.debug("nothing to flush, struct is already null"); + return; + } + LOG.debug("flushing activity data holder"); byte category, intensity, steps; ActivityDatabaseHandler dbHandler = GBApplication.getActivityDatabaseHandler(); @@ -770,6 +774,10 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport { TransactionBuilder builder = performInitialized("send acknowledge"); builder.write(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_CONTROL_POINT), ack); builder.queue(getQueue()); + + // flush to the DB after sending the ACK + flushActivityDataHolder(); + //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) { @@ -781,6 +789,7 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport { } private void handleActivityFetchFinish() { + LOG.info("Fetching activity data has finished."); activityStruct = null; unsetBusy(); } From 8f840df5f6bb1df6620abf7f86071e315641df91 Mon Sep 17 00:00:00 2001 From: Daniele Gobbetti Date: Sat, 25 Jul 2015 21:14:18 +0200 Subject: [PATCH 7/9] Set GB notification visibility to public. This way on android 5 the status of the connection is shown also on the lockscreen even if the user chose to hide sensible content of the notifications. --- CHANGELOG.md | 1 + app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GB.java | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d99251a1..5035dee5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ###Changelog ####Version 0.4.4 +* Set GadgetBridge notification visibility to public, to show the connection status on the lockscreen * Support for backup up and restoring of the activity database (via Debug activity) * Support for graceful upgrades and downgrades, keeping your activity database intact * Pebble: experimental support for dismissing (all) notifications via actionable notifications (disabled by default) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GB.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GB.java index 8eac87078..1f015a640 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GB.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GB.java @@ -49,6 +49,7 @@ public class GB { notificationIntent, 0); return new NotificationCompat.Builder(context) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setContentTitle(context.getString(R.string.app_name)) .setTicker(text) .setContentText(text) From 0dd29807b253169c44f9f6fd5810bb0b8b751cf2 Mon Sep 17 00:00:00 2001 From: Daniele Gobbetti Date: Sat, 25 Jul 2015 21:29:31 +0200 Subject: [PATCH 8/9] Update Changelog. Prepare for release --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5035dee5e..bc0a4ae59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,11 @@ * Set GadgetBridge notification visibility to public, to show the connection status on the lockscreen * Support for backup up and restoring of the activity database (via Debug activity) * Support for graceful upgrades and downgrades, keeping your activity database intact +* Enhancement to activity graphs: new graphs for sleep data (only last night) accessible siping right from the main graph +* Enhancement to graphs activity: it is now possible to fetch the activity data directly from this activity * Pebble: experimental support for dismissing (all) notifications via actionable notifications (disabled by default) * Pebble: make FW 3.x notifications available by default +* Mi Band: Set the graphs activity as the default action available with a single tap on the connected device ####Version 0.4.3 * Mi Band: Support for setting alarms From c4590d3989eb8c8191d01a07795b3662e14b37fa Mon Sep 17 00:00:00 2001 From: Daniele Gobbetti Date: Sat, 25 Jul 2015 21:31:22 +0200 Subject: [PATCH 9/9] Update Changelog. Typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc0a4ae59..73e1a61a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ * Set GadgetBridge notification visibility to public, to show the connection status on the lockscreen * Support for backup up and restoring of the activity database (via Debug activity) * Support for graceful upgrades and downgrades, keeping your activity database intact -* Enhancement to activity graphs: new graphs for sleep data (only last night) accessible siping right from the main graph +* Enhancement to activity graphs: new graphs for sleep data (only last night) accessible swiping right from the main graph * Enhancement to graphs activity: it is now possible to fetch the activity data directly from this activity * Pebble: experimental support for dismissing (all) notifications via actionable notifications (disabled by default) * Pebble: make FW 3.x notifications available by default