From 3c8706cc227adce3e648ee550fd5c682a1755cf7 Mon Sep 17 00:00:00 2001 From: mueller-ma Date: Tue, 8 Aug 2017 12:53:52 +0200 Subject: [PATCH 01/20] Update transliteration summary Since new chars has been added (https://github.com/Freeyourgadget/Gadgetbridge/commit/7f5aeb6ab1313395f45c88ffa8ef847b1d85d96a) it would be better not to mention specific languages here. --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5989ccd611..da2dec3f7f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -89,7 +89,7 @@ Do Not Disturb Stop unwanted Notifications from being sent based on the Do Not Disturb mode. Transliteration - Enable this if your device has no support for your language\'s font (Currently Cyrillic only) + Enable this if your device has no support for your language\'s font always when screen is off From 2f375e9a41f05faffa92e7e553a6f19a27f40fd3 Mon Sep 17 00:00:00 2001 From: mueller-ma Date: Thu, 10 Aug 2017 20:42:26 +0200 Subject: [PATCH 02/20] adjust colors (#753) Adjusted the colors a bit to 1. match material colors 2. have a visible distinction between primary_dark and primarydark_dark 3. match the color used by the action bar and side drawer in dark theme --- app/src/main/res/values/colors.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 4b79886a4a..cf32627f01 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,10 +1,10 @@ - #ff5000 - #f0f03000 + #ff3d00 + #dd2c00 - #f03000 - #f0f03000 + #ff3d00 + #dd2c00 #0091ea From 9ea4b8ae43400d3342acf4d1d8277b50d193b811 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 11 Aug 2017 23:57:00 +0200 Subject: [PATCH 03/20] Show dark themed changelog when dark theme is selected Closes #757 --- .../gadgetbridge/activities/ControlCenterv2.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java index 7e582b0417..49169efb37 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java @@ -195,7 +195,7 @@ public class ControlCenterv2 extends AppCompatActivity checkAndRequestPermissions(); } - ChangeLog cl = new ChangeLog(this); + ChangeLog cl = new ChangeLog(this, GBApplication.isDarkThemeEnabled() ? "body { color: #ffffff; background-color: #282828; }" : ""); if (cl.isFirstRun()) { cl.getLogDialog().show(); } @@ -249,7 +249,7 @@ public class ControlCenterv2 extends AppCompatActivity GBApplication.quit(); return true; case R.id.external_changelog: - ChangeLog cl = new ChangeLog(this); + ChangeLog cl = new ChangeLog(this, GBApplication.isDarkThemeEnabled() ? "body { color: #ffffff; background-color: #282828; }" : ""); cl.getFullLogDialog().show(); return true; } From b25febf0e53ffc4ce213553c97c13e119bc9c3e1 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Sat, 12 Aug 2017 00:18:15 +0200 Subject: [PATCH 04/20] Pebble: LOG stacktrace when connection fails --- .../gadgetbridge/service/devices/pebble/PebbleIoThread.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java index 904ff40136..f9891005a7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java @@ -156,7 +156,7 @@ class PebbleIoThread extends GBDeviceIoThread { } } } catch (IOException e) { - e.printStackTrace(); + LOG.warn("error while connecting: " + e.getMessage(), e); gbDevice.setState(originalState); gbDevice.sendDeviceUpdateIntent(getContext()); From 7302832d8428c52d4a3a442b92cad66c11ecf908 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Sat, 12 Aug 2017 00:32:25 +0200 Subject: [PATCH 05/20] Also include DEFAULT_CSS for ChangeLog theming --- .../gadgetbridge/activities/ControlCenterv2.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java index 49169efb37..7fd7361e83 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java @@ -61,6 +61,8 @@ import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils; import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; +import static de.cketti.library.changelog.ChangeLog.DEFAULT_CSS; + //TODO: extend GBActivity, but it requires actionbar that is not available public class ControlCenterv2 extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @@ -195,7 +197,7 @@ public class ControlCenterv2 extends AppCompatActivity checkAndRequestPermissions(); } - ChangeLog cl = new ChangeLog(this, GBApplication.isDarkThemeEnabled() ? "body { color: #ffffff; background-color: #282828; }" : ""); + ChangeLog cl = new ChangeLog(this, (GBApplication.isDarkThemeEnabled() ? "body { color: #ffffff; background-color: #282828; }\n" : "") + DEFAULT_CSS); if (cl.isFirstRun()) { cl.getLogDialog().show(); } From 4dc53a4390858cbb4b479841bbed0f91c2cf71a4 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Sat, 12 Aug 2017 00:45:07 +0200 Subject: [PATCH 06/20] Also theme full changelog with default css (copy and paste sucks, I know) --- .../freeyourgadget/gadgetbridge/activities/ControlCenterv2.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java index 7fd7361e83..6dd08504a1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java @@ -251,7 +251,7 @@ public class ControlCenterv2 extends AppCompatActivity GBApplication.quit(); return true; case R.id.external_changelog: - ChangeLog cl = new ChangeLog(this, GBApplication.isDarkThemeEnabled() ? "body { color: #ffffff; background-color: #282828; }" : ""); + ChangeLog cl = new ChangeLog(this, (GBApplication.isDarkThemeEnabled() ? "body { color: #ffffff; background-color: #282828; }\n" : "") + DEFAULT_CSS); cl.getFullLogDialog().show(); return true; } From 80dce953720aa2cd2e947559c06373d047d023a7 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Sun, 13 Aug 2017 16:31:11 +0200 Subject: [PATCH 07/20] Inital Amazfit Bip support Support is almost on Mi Band 2 level. What does not work yet: - flashing firmware files - taking or rejecting phone calls - syncing GPS tracks - sending weather - notification only include title, not a body - unknown notification's text is not forwarded to the watch at all (same on Mi Band 2 #754) --- .../amazfitbip/AmazfitBipCooordinator.java | 61 +++++++++++++++++++ .../gadgetbridge/model/DeviceType.java | 7 ++- .../service/DeviceSupportFactory.java | 4 ++ .../devices/amazfitbip/AmazfitBipSupport.java | 32 ++++++++++ .../AmazfitBipTextNotificationStrategy.java | 46 ++++++++++++++ .../devices/miband2/MiBand2Support.java | 2 +- .../gadgetbridge/util/DeviceHelper.java | 2 + .../main/res/drawable/level_list_device.xml | 2 + 8 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/amazfitbip/AmazfitBipCooordinator.java create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipTextNotificationStrategy.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/amazfitbip/AmazfitBipCooordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/amazfitbip/AmazfitBipCooordinator.java new file mode 100644 index 0000000000..3490a4545b --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/amazfitbip/AmazfitBipCooordinator.java @@ -0,0 +1,61 @@ +/* Copyright (C) 2017 Andreas Shimokawa + + 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.amazfitbip; + +import android.bluetooth.BluetoothDevice; +import android.content.Context; +import android.net.Uri; +import android.support.annotation.NonNull; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; +import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBand2Coordinator; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; +import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; + +public class AmazfitBipCooordinator extends MiBand2Coordinator { + private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipCooordinator.class); + + @Override + public DeviceType getDeviceType() { + return DeviceType.AMAZFITBIP; + } + + @NonNull + @Override + public DeviceType getSupportedType(GBDeviceCandidate candidate) { + try { + BluetoothDevice device = candidate.getDevice(); + String name = device.getName(); + if (name != null && name.equalsIgnoreCase("Amazfit Bip Watch")) { + return DeviceType.AMAZFITBIP; + } + } catch (Exception ex) { + LOG.error("unable to check device support", ex); + } + return DeviceType.UNKNOWN; + } + + + @Override + public InstallHandler findInstallHandler(Uri uri, Context context) { + return null; // not supported yet + } + +} 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 4dde7456fe..2096662501 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -28,15 +28,16 @@ import nodomain.freeyourgadget.gadgetbridge.R; * and may not be changed. */ public enum DeviceType { - UNKNOWN(-1, R.drawable.ic_launcher, R.drawable.ic_device_default_disabled), + UNKNOWN(-1, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled), PEBBLE(1, R.drawable.ic_device_pebble, R.drawable.ic_device_pebble_disabled), MIBAND(10, R.drawable.ic_device_miband, R.drawable.ic_device_miband_disabled), MIBAND2(11, R.drawable.ic_device_miband, R.drawable.ic_device_miband_disabled), + AMAZFITBIP(12, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled), VIBRATISSIMO(20, R.drawable.ic_device_lovetoy, R.drawable.ic_device_lovetoy_disabled), - LIVEVIEW(30, R.drawable.ic_launcher, R.drawable.ic_device_default_disabled), + LIVEVIEW(30, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled), HPLUS(40, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled), MAKIBESF68(41, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled), - TEST(1000, R.drawable.ic_launcher, R.drawable.ic_device_default_disabled); + TEST(1000, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled); private final int key; @DrawableRes 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 92e5ea9478..86a8f0a742 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java @@ -30,6 +30,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.devices.liveview.LiveviewSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.MiBand2Support; +import nodomain.freeyourgadget.gadgetbridge.service.devices.amazfitbip.AmazfitBipSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.MiBandSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.vibratissimo.VibratissimoSupport; @@ -109,6 +110,9 @@ public class DeviceSupportFactory { case MIBAND2: deviceSupport = new ServiceDeviceSupport(new MiBand2Support(), EnumSet.of(ServiceDeviceSupport.Flags.THROTTLING, ServiceDeviceSupport.Flags.BUSY_CHECKING)); break; + case AMAZFITBIP: + deviceSupport = new ServiceDeviceSupport(new AmazfitBipSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING)); + break; case VIBRATISSIMO: deviceSupport = new ServiceDeviceSupport(new VibratissimoSupport(), EnumSet.of(ServiceDeviceSupport.Flags.THROTTLING, ServiceDeviceSupport.Flags.BUSY_CHECKING)); break; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java new file mode 100644 index 0000000000..05c3ade70b --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java @@ -0,0 +1,32 @@ +/* Copyright (C) 2017 Andreas Shimokawa + + 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.amazfitbip; + +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.NotificationStrategy; +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.MiBand2Support; + +public class AmazfitBipSupport extends MiBand2Support { + @Override + public NotificationStrategy getNotificationStrategy() { + return new AmazfitBipTextNotificationStrategy(this); + } + + @Override + public void onFindDevice(boolean start) { + // Prevent notification spamming from MiBand2Support for now + } +} \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipTextNotificationStrategy.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipTextNotificationStrategy.java new file mode 100644 index 0000000000..0df1475a34 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipTextNotificationStrategy.java @@ -0,0 +1,46 @@ +/* Copyright (C) 2017 Andreas Shimokawa + + 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.amazfitbip; + +import nodomain.freeyourgadget.gadgetbridge.devices.miband.VibrationProfile; +import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction; +import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; +import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.alertnotification.AlertCategory; +import nodomain.freeyourgadget.gadgetbridge.service.devices.common.SimpleNotification; +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.Mi2TextNotificationStrategy; +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.MiBand2Support; +import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; + +class AmazfitBipTextNotificationStrategy extends Mi2TextNotificationStrategy { + + AmazfitBipTextNotificationStrategy(MiBand2Support support) { + super(support); + } + + @Override + protected void sendCustomNotification(VibrationProfile vibrationProfile, SimpleNotification simpleNotification, BtLEAction extraAction, TransactionBuilder builder) { + if (simpleNotification != null && simpleNotification.getAlertCategory() == AlertCategory.IncomingCall) { + // incoming calls are notified solely via NewAlert including caller ID + sendAlert(simpleNotification, builder); + return; + } + + if (simpleNotification != null && !StringUtils.isEmpty(simpleNotification.getMessage())) { + sendAlert(simpleNotification, builder); + } + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java index 3307e76602..16b718c64e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java @@ -301,7 +301,7 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport { return this; } - private NotificationStrategy getNotificationStrategy() { + public NotificationStrategy getNotificationStrategy() { String firmwareVersion = getDevice().getFirmwareVersion(); if (firmwareVersion != null) { Version ver = new Version(firmwareVersion); 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 70a96d1f2c..fa0d99608b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java @@ -39,6 +39,7 @@ import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHelper; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.UnknownDeviceCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.amazfitbip.AmazfitBipCooordinator; import nodomain.freeyourgadget.gadgetbridge.devices.hplus.HPlusCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.hplus.MakibesF68Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.liveview.LiveviewCoordinator; @@ -184,6 +185,7 @@ public class DeviceHelper { private List createCoordinators() { List result = new ArrayList<>(); + result.add(new AmazfitBipCooordinator()); // Note: AmazfitBip must come before MiBand2 because detection is hacky, atm result.add(new MiBand2Coordinator()); // Note: MiBand2 must come before MiBand because detection is hacky, atm result.add(new MiBandCoordinator()); result.add(new PebbleCoordinator()); diff --git a/app/src/main/res/drawable/level_list_device.xml b/app/src/main/res/drawable/level_list_device.xml index 0c52088944..9347fd9972 100644 --- a/app/src/main/res/drawable/level_list_device.xml +++ b/app/src/main/res/drawable/level_list_device.xml @@ -4,6 +4,7 @@ + @@ -13,6 +14,7 @@ + From 98f01e8b237921c22700392cc5dd061598d8e0bc Mon Sep 17 00:00:00 2001 From: Translation Bot Date: Sun, 13 Aug 2017 22:07:15 +0200 Subject: [PATCH 08/20] update German, Spanish, French and Japanese from transifex (THANKS) --- app/src/main/res/values-de/strings.xml | 25 +++++++++++++++++++++---- app/src/main/res/values-es/strings.xml | 21 ++++++++++++++++++++- app/src/main/res/values-fr/strings.xml | 21 ++++++++++++++++++++- app/src/main/res/values-ja/strings.xml | 21 ++++++++++++++++++++- 4 files changed, 81 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e8746913d6..e6ea6a21b5 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -29,8 +29,8 @@ Löschen und aus dem Zwischenspeicher entfernen Erneut installieren Im Pebble Appstore suchen - aktivieren - deaktivieren + Aktivieren + Deaktivieren HRM aktivieren HRM deaktivieren Wetter-App des Systems aktivieren @@ -58,7 +58,7 @@ Datum und Zeit Uhrzeit synchronisieren Synchronisiere die Uhrzeit mit dem Gerät bei Verbindungsaufbau und wenn die Zeit oder Zeitzone auf dem Android Gerät geändert wird - Theme + Thema Hell Dunkel Sprache @@ -76,7 +76,6 @@ Bitte nicht stören Benachrichtigungen nicht senden, wenn im \"Nicht Stören\"-Modus Transkription - Aktiviere dies, falls dein Gerät keine Unterstützung für den Zeichensatz deiner Sprache hat (momentan nur Kyrillisch) immer wenn der Bildschirm aus ist niemals @@ -220,6 +219,8 @@ Chat Navigation Soziales Netzwerk + Minuten insgesamt + Schritte pro Minute Verlegtes Gerät suchen Abbrechen, um die Vibration zu stoppen. Deine Aktivität @@ -273,6 +274,9 @@ Schritte Kalorien Distanz + Uhrzeit + Puls + Batterie Live Aktivität Schritte heute, Ziel: %1$s Transfer von Aktivitätsdaten nicht bestätigen @@ -300,7 +304,17 @@ Mi2: Datumsformat Zeit + Benachrichtigungen bei Schrittziel + Das Band wird vibrieren, wenn das tägliche Schrittziel erreicht ist. + Angezeigte Items + Wähle aus, welche Items auf dem Band angezeigt werden sollen Display beim Anheben aktivieren + Bitte nicht stören + Inaktivitätswarnungen + Das Band wird vibrieren, wenn du für eine Weile inaktiv warst + Deaktiviere Inaktivitätswarnungen zu einer bestimmten Zeit + Startzeit + Endzeit Werde Daten ab %1$s übertragen. warte auf Verbindung Über Dich @@ -366,7 +380,10 @@ Mi2: Uhrzeit-Format Installiere Version %1$s vor dem Installieren der Firmware! Text Benachrichtigung + = 1.0.1.28 und installiertes Mili_pro.ft* benötigt.]]> aus + Aus + Automatisch (Schlaferkennung) Versuche zu koppeln mit %1$s Kopplung mit %1$s soeben fehlgeschlagen. Versuche zu verbinden mit: %1$s diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 854ecfd01f..f44d95b11f 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -76,7 +76,7 @@ No Molestar Dejar de enviar notificaciones no deseadas basándose en el modo No Molestar Transcripción - Utilizar en caso de que tu dispositivo no soporte la fuente de tu idioma (de momento solo el Cirílico) + Utilizar en caso de que tu dispositivo no soporte la fuente de tu idioma siempre cuando la pantalla está apagada nunca @@ -276,6 +276,9 @@ Pasos Calorías Distancia + Reloj + Ritmo cardíaco + Batería Actividad Pasos hoy, objetivo: %1$s No confirmar transferencia @@ -303,7 +306,20 @@ Mi2: Formato de fecha Tiempo + Notificación de objetivo + La pulsera vibrará cuando llegues al objetivo diario de pasos + Elementos que mostrar + Selecciona los elementos que mostrar en la pulsera Activar pantalla al levantar + Gira la muñeca para cambiar la información + No Molestar + La pulsera no recibirá notificaciones + Alerta de inactividad + La pulsera vibrará cuando hayas estado inactivo por un tiempo + Umbral de inactividad (en minutos) + Desactivar las alarmas de inactividad por un intervalo de tiempo + Hora de inicio + Hora de fin A punto de transferir datos desde %1$s esperando reconexión Sobre ti @@ -371,6 +387,9 @@ Notificaciones textuales = 1.0.1.28 and Mili_pro.ft* installed.]]> off + Off + Automático (detección de sueño) + Programado (intervalo de tiempo) Intento de emparejamiento con %1$s El enlace con %1$s falló instantáneamente Intentando conectar con: %1$s diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 10d529a637..de11a43737 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -76,7 +76,7 @@ Ne Pas Déranger Arrêter l’envoi des notifications non-désirées en mode Ne Pas Déranger. Transcription - À utiliser si l\'appareil ne supporte pas la police de caractères (pour l\'instant seulement le Cyrillique) + Activez ceci si votre appareil ne supporte pas la police de caractères toujours quand l\'écran est éteint jamais @@ -276,6 +276,9 @@ Pas Calories Distance + Horloge + Fréquence cardiaque + Batterie Activité en direct Nombre de pas aujourd\'hui, objectif: %1$s Ne pas confirmer le transfert de données d\'activités @@ -303,7 +306,20 @@ Mi2 : Format de la date Heure + Notification d\'objectif + Le bracelet vibrera lorsque l\'objectif de pas quotidien sera atteint + Éléments à afficher + Choisissez les éléments à afficher sur le bracelet Allumer l\'écran lors d\'un mouvement + Tournez votre poignet pour changer d\'élément + Ne Pas Déranger + Le bracelet ne recevra pas de notifications si activé + Alertes d\'inactivité + Le bracelet vibrera si vous n\'êtes pas actif pendant un moment + Seuil d\'inactivité (en minutes) + Désactiver les alertes d\'inactivité pendant un intervalle de temps + Heure de début + Heure de fin Sur le point de transférer des données depuis %1$s en attente de reconnexion À propos de vous @@ -373,6 +389,9 @@ NOTE: la base de données sera bien évidement plus grande ! Notifications textuelles off + Off + Automatique (détection de sommeil) + Programmé (intervalle de temps) Tentative d\'appairage avec %1$s Le lien avec %1$s a échoué instantanément Tentative de connexion à: %1$s diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 5c2008a8ce..73d4049193 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -76,7 +76,7 @@ サイレント サイレントモードに基づいて、送信される不要な通知を停止します。 音訳 - デバイスでお使いの言語のフォントがサポートされていない場合に、これを有効にしてください (現在はキリル文字のみ) + お使いのデバイスがあなたの言語のフォントをサポートしていない場合、これを有効にしてください いつも スクリーンがオフのとき なし @@ -276,6 +276,9 @@ 歩数 カロリー 距離 + 時計 + 心拍数 + バッテリー 生活活動 今日の歩数、目標: %1$s 活動データ転送に応答しない @@ -303,7 +306,20 @@ Mi2: 日付形式 時間 + 目標通知 + 毎日の歩数が目標に達すると、バンドが振動します + 表示アイテム + バンド画面に表示されるアイテムを選択 持ち上げ時に表示を有効にする + 手首を回して情報を切り替え + サイレント + アクティブな間、バンドは通知を受信しません + 非アクティブ警告 + あなたがしばらくの間アクティブでないときに、バンドが振動します + 非アクティブしきい値 (分単位) + その期間、非アクティブ警告を無効にします + 開始時刻 + 終了時刻 %1$s からのデータを転送します 再接続の待機中 あなたについて @@ -371,6 +387,9 @@ テキスト通知 = 1.0.1.28 と Mili_pro.ft* をインストールしていることが必要です。]]> オフ + オフ + 自動 (睡眠検出) + スケジュール (期間) %1$s とペアを試みています %1$s との接続がすぐに失敗しました。 接続の試行中: %1$s From 3c9964f265d5d86356247214e59219ab4bd1d225 Mon Sep 17 00:00:00 2001 From: Translation Bot Date: Sun, 13 Aug 2017 22:21:29 +0200 Subject: [PATCH 09/20] update Hungarian translation from transifex (THANKS) --- app/src/main/res/values-hu/strings.xml | 192 ++++++++++--------------- 1 file changed, 72 insertions(+), 120 deletions(-) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 7a7aa7bfa7..f3c3105f9c 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -13,6 +13,12 @@ Eszköz törlése %1$s törlése Az eszköz és az összes hozzátartozó adat törlésre kerül! + Navigáció megnyitása + Navigáció bezárása + Nyomd hosszan a szétkapcsoláshoz + Szétkapcsolódás + Kapcsolódás + Képernyőkép készítése az eszközről Hibakeresés Alkalmazáskezelő @@ -27,6 +33,9 @@ Deaktiválás Pulzusmérő aktiválása Pulzusmérő deaktiválása + Rendszer időjárás alkalmazás aktiválása + Rendszer időjárás alkalmazás deaktiválása + Időjárás értesítő alkalmazás telepítése Beállítás A tetejére mozgatás @@ -42,6 +51,7 @@ Beállítások Általános beállítások Kapcsolódjon az eszközhöz a Bluetooth bekapcsolásakor + Automatikus indulás Újracsatlakozás automatikusan Preferált zenelejátszó Alapértelmezett @@ -52,6 +62,9 @@ Világos Sötét Nyelv + Gadgetbridge értesítések elrejtése + Az ikon és az értesítés mutatása a záróképernyőn + Az ikon és az értesítés elrejtése a záróképernyőn Értesítések Ismétlések Telefonhívások @@ -62,9 +75,16 @@ … és amikor a kijelző be van kapcsolva Ne zavarj mód Értesítések tiltása a Ne zavarj üzemmód használatakor. + Transzliteráció mindig amikor a kijelző ki van kapcsolva soha + Adatvédelem + Hívás Adatvédelmi Mód + Név és szám mutatása + Név rejtése, de a szám mutatása + Szám rejtése, de a név mutatása + Név és szám rejtése Tiltott alkalmazások Előre beállított üzenetek Előre megírt válaszok @@ -79,10 +99,21 @@ Pebble Health szinkronizálása Misfit szinkronizálás Morpheuz szinkronizálás + Kimenő hívások támogatása + Ennek a letiltásával a kimenő hívás rezgését is letiltja a Pebble 2/LE eszközön Harmadik féltől származó Android alkalmazások hozzáférésének engedélyezése Kísérleti támogatás engedélyezése az Android alkalmazások számára a PebbleKit használatára + Pebble Idővonal Napkelte és napnyugta A napkelte és napnyugta idejének küldése a Pebble idővonalra a hely és idő alapján + Naptár szinkronizálása + Naptárbejegyzések küldése az idővonalra + Automatikusan törölje az eltávolított értesítéseket + Az értesítések automatikus eltávolítsa, ha az Androidos eszközön eltávolítottad + Adatvédelmi mód + Normál értesítések + Az értesítés eltolása képernyőn + Csak az értesítési ikon mutatása Pozició Pozició meghatározása Szélesség @@ -97,9 +128,18 @@ Nem tesztelt funkciók engedélyezése. CSAK AKKOR ENGEDÉLYEZD, HA TUDOD MIT CSINÁLSZ! Mindig preferálja a BLE-t A kísérleti LE támogatás használata minden Pebble-hez a klasszikus BT helyett, párosítani kell hozzá egy \"Pebble LE\"-t, miután a nem-LE-t párosítva lett egyszer. + Pebble 2/LE GATT MTU limit + Ha a Pebble 2/Pebble LE nem működik elvártan, próbáld beállítani az MTU limitet (az érvényes tartomány: 20-512) Óraalkalmazás-naplózás engedélyezése Az óra-alkalmazások naplóit a Gadgetbridge is naplózni fogja (újracsatlakozást igényel) + Korai ACK PebbleKit + Minden esetben azonnal felismeri az üzeneteket, amelyeket külső harmadik alkalmazásoknak küldenek. Újracsatlakozási kísérletek száma + Egységek + Időformátum + Kijelző bekapcsolvatartásának ideje + Egésznapos pulzusmérés + HPlus/Makibes Beállítások nincs csatlakozva csatlakozás csatlakoztatva @@ -150,6 +190,7 @@ Nem helyes felhasználói adatok vannak megadva, alapértelmezett adatokat fogok használni. Amikor vibrálni kezd a Mi Band-ed, érintsd meg párszor egymás után. Telepítés + Tedd láthatóvá a készüléked. A jelenleg csatlakoztatott készülékek nem fognak láthatóként megjelenni. Aktiváld a helymeghatározást (Pl: GPS) az Android 6 készülékeden. Kapcsold ki a Privacy Guard-ban a Gadgetbridge-et (Ha van Privacy Guard beállításod), különben az alkalmazás kifagyhat, illetve újraindíthatja a készükéked. Ha nem található az eszköz pár percen bellül, próbáld újraindítani a telefonod. Megjegyzés: Eszköz kép Név/Alias @@ -178,6 +219,9 @@ Csevegés Navigáció Közösségi háló + Sebesség Zónák + Összes perc + Percenkénti lépések Elveszett eszköz keresése A vibrálás leállításához: Mégse. Aktivitásod @@ -209,6 +253,8 @@ Utoljára töltve: %s \n Töltések száma: %s Az alvásod + Heti alvás + Mai alvás, cél: %1$s Lépések a héten Aktivitásod és alvásod Firmware frissítése… @@ -227,6 +273,8 @@ A Firmware telepítés kész, az eszköz újraindítása… Firmware írási probléma Lépések + Kalória + Távolság Aktuális aktivitás Lépések ma, cél: %1$s Ne erősítse meg az aktivitásadatok átvitelét @@ -281,13 +329,16 @@ Adatbáziskezelés Adatbáziskezelés Az adatbázisművelet ezt a helyet fogja használni. Ez a hely elérhető másik Android-alkalmazások és a számítógép számára. Itt keresd az exportált adatbázist is, illetve ide rakd az importálni kívánt adatbázist is. + Hagyaték adatbázis törlése Nem elérhető az elérési út. Kérlek vedd fel a kapcsolatot a fejlesztőkkel. %1$s exportálva Hiba az exportálás során: %1$s + Hiba a beállítások exportálása során: %1$s Adatok importálása? Biztosan felül akarod írni a jelenlegi adatbázist? Az összes jelenlegi aktivitás adatod (ha van) elfog veszni. Sikeres importálás. Hiba az importálás során: %1$s + Hiba a beállítások importálása során: %1$s Törlöd az aktivitásadatokat? Tényleg törölni akarod az egész adatbázist? Minden aktivitásadatod és rólad tárolt információ elfog veszni. Az adatok sikeresen törölve lettek. @@ -304,127 +355,28 @@ Pebble párosítása Egy párosítási párbeszédablaknak kéne megjelennie az Android eszközödön. Ha nem látod, nézd meg az értesítési sávban és fogadd el a párosítási kérelmet. Utána fogadd ela kérelmet a Pebble-n. - " (%1$s)" - Hagyaték adatbázis törlése - Rendszer időjárás alkalmazás aktiválása - Rendszer időjárás alkalmazás deaktiválása - Időjárás értesítő alkalmazás telepítése - Akkumulátor - Akkumulátor feltöltve - Akkumulátor töltöttség alacsony - Akkumulátor töltöttség közepes - Akkumulátor nem töltődik - Óra - Kalória - Navigáció bezárása - Navigáció megnyitása - Kapcsolódás - Szétkapcsolódás - Nyomd hosszan a szétkapcsoláshoz - Képernyőkép készítése az eszközről - Hiba a beállítások importálása során: %1$s - Hiba a beállítások exportálása során: %1$s - Csatlakozási kísérlet az eszközhöz: %1$s - A csatlakozás azonnal megszkadt: %1$s - ki - vízcsepp - metrikus - Tedd láthatóvá a készüléked. A jelenleg csatlakoztatott készülékek nem fognak láthatóként megjelenni. Aktiváld a helymeghatározást (Pl: GPS) az Android 6 készülékeden. Kapcsold ki a Privacy Guard-ban a Gadgetbridge-et (Ha van Privacy Guard beállításod), különben az alkalmazás kifagyhat, illetve újraindíthatja a készükéked. Ha nem található az eszköz pár percen bellül, próbáld újraindítani a telefonod. - Nem párosított - Engedélyezd a Bluetooth-ot az eszközök felderítéséhez. - 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ítsam a(z) %1$s? - Sikeres párosítás: %1$s. - Csatlakozási kísérlet: %1$s - Párosítás - Távolság - Megtaláltad! - Pulzus - Automatikus (alvás érzékelés) - Ki - Időzített (intervallumú) - Szöveges értesítés - = 1.0.1.28 és Mili_pro.ft* telepítve.]]> - Ezt a verziót kell telepítened %1$s firmware telepítés előtt! - Kijelző elemek - Válaszd ki a band-en megjelenő elemeket - Ne zavarj - Végidő - Kezdő idő - A band nem fog értesítéseket kapni, amíg aktiv - Cél értesítés - A band rezegni fog, amikor elérted a napi lépés célod - Inaktivitás figyelmeztetés - Inaktivitás figyelmezetetések tiltása ennyi időre - A band rezegni fog, amikor egy ideje már inaktív vagy - Inaktivitási határérték (percben) - Forgasd a csuklód az információ váltáshoz - Mi2: Időformátum - - automatikus - akkumulátor - kész - név - ki - kalória - óra - távolság - hosszú - közepes - ki - kész - tartalom - ki - - időzített - rövid - lépések - 24ó - am/pm - imperial - Név és szám rejtése - Név rejtése, de a szám mutatása - Szám rejtése, de a név mutatása - Név és szám mutatása - Pebble Idővonal - Adatvédelem - Csak az értesítési ikon mutatása - Az értesítés eltolása képernyőn - Normál értesítések - Ébresztőóra - Az értesítések automatikus eltávolítsa, ha az Androidos eszközön eltávolítottad - Naptárbejegyzések küldése az idővonalra - Ennek a letiltásával a kimenő hívás rezgését is letiltja a Pebble 2/LE eszközön - Az ikon és az értesítés mutatása a záróképernyőn - Az ikon és az értesítés elrejtése a záróképernyőn - Minden esetben azonnal felismeri az üzeneteket, amelyeket külső harmadik alkalmazásoknak küldenek. - Ha a Pebble 2/Pebble LE nem működik elvártan, próbáld beállítani az MTU limitet (az érvényes tartomány: 20-512) - Kapcsold ki ezt, ha gondod van a csatlakozással - Engedélyezd ezt, ha az eszközöd nem támogatja a nyelvedhez tartozó betűtípust (Jelenleg ez csak a Ciril) - Automatikusan törölje az eltávolított értesítéseket - Hívás Adatvédelmi Mód - Naptár szinkronizálása - Kimenő hívások támogatása - Automatikus indulás - Gadgetbridge értesítések elrejtése - Korai ACK PebbleKit - Pebble 2/LE GATT MTU limit - Adatvédelmi mód + Bizonyosodj meg róla, hogy a skin támogatja-e az Időjárás értesítések megjelenítését. Nincs szükség konfigurációra. A Pebble app management-ben tudod engedélyezni a rendszer időjárás alkalmazását. Azok a skinek amik támogatják az időjárás értesítésket, automatikusan megfogják jeleníteni azt. Bluetooth párosítás engedélyezése - Időformátum - Transzliteráció - Egységek - HPlus/Makibes Beállítások - Egésznapos pulzusmérés - Sebesség Zónák - Összes perc - Percenkénti lépések + Kapcsold ki ezt, ha gondod van a csatlakozással + Metrikus + Imperiál 24H AM/PM - Imperiál - Metrikus - Heti alvás - Mai alvás, cél: %1$s - Bizonyosodj meg róla, hogy a skin támogatja-e az Időjárás értesítések megjelenítését. Nincs szükség konfigurációra. A Pebble app management-ben tudod engedélyezni a rendszer időjárás alkalmazását. Azok a skinek amik támogatják az időjárás értesítésket, automatikusan megfogják jeleníteni azt. - Kijelző bekapcsolvatartásának ideje + Ébresztőóra + (%1$s) + Megtaláltad! + Mi2: Időformátum + Ezt a verziót kell telepítened %1$s firmware telepítés előtt! + Szöveges értesítés + = 1.0.1.28 és Mili_pro.ft* telepítve.]]> + ki + Csatlakozási kísérlet az eszközhöz: %1$s + A csatlakozás azonnal megszkadt: %1$s + Csatlakozási kísérlet: %1$s + Engedélyezd a Bluetooth-ot az eszközök felderítéséhez. + Sikeres párosítás: %1$s. + Párosítsam a(z) %1$s? + 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 From f0c9728775ee4282c943edc9a1eb2aaf1da98a16 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Sun, 13 Aug 2017 22:30:40 +0200 Subject: [PATCH 10/20] Bump version, update CHANGELOG.md (not yet release time) --- CHANGELOG.md | 10 ++++++++++ app/build.gradle | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ec739933b..0b0811d8c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,14 @@ ### Changelog + +#### Version 0.20.0 (next) +* Inital Amazfit Bip support (WIP) +* Various theming fixes +* Add workaround for blacklist not properly persisting +* Handle resetting language to default properly +* Pebble: Pass booleans from Javascript Appmessage correctly +* Add greek transliteration support +* Various visual improvements to charts + #### Version 0.19.4 * Replace or relicense CC-NC licensed icons to satisfy F-Droid * Mi Band 2: Make infos to display on the Band configurable diff --git a/app/build.gradle b/app/build.gradle index d8aab74f05..14e472240c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,8 +26,8 @@ android { targetSdkVersion 25 // note: always bump BOTH versionCode and versionName! - versionName "0.19.4" - versionCode 97 + versionName "0.20.0" + versionCode 98 vectorDrawables.useSupportLibrary = true } buildTypes { From 0009ed8729b674dc1b3e1bcb876229c8a4d2a647 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Mon, 14 Aug 2017 04:26:54 +0200 Subject: [PATCH 11/20] add missing icons --- .../main/res/drawable-hdpi/ic_device_default.png | Bin 0 -> 1712 bytes .../main/res/drawable-mdpi/ic_device_default.png | Bin 0 -> 1143 bytes .../res/drawable-xhdpi/ic_device_default.png | Bin 0 -> 2263 bytes .../res/drawable-xxhdpi/ic_device_default.png | Bin 0 -> 3560 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_device_default.png create mode 100644 app/src/main/res/drawable-mdpi/ic_device_default.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_device_default.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_device_default.png diff --git a/app/src/main/res/drawable-hdpi/ic_device_default.png b/app/src/main/res/drawable-hdpi/ic_device_default.png new file mode 100644 index 0000000000000000000000000000000000000000..39682624c696de326ecf4aa433e57e4bf1405443 GIT binary patch literal 1712 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 EKmS1%p8x;= literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_device_default.png b/app/src/main/res/drawable-xxhdpi/ic_device_default.png new file mode 100644 index 0000000000000000000000000000000000000000..57c0aeabf7552e44ff4fb1f05e0e0fd0216423fb GIT binary patch literal 3560 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 literal 0 HcmV?d00001 From 5cfb108d52dce01e58ddab7a6ea0d5c58d093912 Mon Sep 17 00:00:00 2001 From: Translation Bot Date: Mon, 14 Aug 2017 17:47:23 +0200 Subject: [PATCH 12/20] update German and Hungarian from Transifex (THANKS!) --- app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-hu/strings.xml | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e6ea6a21b5..38c3d3e88c 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -76,6 +76,7 @@ Bitte nicht stören Benachrichtigungen nicht senden, wenn im \"Nicht Stören\"-Modus Transkription + Aktiviere dies, falls dein Gerät keine Unterstützung für den Zeichensatz deiner Sprache hat immer wenn der Bildschirm aus ist niemals diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index f3c3105f9c..e2b2df4073 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -76,6 +76,7 @@ Ne zavarj mód Értesítések tiltása a Ne zavarj üzemmód használatakor. Transzliteráció + Engedélyezd ezt, ha a nyelvedet nem támogatja a betűtípus mindig amikor a kijelző ki van kapcsolva soha @@ -275,6 +276,9 @@ Lépések Kalória Távolság + Óra + Pulzus + Akkumulátor Aktuális aktivitás Lépések ma, cél: %1$s Ne erősítse meg az aktivitásadatok átvitelét @@ -302,7 +306,20 @@ Mi2: dátumformátum Idő + Cél értesítés + A karkötő vibrálni fog amikor elérted a napi lépés célod + Megjelenítendő elemek + Válaszd ki milyen elemek jelenjenek meg a karkötő kijelzőjén Kijelző aktiválása felemeléskor + Forgasd el a karkötőt információ váltáshoz + Ne zavarj mód + A karkötő nem fog értesítéseket jelezni amíg ez aktív + Inaktivitás figyelmeztetés + A karkötő rezegni fog amikor inaktív vagy már egy ideje + Inaktivitás határ (percben) + Inaktivitás figyelmeztetések tiltása adott időre + Kezdete + Vége Adatok átvitele %1$s óta várakozás az újracsatlakozásra Rólad @@ -370,6 +387,9 @@ Szöveges értesítés = 1.0.1.28 és Mili_pro.ft* telepítve.]]> ki + Ki + Automatikus (alvás érzékelés) + Időzített (idő intervallum) Csatlakozási kísérlet az eszközhöz: %1$s A csatlakozás azonnal megszkadt: %1$s Csatlakozási kísérlet: %1$s From 6b1ba4d161ba8673499c5422208086e27b903136 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Mon, 14 Aug 2017 21:35:34 +0200 Subject: [PATCH 13/20] Don't duplicate colors, use the theme #757 --- .../activities/ControlCenterv2.java | 12 +++++- .../gadgetbridge/util/AndroidUtils.java | 39 +++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java index 6dd08504a1..164dfc4c44 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java @@ -197,7 +197,7 @@ public class ControlCenterv2 extends AppCompatActivity checkAndRequestPermissions(); } - ChangeLog cl = new ChangeLog(this, (GBApplication.isDarkThemeEnabled() ? "body { color: #ffffff; background-color: #282828; }\n" : "") + DEFAULT_CSS); + ChangeLog cl = createChangeLog(); if (cl.isFirstRun()) { cl.getLogDialog().show(); } @@ -251,7 +251,7 @@ public class ControlCenterv2 extends AppCompatActivity GBApplication.quit(); return true; case R.id.external_changelog: - ChangeLog cl = new ChangeLog(this, (GBApplication.isDarkThemeEnabled() ? "body { color: #ffffff; background-color: #282828; }\n" : "") + DEFAULT_CSS); + ChangeLog cl = createChangeLog(); cl.getFullLogDialog().show(); return true; } @@ -259,6 +259,14 @@ public class ControlCenterv2 extends AppCompatActivity return true; } + private ChangeLog createChangeLog() { + String css = ChangeLog.DEFAULT_CSS; + css += "body { " + + "color: " + AndroidUtils.getTextColorHex(getBaseContext()) + "; " + + "background-color: " + AndroidUtils.getBackgroundColorHex(getBaseContext()) + ";" + + "}"; + return new ChangeLog(this, css); +} private void launchDiscoveryActivity() { startActivity(new Intent(this, DiscoveryActivity.class)); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/AndroidUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/AndroidUtils.java index 9c3af56f24..a3258b19f3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/AndroidUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/AndroidUtils.java @@ -20,12 +20,16 @@ import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.res.Configuration; +import android.graphics.Color; import android.os.ParcelUuid; import android.os.Parcelable; import android.support.v4.content.LocalBroadcastManager; import java.util.Locale; +import nodomain.freeyourgadget.gadgetbridge.GBApplication; +import nodomain.freeyourgadget.gadgetbridge.R; + public class AndroidUtils { public static ParcelUuid[] toParcelUUids(Parcelable[] uuids) { if (uuids == null) { @@ -74,4 +78,39 @@ public class AndroidUtils { activity.getBaseContext().getResources().updateConfiguration(config, activity.getBaseContext().getResources().getDisplayMetrics()); activity.recreate(); } + + /** + * Returns the theme dependent text color as a css-style hex string. + * @param context the context to access the colour + */ + public static String getTextColorHex(Context context) { + int color; + if (GBApplication.isDarkThemeEnabled()) { + color = context.getResources().getColor(R.color.primarytext_dark); + } else { + color = context.getResources().getColor(R.color.primarytext_light); + } + return colorToHex(color); + } + + /** + * Returns the theme dependent background color as a css-style hex string. + * @param context the context to access the colour + */ + public static String getBackgroundColorHex(Context context) { + int color; + if (GBApplication.isDarkThemeEnabled()) { + color = context.getResources().getColor(R.color.cardview_dark_background); + } else { + color = context.getResources().getColor(R.color.cardview_light_background); + } + return colorToHex(color); + } + + private static String colorToHex(int color) { + return "#" + + Integer.toHexString(Color.red(color)) + + Integer.toHexString(Color.green(color)) + + Integer.toHexString(Color.blue(color)); + } } From 7108dd7b88818dae1af6a2e33518af65bdb2ff06 Mon Sep 17 00:00:00 2001 From: Translation Bot Date: Tue, 15 Aug 2017 17:23:12 +0200 Subject: [PATCH 14/20] Amazfit Bip: Implement support for rejecting calls Taking calls does not work with recent Android versions, I guess we need to push the button in the notification :( --- .../devices/amazfitbip/AmazfitBipSupport.java | 18 ++++++++++++++++++ .../devices/miband2/MiBand2Support.java | 2 +- .../receivers/GBCallControlReceiver.java | 3 ++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java index 05c3ade70b..d6ec8cad58 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java @@ -16,6 +16,7 @@ along with this program. If not, see . */ package nodomain.freeyourgadget.gadgetbridge.service.devices.amazfitbip; +import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.NotificationStrategy; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.MiBand2Support; @@ -29,4 +30,21 @@ public class AmazfitBipSupport extends MiBand2Support { public void onFindDevice(boolean start) { // Prevent notification spamming from MiBand2Support for now } + + @Override + public void handleButtonPressed(byte[] value) { + if (value == null || value.length != 1) { + return; + } + GBDeviceEventCallControl callCmd = new GBDeviceEventCallControl(); + + if (value[0] == 0x07) { + callCmd.event = GBDeviceEventCallControl.Event.REJECT; + } else if (value[0] == 0x09) { + callCmd.event = GBDeviceEventCallControl.Event.ACCEPT; + } else { + return; + } + evaluateGBDeviceEvent(callCmd); + } } \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java index 16b718c64e..a7ab336201 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java @@ -808,7 +808,7 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport { return false; } - private void handleButtonPressed(byte[] value) { + public void handleButtonPressed(byte[] value) { LOG.info("Button pressed"); logMessageContent(value); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBCallControlReceiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBCallControlReceiver.java index d12c9ab930..263ca85d86 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBCallControlReceiver.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBCallControlReceiver.java @@ -39,6 +39,7 @@ public class GBCallControlReceiver extends BroadcastReceiver { GBDeviceEventCallControl.Event callCmd = GBDeviceEventCallControl.Event.values()[intent.getIntExtra("event", 0)]; switch (callCmd) { case END: + case REJECT: case START: try { TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); @@ -46,7 +47,7 @@ public class GBCallControlReceiver extends BroadcastReceiver { Method method = clazz.getDeclaredMethod("getITelephony"); method.setAccessible(true); ITelephony telephonyService = (ITelephony) method.invoke(telephonyManager); - if (callCmd == GBDeviceEventCallControl.Event.END) { + if (callCmd == GBDeviceEventCallControl.Event.END || callCmd == GBDeviceEventCallControl.Event.REJECT) { telephonyService.endCall(); } else { telephonyService.answerRingingCall(); From cd5af1e66a90c2232a2702ea9242a3bfc7d357c4 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Wed, 16 Aug 2017 20:55:20 +0200 Subject: [PATCH 15/20] Amazfit Bip: implement find lost device by simulating a phone call from "Gadgetbridge" --- .../service/devices/amazfitbip/AmazfitBipSupport.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java index d6ec8cad58..1a874e64c6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java @@ -17,6 +17,7 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.amazfitbip; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl; +import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.NotificationStrategy; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.MiBand2Support; @@ -28,7 +29,10 @@ public class AmazfitBipSupport extends MiBand2Support { @Override public void onFindDevice(boolean start) { - // Prevent notification spamming from MiBand2Support for now + CallSpec callSpec = new CallSpec(); + callSpec.command = start ? CallSpec.CALL_INCOMING : CallSpec.CALL_END; + callSpec.name = "Gadgetbridge"; + onSetCallState(callSpec); } @Override From 91b146482418b9a1915d26b8dcb934c0cdb1ee72 Mon Sep 17 00:00:00 2001 From: Daniele Gobbetti Date: Wed, 16 Aug 2017 21:31:39 +0200 Subject: [PATCH 16/20] Pebble: use iframe for clay configuration webpages Replacing the top frame with a data-uri is forbidden since chromium-based-webview version 60. With this commit we swap the body with an iframe when needed. Old webviews work as usual also with this approach. No special treatment is needed for local storage as its usage is forbidden in data-uri iframes. Fixes #758 --- CHANGELOG.md | 1 + app/src/main/assets/app_config/configure.html | 12 +++++++++++ .../app_config/js/gadgetbridge_boilerplate.js | 20 ++++++++++++++++++- app/src/main/res/xml/changelog_master.xml | 10 ++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b0811d8c7..9f210d90fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * Add workaround for blacklist not properly persisting * Handle resetting language to default properly * Pebble: Pass booleans from Javascript Appmessage correctly +* Pebble: Use iframe for clay configuration webpages * Add greek transliteration support * Various visual improvements to charts diff --git a/app/src/main/assets/app_config/configure.html b/app/src/main/assets/app_config/configure.html index 6da22151e4..cdc7669f52 100644 --- a/app/src/main/assets/app_config/configure.html +++ b/app/src/main/assets/app_config/configure.html @@ -9,6 +9,18 @@