diff --git a/CHANGELOG.md b/CHANGELOG.md index a1f1bfd27..49b131bd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ### Changelog +#### Version 0.39.1 +* Try to actively re-connect when a connection gets interrupted (interval grows up to 64 seconds) +* Mi Band2/Amazfip Bip: Make button action settings per-device and enable for Amazfit Bip + #### Version 0.39.0 * Amazfit GTS: Initial and incomplete support, mostly untested * Add forward/backward buttons to charts for faster navigation diff --git a/README.md b/README.md index b4c7df3ea..0bfe6e9dc 100644 --- a/README.md +++ b/README.md @@ -30,9 +30,11 @@ 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 AND ROOT ONCE) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Amazfit-Bip-Lite) +* Amazfit Bip Lite (NOT RECOMMENDED, 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) * BFH-16 * Casio GB-6900B * HPlus Devices (e.g. ZeBand) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/HPlus) diff --git a/app/build.gradle b/app/build.gradle index a0c0f407d..194abb146 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -25,8 +25,8 @@ android { targetSdkVersion 27 // Note: always bump BOTH versionCode and versionName! - versionName "0.39.0" - versionCode 161 + versionName "0.39.1" + versionCode 162 vectorDrawables.useSupportLibrary = true } buildTypes { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java index 9e066919e..64950a5f2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java @@ -46,6 +46,9 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager; import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Locale; @@ -103,7 +106,7 @@ public class GBApplication extends Application { private static SharedPreferences sharedPrefs; private static final String PREFS_VERSION = "shared_preferences_version"; //if preferences have to be migrated, increment the following and add the migration logic in migratePrefs below; see http://stackoverflow.com/questions/16397848/how-can-i-migrate-android-preferences-with-a-new-version - private static final int CURRENT_PREFS_VERSION = 5; + private static final int CURRENT_PREFS_VERSION = 6; private static LimitedQueue mIDSenderLookup = new LimitedQueue(16); private static Prefs prefs; private static GBPrefs gbPrefs; @@ -596,6 +599,58 @@ public class GBApplication extends Application { } } + private void migrateStringPrefToPerDevicePref(String globalPref, String globalPrefDefault, String perDevicePref, ArrayList deviceTypes) { + SharedPreferences.Editor editor = sharedPrefs.edit(); + String globalPrefValue = prefs.getString(globalPref, globalPrefDefault); + try (DBHandler db = acquireDB()) { + DaoSession daoSession = db.getDaoSession(); + List activeDevices = DBHelper.getActiveDevices(daoSession); + for (Device dbDevice : activeDevices) { + SharedPreferences deviceSpecificSharedPrefs = GBApplication.getDeviceSpecificSharedPrefs(dbDevice.getIdentifier()); + if (deviceSpecificSharedPrefs != null) { + SharedPreferences.Editor deviceSharedPrefsEdit = deviceSpecificSharedPrefs.edit(); + DeviceType deviceType = fromKey(dbDevice.getType()); + + if (deviceTypes.contains(deviceType)) { + Log.i(TAG, "migrating global string preference " + globalPref + " for " + deviceType.name() + " " + dbDevice.getIdentifier() ); + deviceSharedPrefsEdit.putString(perDevicePref, globalPrefValue); + } + deviceSharedPrefsEdit.apply(); + } + } + editor.remove(globalPref); + editor.apply(); + } catch (Exception e) { + Log.w(TAG, "error acquiring DB lock"); + } + } + + private void migrateBooleanPrefToPerDevicePref(String globalPref, Boolean globalPrefDefault, String perDevicePref, ArrayList deviceTypes) { + SharedPreferences.Editor editor = sharedPrefs.edit(); + boolean globalPrefValue = prefs.getBoolean(globalPref, globalPrefDefault); + try (DBHandler db = acquireDB()) { + DaoSession daoSession = db.getDaoSession(); + List activeDevices = DBHelper.getActiveDevices(daoSession); + for (Device dbDevice : activeDevices) { + SharedPreferences deviceSpecificSharedPrefs = GBApplication.getDeviceSpecificSharedPrefs(dbDevice.getIdentifier()); + if (deviceSpecificSharedPrefs != null) { + SharedPreferences.Editor deviceSharedPrefsEdit = deviceSpecificSharedPrefs.edit(); + DeviceType deviceType = fromKey(dbDevice.getType()); + + if (deviceTypes.contains(deviceType)) { + Log.i(TAG, "migrating global boolean preference " + globalPref + " for " + deviceType.name() + " " + dbDevice.getIdentifier() ); + deviceSharedPrefsEdit.putBoolean(perDevicePref, globalPrefValue); + } + deviceSharedPrefsEdit.apply(); + } + } + editor.remove(globalPref); + editor.apply(); + } catch (Exception e) { + Log.w(TAG, "error acquiring DB lock"); + } + } + private void migratePrefs(int oldVersion) { SharedPreferences.Editor editor = sharedPrefs.edit(); if (oldVersion == 0) { @@ -684,7 +739,7 @@ public class GBApplication extends Application { switch (deviceType) { case MIBAND: deviceSharedPrefsEdit.putBoolean("low_latency_fw_update", prefs.getBoolean("mi_low_latency_fw_update", true)); - deviceSharedPrefsEdit.putInt("device_time_offset_hours", prefs.getInt("mi_device_time_offset_hours", 0)); + deviceSharedPrefsEdit.putString("device_time_offset_hours", String.valueOf(prefs.getInt("mi_device_time_offset_hours", 0))); break; case AMAZFITCOR: displayItems = prefs.getStringSet("cor_display_items", null); @@ -825,6 +880,14 @@ public class GBApplication extends Application { Log.w(TAG, "error acquiring DB lock"); } } + if (oldVersion < 6) { + migrateBooleanPrefToPerDevicePref("mi2_enable_button_action", false, "button_action_enable", new ArrayList<>(Collections.singletonList(MIBAND2))); + migrateBooleanPrefToPerDevicePref("mi2_button_action_vibrate", false, "button_action_vibrate", new ArrayList<>(Collections.singletonList(MIBAND2))); + migrateStringPrefToPerDevicePref("mi_button_press_count", "6", "button_action_press_count", new ArrayList<>(Collections.singletonList(MIBAND2))); + migrateStringPrefToPerDevicePref("mi_button_press_count_max_delay", "2000", "button_action_press_max_interval", new ArrayList<>(Collections.singletonList(MIBAND2))); + migrateStringPrefToPerDevicePref("mi_button_press_count_match_delay", "0", "button_action_broadcast_delay", new ArrayList<>(Collections.singletonList(MIBAND2))); + migrateStringPrefToPerDevicePref("mi_button_press_broadcast", "nodomain.freeyourgadget.gadgetbridge.ButtonPressed", "button_action_broadcast", new ArrayList<>(Collections.singletonList(MIBAND2))); + } editor.putString(PREFS_VERSION, Integer.toString(CURRENT_PREFS_VERSION)); editor.apply(); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/Widget.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/Widget.java index bed0d9a3f..b1f7e47ec 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/Widget.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/Widget.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2016-2019 0nse, Andreas Shimokawa, Carsten Pfeiffer +/* Copyright (C) 2019 Andreas Shimokawa, vanous This file is part of Gadgetbridge. 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 a9a0fd3be..6989dffd7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java @@ -1,5 +1,5 @@ /* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, Johannes Tysiak, Taavi Eomäe + Gobbetti, Johannes Tysiak, Taavi Eomäe, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java index 2f404d3ba..65005aab4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java @@ -1,5 +1,5 @@ /* Copyright (C) 2016-2019 Alberto, Andreas Shimokawa, Carsten Pfeiffer, - Daniele Gobbetti + Daniele Gobbetti, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java index 27579aa94..603816832 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java @@ -1,6 +1,6 @@ /* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele Gobbetti, Frank Slezak, ivanovlev, Kasha, Lem Dulfo, Pavel Elagin, Steffen - Liebergeld + Liebergeld, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FindPhoneActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FindPhoneActivity.java index cb2a69d6e..0c74ff16c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FindPhoneActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FindPhoneActivity.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2018-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti +/* Copyright (C) 2018-2019 Andreas Shimokawa, Carsten Pfeiffer, Cre3per, + Daniele Gobbetti This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java index cfef68b0c..f00f50fc5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java @@ -1,6 +1,6 @@ /* Copyright (C) 2015-2019 0nse, Andreas Shimokawa, Carsten Pfeiffer, Daniele Gobbetti, Felix Konstantin Maurer, José Rebelo, Martin, Normano64, - Pavel Elagin, Sebastian Kranz + Pavel Elagin, Sebastian Kranz, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/WidgetAlarmsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/WidgetAlarmsActivity.java index b7b54a13e..359115bb3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/WidgetAlarmsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/WidgetAlarmsActivity.java @@ -1,3 +1,19 @@ +/* Copyright (C) 2019 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.activities; import android.app.Activity; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java index 57a86f212..8ff2df1f7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java @@ -1,5 +1,5 @@ /* Copyright (C) 2015-2019 0nse, Andreas Shimokawa, Carsten Pfeiffer, - Daniele Gobbetti, Dikay900, Pavel Elagin, walkjivefly + Daniele Gobbetti, Dikay900, Pavel Elagin, vanous, walkjivefly This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractWeekChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractWeekChartFragment.java index 8dcbaed2e..677f49d4e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractWeekChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractWeekChartFragment.java @@ -1,5 +1,5 @@ /* Copyright (C) 2015-2019 0nse, Alberto, Andreas Shimokawa, Carsten Pfeiffer, - Daniele Gobbetti, Pavel Elagin + Daniele Gobbetti, Pavel Elagin, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityAnalysis.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityAnalysis.java index 25e7d342e..cac13a2d3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityAnalysis.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityAnalysis.java @@ -1,5 +1,5 @@ /* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, Pavel Elagin, Vebryn + Gobbetti, Pavel Elagin, vanous, Vebryn This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AngledLabelsChartRenderer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AngledLabelsChartRenderer.java index 286d484c0..c6fa3e42d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AngledLabelsChartRenderer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AngledLabelsChartRenderer.java @@ -1,3 +1,19 @@ +/* Copyright (C) 2019 Andreas Shimokawa, 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.activities.charts; import android.graphics.Canvas; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java index 68fa9eda4..4c1a89090 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java @@ -1,5 +1,5 @@ /* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, Vebryn + Gobbetti, vanous, Vebryn This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsHost.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsHost.java index 566dfec05..614bc907a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsHost.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsHost.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer +/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java index b3cfc7505..d4383ea2e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Christian - Fischer, Daniele Gobbetti, José Rebelo, Szymon Tomasz Stefanek +/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Lem Dulfo, + vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/LiveActivityFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/LiveActivityFragment.java index bdb095c2a..a956ad73b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/LiveActivityFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/LiveActivityFragment.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, Dikay900, Pavel, Pavel Elagin +/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Cre3per, + Daniele Gobbetti, Dikay900, Pavel, Pavel Elagin This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepAnalysis.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepAnalysis.java index eec9d664a..bc32f127b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepAnalysis.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepAnalysis.java @@ -1,3 +1,19 @@ +/* Copyright (C) 2019 Q-er + + 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.activities.charts; import java.util.ArrayList; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepChartFragment.java index b8c24d649..abe5de407 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepChartFragment.java @@ -1,5 +1,5 @@ /* Copyright (C) 2015-2019 0nse, Andreas Shimokawa, Carsten Pfeiffer, - Daniele Gobbetti, Dikay900, Pavel Elagin + Daniele Gobbetti, Dikay900, Pavel Elagin, Q-er, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/TimestampValueFormatter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/TimestampValueFormatter.java index a79af0781..7a89b872f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/TimestampValueFormatter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/TimestampValueFormatter.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2016-2019 Carsten Pfeiffer +/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekSleepChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekSleepChartFragment.java index 62018cd18..362863f91 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekSleepChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekSleepChartFragment.java @@ -1,4 +1,5 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Pavel Elagin +/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Pavel + Elagin, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekStepsChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekStepsChartFragment.java index ec720a6da..ee4e9f685 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekStepsChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekStepsChartFragment.java @@ -1,5 +1,5 @@ /* Copyright (C) 2015-2019 0nse, Andreas Shimokawa, Carsten Pfeiffer, - Daniele Gobbetti, Pavel Elagin + Daniele Gobbetti, Pavel Elagin, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsActivity.java index 8b2e2ca93..62792d47d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsActivity.java @@ -1,5 +1,4 @@ -/* Copyright (C) 2018-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti +/* Copyright (C) 2019 Andreas Shimokawa This file is part of Gadgetbridge. 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 e1f22d366..2990f827e 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 @@ -1,3 +1,19 @@ +/* Copyright (C) 2019 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.activities.devicesettings; public class DeviceSettingsPreferenceConst { 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 f5c04e7cd..2fae9fa98 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 @@ -1,3 +1,19 @@ +/* Copyright (C) 2019 Andreas Shimokawa, Cre3per + + 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.activities.devicesettings; import android.os.Bundle; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/deviceevents/GBDeviceEventCallControl.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/deviceevents/GBDeviceEventCallControl.java index e41887d2f..f71735002 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/deviceevents/GBDeviceEventCallControl.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/deviceevents/GBDeviceEventCallControl.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2019 Andreas Shimokawa +/* Copyright (C) 2015-2019 Andreas Böhler, Andreas Shimokawa This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java index 46bd46344..6c87c43cc 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java @@ -1,5 +1,5 @@ /* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, José Rebelo, Matthieu Baerts + Gobbetti, José Rebelo, Matthieu Baerts, Nephiel, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java index 567fa5b8d..9c39aceea 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java @@ -1,5 +1,5 @@ /* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, JohnnySun, José Rebelo, Matthieu Baerts, Uwe Hermann + Gobbetti, JohnnySun, José Rebelo, Matthieu Baerts, Nephiel, Uwe Hermann This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiConst.java index ada18bb2d..cd9bb4fce 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiConst.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiConst.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer +/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Nephiel This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java index 2ec92bdf7..9f35baa1e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java @@ -1,5 +1,5 @@ /* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, José Rebelo + Gobbetti, José Rebelo, Nephiel This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java index 1b28bb5e6..a172fb72f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java @@ -1,5 +1,5 @@ /* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, João Paulo Barraca + Gobbetti, João Paulo Barraca, Nephiel This file is part of Gadgetbridge. 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 7a252c054..d5b6878ac 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 @@ -1,5 +1,5 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, João Paulo Barraca +/* Copyright (C) 2017-2019 Andreas Shimokawa, Daniele Gobbetti, João + Paulo Barraca, José Rebelo, tiparega This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java index 352353451..f58f66dd0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, João Paulo Barraca +/* Copyright (C) 2017-2019 Andreas Shimokawa, Daniele Gobbetti, João + Paulo Barraca, José Rebelo, tiparega This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java index cd13cbc87..1d14079c0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java @@ -1,3 +1,19 @@ +/* Copyright (C) 2019 Andreas Shimokawa, Manuel Ruß + + 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.amazfitgts; import android.bluetooth.BluetoothDevice; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java index b21acc66a..c6cf1dab4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java @@ -1,4 +1,5 @@ -/* Copyright (C) 2016-2019 Andreas Shimokawa +/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele + Gobbetti, HardLight, José Rebelo This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/id115/ID115Constants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/id115/ID115Constants.java index 7c822a986..40ec2ad7e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/id115/ID115Constants.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/id115/ID115Constants.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2019 Vadim Kaushan +/* Copyright (C) 2018-2019 Andreas Shimokawa, Vadim Kaushan This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/BFH16DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/BFH16DeviceCoordinator.java index dd90e41a4..44bc84a6e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/BFH16DeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/BFH16DeviceCoordinator.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2019 Sophanimus +/* Copyright (C) 2019 Andreas Shimokawa, Sophanimus This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Constants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Constants.java index ef022af65..5a7440c50 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Constants.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Constants.java @@ -1,5 +1,4 @@ -/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, João - Paulo Barraca +/* Copyright (C) 2019 Andreas Shimokawa, Cre3per This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java index ca023bc5c..9702b869b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java @@ -1,4 +1,5 @@ -/* Copyright (C) 2017-2019 Daniele Gobbetti, João Paulo Barraca, tiparega +/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Cre3per, + Daniele Gobbetti, José Rebelo, Petr Kadlec, protomors This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3SampleProvider.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3SampleProvider.java index fd6f4ee01..07149d188 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3SampleProvider.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3SampleProvider.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2019 Daniele Gobbetti, Sebastian Kranz +/* Copyright (C) 2018-2019 Cre3per, Daniele Gobbetti, Sebastian Kranz This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java index 76e05fdba..1cf808534 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java @@ -1,4 +1,5 @@ -/* Copyright (C) 2019 Andreas Shimokawa +/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele + Gobbetti, José Rebelo This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java index c1dacc406..deaf63063 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2019 Kranz, Sebastian Kranz +/* Copyright (C) 2018-2019 Andreas Shimokawa, Kranz, Sebastian Kranz This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimePreferenceActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimePreferenceActivity.java index e1128f297..15dbe81c2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimePreferenceActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimePreferenceActivity.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2019 Sebastian Kranz +/* Copyright (C) 2018-2019 Andreas Shimokawa, Sebastian Kranz This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/LineageOsWeatherReceiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/LineageOsWeatherReceiver.java index b42bde56b..d687670ac 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/LineageOsWeatherReceiver.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/LineageOsWeatherReceiver.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa +/* Copyright (C) 2017-2019 Andreas Shimokawa, keeshii This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/PhoneCallReceiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/PhoneCallReceiver.java index e1d098bf0..e98189e5b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/PhoneCallReceiver.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/PhoneCallReceiver.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, Johannes Tysiak, Normano64 +/* Copyright (C) 2015-2019 Andreas Böhler, Andreas Shimokawa, Carsten + Pfeiffer, Daniele Gobbetti, Johannes Tysiak, Normano64 This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDevice.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDevice.java index 91dc04257..f2b04ce36 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDevice.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDevice.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, José Rebelo, Taavi Eomäe, Uwe Hermann +/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniel + Dakhno, Daniele Gobbetti, José Rebelo, Taavi Eomäe, Uwe Hermann This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java index 35a8fa86e..e10b9aef5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java @@ -1,6 +1,7 @@ -/* Copyright (C) 2015-2019 Alberto, Andreas Shimokawa, Carsten Pfeiffer, - criogenic, dakhnod, Daniele Gobbetti, Frank Slezak, ivanovlev, José Rebelo, - Julien Pivotto, Kasha, Roi Greenberg, Sebastian Kranz, Steffen Liebergeld +/* Copyright (C) 2015-2019 Alberto, Andreas Böhler, Andreas Shimokawa, + Carsten Pfeiffer, criogenic, dakhnod, Daniele Gobbetti, Frank Slezak, + ivanovlev, José Rebelo, Julien Pivotto, Kasha, Roi Greenberg, Sebastian + Kranz, Steffen Liebergeld This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/AppNotificationType.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/AppNotificationType.java index 2aff0bb14..8859c8bb8 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/AppNotificationType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/AppNotificationType.java @@ -1,6 +1,6 @@ /* Copyright (C) 2016-2019 Andreas Shimokawa, AnthonyDiGirolamo, Daniele - Gobbetti, Frank Slezak, Kaz Wolfe, Kevin Richter, Lukas Veneziano, Matthieu - Baerts, michaelneu, NotAFIle, Tomas Radej + Gobbetti, Frank Slezak, Kaz Wolfe, Kevin Richter, Lukas Veneziano, Marvin D, + Matthieu Baerts, michaelneu, NotAFIle, Tomas Radej This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java index 703e64736..8c7fbd0ca 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Carsten Pfeiffer, Daniele Gobbetti +/* Copyright (C) 2019 Andreas Shimokawa, vanous This file is part of Gadgetbridge. 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 14fe31290..ee85fe229 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -1,7 +1,7 @@ /* Copyright (C) 2015-2019 Andreas Böhler, Andreas Shimokawa, Carsten - Pfeiffer, Daniele Gobbetti, Jean-François Greffier, João Paulo Barraca, - José Rebelo, Kranz, ladbsoft, maxirnilian, protomors, Quallenauge, Sami - Alaoui, Sebastian Kranz, Sophanimus, tiparega, Vadim Kaushan + Pfeiffer, Cre3per, Daniele Gobbetti, Jean-François Greffier, João Paulo + Barraca, José Rebelo, Kranz, ladbsoft, Manuel Ruß, maxirnilian, protomors, + Quallenauge, Sami Alaoui, Sebastian Kranz, Sophanimus, tiparega, Vadim Kaushan This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/AbstractDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/AbstractDeviceSupport.java index 2bdf62878..c2a822731 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/AbstractDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/AbstractDeviceSupport.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, José Rebelo, Sebastian Kranz, Taavi Eomäe +/* Copyright (C) 2015-2019 Andreas Böhler, Andreas Shimokawa, Carsten + Pfeiffer, Daniele Gobbetti, José Rebelo, Sebastian Kranz, Taavi Eomäe This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java index 34dd7f66b..dff7fd412 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java @@ -1,8 +1,8 @@ -/* Copyright (C) 2015-2019 Andreas Shimokawa, Avamander, Carsten Pfeiffer, - dakhnod, Daniele Gobbetti, Daniel Hauck, Dikay900, Frank Slezak, ivanovlev, - João Paulo Barraca, José Rebelo, Julien Pivotto, Kasha, Martin, Matthieu - Baerts, Sebastian Kranz, Sergey Trofimov, Steffen Liebergeld, Taavi Eomäe, - Uwe Hermann +/* Copyright (C) 2015-2019 Andreas Böhler, Andreas Shimokawa, Avamander, + Carsten Pfeiffer, dakhnod, Daniele Gobbetti, Daniel Hauck, Dikay900, Frank + Slezak, ivanovlev, João Paulo Barraca, José Rebelo, Julien Pivotto, Kasha, + keeshii, Martin, Matthieu Baerts, Nephiel, Sebastian Kranz, Sergey Trofimov, + Steffen Liebergeld, Taavi Eomäe, Uwe Hermann This file is part of Gadgetbridge. @@ -44,14 +44,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; -import java.util.Random; import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.HeartRateUtils; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator; -import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.externalevents.AlarmClockReceiver; import nodomain.freeyourgadget.gadgetbridge.externalevents.AlarmReceiver; import nodomain.freeyourgadget.gadgetbridge.externalevents.BluetoothConnectReceiver; @@ -75,13 +73,13 @@ import nodomain.freeyourgadget.gadgetbridge.model.MusicStateSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationType; import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec; +import nodomain.freeyourgadget.gadgetbridge.service.receivers.AutoConnectIntervalReceiver; import nodomain.freeyourgadget.gadgetbridge.service.receivers.GBAutoFetchReceiver; import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper; import nodomain.freeyourgadget.gadgetbridge.util.EmojiConverter; import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; -import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_ADD_CALENDAREVENT; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_APP_CONFIGURE; @@ -193,6 +191,7 @@ public class DeviceCommunicationService extends Service implements SharedPrefere private BluetoothPairingRequestReceiver mBlueToothPairingRequestReceiver = null; private AlarmClockReceiver mAlarmClockReceiver = null; private GBAutoFetchReceiver mGBAutoFetchReceiver = null; + private AutoConnectIntervalReceiver mAutoConnectInvervalReceiver= null; private AlarmReceiver mAlarmReceiver = null; private CalendarReceiver mCalendarReceiver = null; @@ -760,6 +759,10 @@ public class DeviceCommunicationService extends Service implements SharedPrefere mGBAutoFetchReceiver = new GBAutoFetchReceiver(); registerReceiver(mGBAutoFetchReceiver, new IntentFilter("android.intent.action.USER_PRESENT")); } + if (mAutoConnectInvervalReceiver == null) { + mAutoConnectInvervalReceiver= new AutoConnectIntervalReceiver(this); + registerReceiver(mAutoConnectInvervalReceiver, new IntentFilter("GB_RECONNECT")); + } } else { if (mPhoneCallReceiver != null) { unregisterReceiver(mPhoneCallReceiver); @@ -809,6 +812,10 @@ public class DeviceCommunicationService extends Service implements SharedPrefere unregisterReceiver(mGBAutoFetchReceiver); mGBAutoFetchReceiver = null; } + if (mAutoConnectInvervalReceiver != null) { + unregisterReceiver(mAutoConnectInvervalReceiver); + mAutoConnectInvervalReceiver = null; + } } } 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 379aed8aa..034218e9f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java @@ -1,7 +1,8 @@ /* Copyright (C) 2015-2019 0nse, Andreas Böhler, Andreas Shimokawa, Carsten - Pfeiffer, criogenic, Daniele Gobbetti, Jean-François Greffier, João Paulo - Barraca, José Rebelo, Kranz, ladbsoft, maxirnilian, protomors, Quallenauge, - Sami Alaoui, Sergey Trofimov, Sophanimus, tiparega, Vadim Kaushan + Pfeiffer, Cre3per, criogenic, Daniele Gobbetti, Jean-François Greffier, + João Paulo Barraca, José Rebelo, Kranz, ladbsoft, Manuel Ruß, maxirnilian, + protomors, Quallenauge, Sami Alaoui, Sergey Trofimov, Sophanimus, tiparega, + Vadim Kaushan This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/BtLEQueue.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/BtLEQueue.java index 41af77b3a..cc1418688 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/BtLEQueue.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/BtLEQueue.java @@ -1,5 +1,5 @@ /* Copyright (C) 2015-2019 Andreas Böhler, Andreas Shimokawa, Carsten - Pfeiffer, Daniele Gobbetti, Sergey Trofimov, Uwe Hermann + Pfeiffer, Cre3per, Daniele Gobbetti, Sergey Trofimov, Uwe Hermann This file is part of Gadgetbridge. @@ -49,6 +49,7 @@ import nodomain.freeyourgadget.gadgetbridge.Logging; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice.State; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; +import nodomain.freeyourgadget.gadgetbridge.service.receivers.AutoConnectIntervalReceiver; /** * One queue/thread per connectable device. @@ -301,8 +302,6 @@ public final class BtLEQueue { mWaitForServerActionResultLatch.countDown(); } - boolean wasInitialized = mGbDevice.isInitialized(); - setDeviceConnectionState(State.NOT_CONNECTED); // either we've been disconnected because the device is out of range @@ -312,7 +311,7 @@ public final class BtLEQueue { // reconnecting automatically, so we try to fix this by re-creating mBluetoothGatt. // Not sure if this actually works without re-initializing the device... if (mBluetoothGatt != null) { - if (!wasInitialized || !maybeReconnect()) { + if (!maybeReconnect()) { disconnect(); // ensure that we start over cleanly next time } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/SetDeviceStateAction.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/SetDeviceStateAction.java index bac898926..334e7432f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/SetDeviceStateAction.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/SetDeviceStateAction.java @@ -19,6 +19,8 @@ package nodomain.freeyourgadget.gadgetbridge.service.btle.actions; import android.bluetooth.BluetoothGatt; import android.content.Context; +import androidx.annotation.NonNull; + import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; public class SetDeviceStateAction extends PlainAction { @@ -43,6 +45,7 @@ public class SetDeviceStateAction extends PlainAction { return context; } + @NonNull @Override public String toString() { return super.toString() + " to " + deviceState; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casiogb6900/operations/InitOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casiogb6900/operations/InitOperation.java index 0bfb2c9d0..749d05d77 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casiogb6900/operations/InitOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casiogb6900/operations/InitOperation.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2016-2018 Andreas Böhler +/* Copyright (C) 2019 Andreas Böhler This file is part of Gadgetbridge. 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 eca222cbb..a0a6f891d 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 @@ -141,6 +141,7 @@ import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.VI import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.VIBRATION_PROFILE; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.getNotificationPrefIntValue; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.getNotificationPrefStringValue; +import static nodomain.freeyourgadget.gadgetbridge.service.btle.GattCharacteristic.UUID_CHARACTERISTIC_ALERT_LEVEL; public class HuamiSupport extends AbstractBTLEDeviceSupport { @@ -706,7 +707,7 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { protected void onAlarmClock(NotificationSpec notificationSpec) { alarmClockRinging = true; - AbortTransactionAction abortAction = new StopNotificationAction(getCharacteristic(GattCharacteristic.UUID_CHARACTERISTIC_ALERT_LEVEL)) { + AbortTransactionAction abortAction = new StopNotificationAction(getCharacteristic(UUID_CHARACTERISTIC_ALERT_LEVEL)) { @Override protected boolean shouldAbort() { return !isAlarmClockRinging(); @@ -739,7 +740,7 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { public void onSetCallState(CallSpec callSpec) { if (callSpec.command == CallSpec.CALL_INCOMING) { telephoneRinging = true; - AbortTransactionAction abortAction = new StopNotificationAction(getCharacteristic(GattCharacteristic.UUID_CHARACTERISTIC_ALERT_LEVEL)) { + AbortTransactionAction abortAction = new StopNotificationAction(getCharacteristic(UUID_CHARACTERISTIC_ALERT_LEVEL)) { @Override protected boolean shouldAbort() { return !isTelephoneRinging(); @@ -1083,8 +1084,20 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { // not supported } - public void runButtonAction() { - Prefs prefs = GBApplication.getPrefs(); + // this could go though onion code with preferrednotification, but I this should work on all huami devices + private void vibrateOnce() { + BluetoothGattCharacteristic characteristic = getCharacteristic(UUID_CHARACTERISTIC_ALERT_LEVEL); + try { + TransactionBuilder builder = performInitialized("Vibrate once"); + builder.write(characteristic,new byte[] {3}); + builder.queue(getQueue()); + } catch (IOException e) { + LOG.error("error while sending simple vibrate command", e); + } + } + + private void runButtonAction() { + Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress())); if (currentButtonTimerActivationTime != currentButtonPressTime) { return; @@ -1099,7 +1112,7 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { LOG.info("Sending " + requiredButtonPressMessage + " with button_id " + currentButtonActionId); this.getContext().getApplicationContext().sendBroadcast(in); if (prefs.getBoolean(HuamiConst.PREF_BUTTON_ACTION_VIBRATE, false)) { - performPreferredNotification(null, null, null, HuamiService.ALERT_LEVEL_VIBRATE_ONLY, null); + vibrateOnce(); } currentButtonActionId = 0; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipFirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipFirmwareInfo.java index 6ac8d83be..e5936c52f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipFirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipFirmwareInfo.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer +/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, MyTimeKill This file is part of Gadgetbridge. @@ -158,10 +158,10 @@ public class AmazfitBipFirmwareInfo extends HuamiFirmwareInfo { crcToVersion.put(59577, "9 (Latin)"); // BipOS FW - crcToVersion.put(28373, "1.1.5.02 (BipOS 0.5)"); + crcToVersion.put(28373, "1.1.2.05 (BipOS 0.5)"); // BipOS RES - crcToVersion.put(16303, "1.1.5.02 (BipOS 0.5)"); + crcToVersion.put(16303, "1.1.2.05 (BipOS 0.5)"); } public AmazfitBipFirmwareInfo(byte[] bytes) { 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 f567362f4..6f90a605f 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 @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer +/* Copyright (C) 2017-2019 Andreas Shimokawa, Daniele Gobbetti This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteSupport.java index 339e9317d..8d93e29ff 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipLiteSupport.java @@ -1,5 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Matthieu - Baerts, Roi Greenberg +/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSupport.java index 2fa1329c2..1e1b81d15 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSupport.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Matthieu - Baerts, Roi Greenberg +/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, DerFetzer, + Matthieu Baerts, Roi Greenberg This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr/AmazfitGTRFirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr/AmazfitGTRFirmwareInfo.java index 4c15f6b9e..e33875519 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr/AmazfitGTRFirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr/AmazfitGTRFirmwareInfo.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer +/* Copyright (C) 2017-2019 Andreas Shimokawa, Daniele Gobbetti This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr/AmazfitGTRSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr/AmazfitGTRSupport.java index 791776c84..41144fe87 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr/AmazfitGTRSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr/AmazfitGTRSupport.java @@ -1,5 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Matthieu - Baerts, Roi Greenberg +/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts/AmazfitGTSFirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts/AmazfitGTSFirmwareInfo.java index d61e3bec0..f24809de4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts/AmazfitGTSFirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts/AmazfitGTSFirmwareInfo.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer +/* Copyright (C) 2017-2019 Andreas Shimokawa, Daniele Gobbetti This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts/AmazfitGTSSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts/AmazfitGTSSupport.java index bc7fb2dfa..0ce90e425 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts/AmazfitGTSSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts/AmazfitGTSSupport.java @@ -1,3 +1,19 @@ +/* Copyright (C) 2019 Andreas Shimokawa, Manuel Ruß + + 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.amazfitgts; import android.content.Context; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband4/MiBand4FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband4/MiBand4FirmwareInfo.java index 15d5a4790..0a3dd9022 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband4/MiBand4FirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband4/MiBand4FirmwareInfo.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer +/* Copyright (C) 2017-2019 Andreas Shimokawa, Daniele Gobbetti This file is part of Gadgetbridge. @@ -40,11 +40,13 @@ public class MiBand4FirmwareInfo extends HuamiFirmwareInfo { crcToVersion.put(8969, "1.0.5.22"); crcToVersion.put(43437, "1.0.5.66"); crcToVersion.put(31632, "1.0.6.00"); + crcToVersion.put(6856, "1.0.7.14"); // resources crcToVersion.put(27412, "1.0.5.22"); crcToVersion.put(5466, "1.0.5.66"); crcToVersion.put(20047, "1.0.6.00"); + crcToVersion.put(62914, "1.0.7.14"); // font crcToVersion.put(31978, "1"); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband4/MiBand4Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband4/MiBand4Support.java index a19185050..9b101ed87 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband4/MiBand4Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband4/MiBand4Support.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa +/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/AbstractFetchOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/AbstractFetchOperation.java index 915db7cd7..89b2b51bd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/AbstractFetchOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/AbstractFetchOperation.java @@ -1,5 +1,5 @@ /* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti + Gobbetti, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/UpdateFirmwareOperationNew.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/UpdateFirmwareOperationNew.java index e2991366c..a13e04348 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/UpdateFirmwareOperationNew.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/UpdateFirmwareOperationNew.java @@ -1,5 +1,4 @@ -/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti +/* Copyright (C) 2019 Andreas Shimokawa This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/makibeshr3/MakibesHR3DeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/makibeshr3/MakibesHR3DeviceSupport.java index cb78d9629..f3395e406 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/makibeshr3/MakibesHR3DeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/makibeshr3/MakibesHR3DeviceSupport.java @@ -1,3 +1,19 @@ +/* Copyright (C) 2019 Andreas Shimokawa, Cre3per + + 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 . */ // TODO: All the commands that aren't supported by GB should be added to device specific settings. // TODO: It'd be cool if we could change the language. There's no official way to do so, but the diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/mijia_lywsd02/MijiaLywsd02Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/mijia_lywsd02/MijiaLywsd02Support.java index bc8dc318f..c40a1e16b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/mijia_lywsd02/MijiaLywsd02Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/mijia_lywsd02/MijiaLywsd02Support.java @@ -1,4 +1,5 @@ -/* Copyright (C) 2019 Andreas Shimokawa +/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Sebastian + Kranz This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerM7S.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerM7S.java index d0e5e2f97..5bd37ae34 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerM7S.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerM7S.java @@ -1,4 +1,5 @@ -/* Copyright (C) 2018-2019 jcrode, Johann C. Rode, Sergio Lopez +/* Copyright (C) 2018-2019 Carsten Pfeiffer, jcrode, Johann C. Rode, + Sergio Lopez This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerRealWeather.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerRealWeather.java index 09c332adb..365c756ba 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerRealWeather.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerRealWeather.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2019 Johann C. Rode, Sergio Lopez +/* Copyright (C) 2018-2019 Carsten Pfeiffer, Johann C. Rode, Sergio Lopez This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerSimplyLight.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerSimplyLight.java index 77ca74b76..7b8c89a43 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerSimplyLight.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerSimplyLight.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2019 Sergio Lopez +/* Copyright (C) 2018-2019 Carsten Pfeiffer, Sergio Lopez This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerYWeather.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerYWeather.java index 21d0ecbbd..297e4830f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerYWeather.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerYWeather.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2019 Johann C. Rode +/* Copyright (C) 2018-2019 Carsten Pfeiffer, Johann C. Rode This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleActiveAppTracker.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleActiveAppTracker.java index 2f8f2ce7a..fc7c30e69 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleActiveAppTracker.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleActiveAppTracker.java @@ -1,3 +1,19 @@ +/* Copyright (C) 2019 Matej Drobnič + + 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.pebble; import androidx.annotation.NonNull; 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 7c1ba63c0..e137d2337 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 @@ -1,5 +1,5 @@ /* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, Julien Pivotto, Uwe Hermann + Gobbetti, Julien Pivotto, Matej Drobnič, Uwe Hermann This file is part of Gadgetbridge. @@ -28,6 +28,8 @@ import android.webkit.ValueCallback; import android.webkit.WebView; import androidx.annotation.NonNull; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,7 +46,6 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.UUID; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.ExternalPebbleJSActivity; @@ -110,7 +111,7 @@ class PebbleIoThread extends GBDeviceIoThread { } } - public static void sendAppMessage(GBDeviceEventAppMessage message) { + private static void sendAppMessage(GBDeviceEventAppMessage message) { final String jsEvent; try { WebViewSingleton.getInstance().checkAppRunning(message.appUUID); @@ -190,7 +191,7 @@ class PebbleIoThread extends GBDeviceIoThread { mOutStream = new PipedOutputStream(); mPebbleLESupport = new PebbleLESupport(this.getContext(), btDevice, (PipedInputStream) mInStream, (PipedOutputStream) mOutStream); } else { - ParcelUuid uuids[] = btDevice.getUuids(); + ParcelUuid[] uuids = btDevice.getUuids(); if (uuids == null) { return false; } @@ -364,7 +365,7 @@ class PebbleIoThread extends GBDeviceIoThread { mInStream.skip(2); } - GBDeviceEvent deviceEvents[] = mPebbleProtocol.decodeResponse(buffer); + GBDeviceEvent[] deviceEvents = mPebbleProtocol.decodeResponse(buffer); if (deviceEvents == null) { LOG.info("unhandled message to endpoint " + endpoint + " (" + length + " bytes)"); } else { @@ -386,31 +387,9 @@ class PebbleIoThread extends GBDeviceIoThread { if (e.getMessage() != null && (e.getMessage().equals("broken pipe") || e.getMessage().contains("socket closed"))) { //FIXME: this does not feel right LOG.info(e.getMessage()); mIsConnected = false; - int reconnectAttempts = prefs.getInt("pebble_reconnect_attempts", 10); - if (!mQuit && GBApplication.getGBPrefs().getAutoReconnect() && reconnectAttempts > 0) { - gbDevice.setState(GBDevice.State.WAITING_FOR_RECONNECT); - gbDevice.sendDeviceUpdateIntent(getContext()); - - long delaySeconds = 1; - while (reconnectAttempts-- > 0 && !mQuit && !mIsConnected) { - LOG.info("Trying to reconnect (attempts left " + reconnectAttempts + ")"); - mIsConnected = connect(); - if (!mIsConnected) { - try { - Thread.sleep(delaySeconds * 1000); - } catch (InterruptedException ignored) { - } - if (delaySeconds < 64) { - delaySeconds *= 2; - } - } - } - } - if (!mIsConnected) { - mBtSocket = null; - LOG.info("Bluetooth socket closed, will quit IO Thread"); - break; - } + mBtSocket = null; + LOG.info("Bluetooth socket closed, will quit IO Thread"); + break; } } } @@ -426,7 +405,7 @@ class PebbleIoThread extends GBDeviceIoThread { enablePebbleKitSupport(false); - if (mQuit) { + if (mQuit || !GBApplication.getGBPrefs().getAutoReconnect()) { gbDevice.setState(GBDevice.State.NOT_CONNECTED); } else { gbDevice.setState(GBDevice.State.WAITING_FOR_RECONNECT); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleKitSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleKitSupport.java index 1e2a918b8..bb2ebd326 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleKitSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleKitSupport.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Andreas Shimokawa +/* Copyright (C) 2017-2019 Andreas Shimokawa, Matej Drobnič This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java index 1a856443e..40b702071 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java @@ -1,6 +1,6 @@ /* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele Gobbetti, Frank Slezak, jcrode, Johann C. Rode, Julien Pivotto, Kevin Richter, - Sergio Lopez, Steffen Liebergeld, Uwe Hermann + Matej Drobnič, Sergio Lopez, Steffen Liebergeld, Uwe Hermann This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/AutoConnectIntervalReceiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/AutoConnectIntervalReceiver.java new file mode 100644 index 000000000..dad443888 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/AutoConnectIntervalReceiver.java @@ -0,0 +1,106 @@ +/* Copyright (C) 2019 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.receivers; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Build; + +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Calendar; + +import nodomain.freeyourgadget.gadgetbridge.BuildConfig; +import nodomain.freeyourgadget.gadgetbridge.GBApplication; +import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.service.DeviceCommunicationService; + +public class AutoConnectIntervalReceiver extends BroadcastReceiver { + + final DeviceCommunicationService service; + static int mDelay = 4; + private static final Logger LOG = LoggerFactory.getLogger(AutoConnectIntervalReceiver.class); + + public AutoConnectIntervalReceiver(DeviceCommunicationService service) { + this.service = service; + IntentFilter filterLocal = new IntentFilter(); + filterLocal.addAction(DeviceManager.ACTION_DEVICES_CHANGED); + LocalBroadcastManager.getInstance(service).registerReceiver(this, filterLocal); + } + + + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (action == null) { + return; + } + + GBDevice gbDevice = service.getGBDevice(); + if (gbDevice == null) { + return; + } + + if (action.equals(DeviceManager.ACTION_DEVICES_CHANGED)) { + if (gbDevice.isInitialized()) { + LOG.info("will reset connection delay, device is initialized!"); + mDelay = 4; + } + else if (gbDevice.getState() == GBDevice.State.WAITING_FOR_RECONNECT) { + scheduleReconnect(); + } + } + else if (action.equals("GB_RECONNECT")) { + if (gbDevice.getState() == GBDevice.State.WAITING_FOR_RECONNECT) { + LOG.info("Will re-connect to " + gbDevice.getAddress() + "(" + gbDevice.getName() + ")"); + GBApplication.deviceService().connect(); + } + } + } + + public void scheduleReconnect() { + mDelay*=2; + if (mDelay > 64) { + mDelay = 64; + } + scheduleReconnect(mDelay); + } + + public void scheduleReconnect(int delay) { + LOG.info("scheduling reconnect in " + delay + " seconds"); + AlarmManager am = (AlarmManager) (GBApplication.getContext().getSystemService(Context.ALARM_SERVICE)); + Intent intent = new Intent("GB_RECONNECT"); + intent.setPackage(BuildConfig.APPLICATION_ID); + PendingIntent pendingIntent = PendingIntent.getBroadcast(GBApplication.getContext(), 0, intent, 0); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + am.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, Calendar.getInstance(). + getTimeInMillis() + delay * 1000, pendingIntent); + } else { + am.set(AlarmManager.RTC_WAKEUP, Calendar.getInstance(). + getTimeInMillis() + delay * 1000, pendingIntent); + } + } + +} 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 248743901..a4b4ae49a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/AndroidUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/AndroidUtils.java @@ -1,5 +1,5 @@ /* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, Felix Konstantin Maurer, Taavi Eomäe + Gobbetti, Felix Konstantin Maurer, Marc Nause, Taavi Eomäe, vanous This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/CheckSums.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/CheckSums.java index f33ef49a5..26b0b7a86 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/CheckSums.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/CheckSums.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2019 Carsten Pfeiffer +/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer This file is part of Gadgetbridge. 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 e5a5314f6..caab2afbc 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java @@ -1,7 +1,7 @@ /* Copyright (C) 2015-2019 0nse, Andreas Böhler, Andreas Shimokawa, Carsten - Pfeiffer, Daniele Gobbetti, Jean-François Greffier, João Paulo Barraca, - José Rebelo, Kranz, ladbsoft, maxirnilian, protomors, Quallenauge, Sami - Alaoui, Sophanimus, tiparega, Vadim Kaushan + Pfeiffer, Cre3per, Daniele Gobbetti, Jean-François Greffier, João Paulo + Barraca, José Rebelo, Kranz, ladbsoft, Manuel Ruß, maxirnilian, protomors, + Quallenauge, Sami Alaoui, Sophanimus, tiparega, Vadim Kaushan This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java index f61d97da7..1c8238f68 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele - Gobbetti, Felix Konstantin Maurer, Taavi Eomäe, Uwe Hermann, Yar +/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniel Dakhno, + Daniele Gobbetti, Felix Konstantin Maurer, Taavi Eomäe, Uwe Hermann, Yar This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/ImportExportSharedPreferences.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/ImportExportSharedPreferences.java index 8b4490ef9..3156eafb4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/ImportExportSharedPreferences.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/ImportExportSharedPreferences.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2017-2019 Alberto, Carsten Pfeiffer, Daniele Gobbetti, - Taavi Eomäe +/* Copyright (C) 2017-2019 Alberto, Andreas Shimokawa, Carsten Pfeiffer, + Daniele Gobbetti, Taavi Eomäe This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/StringUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/StringUtils.java index 007853deb..00a287f91 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/StringUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/StringUtils.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2017-2019 Carsten Pfeiffer, Daniele Gobbetti, João Paulo - Barraca, Roi Greenberg +/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele + Gobbetti, João Paulo Barraca, Nephiel, Roi Greenberg This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/XTimePreference.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/XTimePreference.java index 29b56a700..e1bebb771 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/XTimePreference.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/XTimePreference.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Carsten Pfeiffer, José Rebelo +/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, José Rebelo This file is part of Gadgetbridge. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/XTimePreferenceFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/XTimePreferenceFragment.java index 1cfb0d35e..005ee8be8 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/XTimePreferenceFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/XTimePreferenceFragment.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2017-2019 Carsten Pfeiffer, José Rebelo +/* Copyright (C) 2019 Andreas Shimokawa This file is part of Gadgetbridge. diff --git a/app/src/main/res/drawable/ic_action_manage_apps.xml b/app/src/main/res/drawable/ic_action_manage_apps.xml index 8a894a3bc..2fec90a11 100644 --- a/app/src/main/res/drawable/ic_action_manage_apps.xml +++ b/app/src/main/res/drawable/ic_action_manage_apps.xml @@ -1,9 +1,10 @@ + android:width="24dp" + android:height="24dp" + android:tint="#7E7E7E" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:pathData="M4,8h4L8,4L4,4v4zM10,20h4v-4h-4v4zM4,20h4v-4L4,16v4zM4,14h4v-4L4,10v4zM10,14h4v-4h-4v4zM16,4v4h4L20,4h-4zM10,8h4L14,4h-4v4zM16,14h4v-4h-4v4zM16,20h4v-4h-4v4z" /> diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index dac7c603d..9f96e3bd8 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -419,4 +419,5 @@ Стартирайте активност Специфични настройки за устройството Средно: %1$s + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index b532288c0..7f9e230a5 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -44,14 +44,14 @@ Sou a punt d\'instal·lar el %s. Esteu a punt d\'instal·lar el microprogramari %s en el vostre Amazfit Bip. \n -\nSi us plau, assegure-vos d\'instal·lar el fitxer .fw, el fitxer .res i, finalment, el fitxer .gps. El vostre rellotge reiniciarà després d\'instal·lar l\'arxiu .fw. +\nSi us plau, assegureu-vos d\'instal·lar el fitxer .fw, el fitxer .res i, finalment, el fitxer .gps. El vostre rellotge es reiniciarà després d\'instal·lar l\'arxiu .fw. \n \nNota: no heu d\'instal·lar els fitxers .res i .gps si aquests fitxers són exactament els mateixos que els prèviament instal·lats. \n \nPROCEDIU SOTA LA VOSTRA PRÒPIA RESPONSABILITAT! - Sou a punt d\'instal·lar el microprogramari %s en el vostre Amazfit Cor. + Sou a punt d\'instal·lar el microprogramari %s en la vostra Amazfit Cor. \n -\nSi us plau, assegure-vos d\'instal·lar el fitxer .fw i el fitxer .res. La vostra polsera reiniciarà després d\'instal·lar l\'arxiu .fw. +\nSi us plau, assegureu-vos d\'instal·lar el fitxer .fw, i després el fitxer .res. La vostra polsera es reiniciarà després d\'instal·lar el fitxer .fw. \n \nNota: no heu d\'instal·lar el fitxer .res si és exactament el mateix que el prèviament instal·lat. \n @@ -253,7 +253,7 @@ Passes per minut Troba l\'aparell perdut Cancel·leu per aturar la vibració. - La vostra activitat + Activitat i son Configura les alarmes Configura les alarmes Detalls d\'alarma @@ -282,11 +282,11 @@ Darrera càrrega: %s Nombre de càrregues: %s L\'exportació de la base de dades ha fallat! Si us plau, comproveu la configuració. - El vostre son + Son Son per setmana Son avui, objectiu: %1$s Passes per setmana - La vostra activitat i el vostre son + Activitat El microprogramari s\'està instal·lant… No es pot instal·lar el fitxer. L\'aparell no està preparat. %1$s: %2$s %3$s @@ -333,7 +333,7 @@ Temps Hora i data Accions del botó - Especifiqueu les accions en prémer el botó de la Mi Band 2 + 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 Missatge de difusió a enviar @@ -388,7 +388,7 @@ Això només és per a Pebble 2 i és experimental. Proveu-ho si teniu problemes de connexió Sou a punt d\'instal·lar el microprogramari %s en la vostra Mi Band 3. \n -\nSi us plau, assegureu-vos d\'instal·lar el fitxer .fw, i després el fitxer .res. El vostre rellotge es reiniciarà després d\'instal·lar el fitxer .fw. +\nSi us plau, assegureu-vos d\'instal·lar el fitxer .fw, i després el fitxer .res. La vostra polsera es reiniciarà després d\'instal·lar el fitxer .fw. \n \nObservació: No cal que instal·leu el fitxer .res si és exactament el mateix que ja estava instal·lat. \n @@ -418,7 +418,7 @@ Només mans Mans i passes Activa les trucades de VoIP - Sou a punt d\'instal·lar el microprogramari %s en el vostre Amazfit Cor 2. + Sou a punt d\'instal·lar el microprogramari %s en la vostra Amazfit Cor 2. \n \nSi us plau, assegureu-vos d\'instal·lar el fitxer .fw, i després el fitxer .res. La vostra polsera es reiniciarà després d\'instal·lar el fitxer .fw. \n @@ -701,4 +701,95 @@ Portuguès Amazfit Cor 2 Mi Band 4 + nodomain.freeyourgadget.gadgetbridge.ButtonPressed + Esteu a punt d\'instal·lar el microprogramari %s en la vostra Mi Band 4. +\n +\nSi us plau, assegureu-vos d\'instal·lar el fitxer .fw, i després el fitxer .res. La vostra polsera es reiniciarà després d\'instal·lar l\'arxiu .fw. +\n +\nNota: no heu d\'instal·lar el fitxer .res si és exactament el mateix que ja estava instal·lat. +\n +\nPROCEDIU SOTA LA VOSTRA PRÒPIA RESPONSABILITAT! + Límit baix + Límit alt + Mitjana: %1$s + Configuració dels gràfics + Mostra mitjanes als gràfics + Rang dels gràfics + Passes per mes + Son per mes + Mijia Smart Clock + NFC + Permet altres aplicacions accedir a les dades de freqüència cardíaca en temps real mentre Gadgetbridge estigui connectat + Accés a tercers a freqüència cardíaca en temps real + Utilitza un tipus de lletra personalitzat + Activa-ho si el vostre dispositiu inclou microprogramari de tipus de lletra personalitzat amb suport per a emojis + Exportació automàtica + Exporta BD + Importa BD + Executa l\'exportació automàtica ara + Exportant base de dades… + Esborra BD antiga + Buida la BD + Alarma de son + Passes: %1$02d + Son: %1$s + Estat i alarmes + 5 minuts + 10 minuts + 20 minuts + 1 hora + + %d hora + %d hores + + Botó d\'afegir nou dispositiu + Sempre visible + Visible només si no hi ha cap dispositiu afegit + Configuració de Makibes HR3 + Makibes HR3 + Amazfit Bip Lite + Troba el telèfon + Activa «Troba el telèfon» + Duració del to en segons + Durada + Esteu a punt d\'instal·lar el microprogramari %s en el vostre Amazfit Bip Lite. +\n +\nSi us plau, assegureu-vos d\'instal·lar el fitxer .fw, i després el fitxer .res. El vostre rellotge es reiniciarà després d\'instal·lar l\'arxiu .fw. +\n +\nNota: no heu d\'instal·lar el fitxer .res si és exactament el mateix que ja estava instal·lat. +\n +\nPROCEDIU SOTA LA VOSTRA PRÒPIA RESPONSABILITAT! + Amazfit GTR + Esteu a punt d\'instal·lar el microprogramari %s en el vostre Amazfit GTR. +\n +\nSi us plau, assegureu-vos d\'instal·lar el fitxer .fw, el fitxer .res i, finalment, el fitxer .gps. El vostre rellotge es reiniciarà després d\'instal·lar l\'arxiu .fw. +\n +\nNota: no heu d\'instal·lar els fitxers .res i .gps si aquests fitxers són exactament els mateixos que els prèviament instal·lats. +\n +\nPROCEDIU SOTA LA VOSTRA PRÒPIA RESPONSABILITAT! + Vermell + Taronja + Color de freqüència cardíaca + Interval de son + Últimes 24 hores + De migdia a migdia + Amazfit GTS + Esteu a punt d\'instal·lar el microprogramari %s en el vostre Amazfit GTS. +\n +\nSi us plau, assegureu-vos d\'instal·lar el fitxer .fw, el fitxer .res i, finalment, el fitxer .gps. El vostre rellotge es reiniciarà després d\'instal·lar l\'arxiu .fw. +\n +\nNota: no heu d\'instal·lar els fitxers .res i .gps si aquests fitxers són exactament els mateixos que els prèviament instal·lats. +\n +\nPROCEDIU SOTA LA VOSTRA PRÒPIA RESPONSABILITAT! + Alarma de freqüència cardíaca durant activitat esportiva + El rang dels gràfics està configurat a un mes + El rang dels gràfics està configurat a una setmana + La ubicació de l\'exportació automàtica s\'ha definit a: + Buida la base de dades + Exportar i importar + Atenció! En prémer aquest botó esborrareu tota la base de dades i començareu de zero. + Fixa una alarma al cap de: + Per a veure la traça d\'activitat, instal·leu una app que pugui manejar fitxers GPX. + 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. \ No newline at end of file diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 336ed300d..4b2c92b2e 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -408,7 +408,7 @@ Párovat Nepárovat Akce tlačítka - Nastavení akcí po stisknutí tlačítka Mi Band 2 + Nastavení akcí po stisknutí tlačítka Počet stisknutí tlačítka Počet stisknutí tlačítka na spuštění vysílání zpráv Vysílání zpráv @@ -791,4 +791,5 @@ \nPoznámka: Nemusíte instalovat soubor .res a .gps, pokud jsou stejné jako soubory nainstalovány dříve. \n \nPOKRAČUJTE NA VLASTNÍ NEBEZPEČÍ! + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 06253ef31..fb8a296f8 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -426,7 +426,7 @@ \n \nINSTALLATION AUF EIGENE GEFAHR! Tastenaktionen - Bestimmte Aktion bei Tastendruck auf dem Mi Band 2 + Festlegen der Tastendruckaktionen Anzahl der Tastendrücke, um die Nachrichtenübertragung auszulösen Zu sendende Nachricht Aktiviere Tastenaktion @@ -802,4 +802,5 @@ \nHinweis: Du musst die .res und .gps nicht installieren, wenn diese Dateien genau die gleichen sind wie die zuvor installierten. \n \nINSTALLATION AUF EIGENE GEFAHR! + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 337cdab51..f20f9059e 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -747,4 +747,5 @@ 10 λεπτά 20 λεπτά 1 ώρα + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 3b5005954..a0c57826a 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -108,7 +108,7 @@ Soporte para llamadas salientes Desactivar esto evitará que el Pebble 2/LE vibre en llamadas salientes Permitir el acceso a aplicaciones Android de terceros - habilitar el soporte experimental para aplicaciones Android que usan PebbleKit + Habilitar el soporte experimental para aplicaciones Android que usan PebbleKit Timeline Pebble Salida y puesta de Sol Enviar las horas de salida y puesta de Sol basándose en la localización a la timeline del Pebble @@ -231,7 +231,7 @@ Pasos por minuto Encuentra un dispositivo perdido Cancelar para detener la vibración. - Tu actividad + Actividad y sueño Configurar alarmas Configurar alarmas Detalles de alarma @@ -259,11 +259,11 @@ A %1$s le queda: %2$s%% batería Última carga: %s \n Número de cargas: %s - Tu sueño + Sueño Sueño por semana Sueño hoy, objetivo: %1$s Pasos por semana - Tu actividad y sueño + Actividad Instalando firmware… El archivo no puede ser instalado, el dispositivo no está listo. %1$s: %2$s %3$s @@ -291,7 +291,7 @@ Si los datos no son marcados como descargados, no serán borrados de tu Mi Band. Útil si Gadgetbridge se usa conjuntamente con otras apps. Mantendrá los datos de actividad en la Mi Band incluso después de la sincronización. Útil si GB se usa junto con otras apps. Usa el modo de baja latencia para las instalaciones de firmware - Esto podría ayudar en dispositivos donde las instalaciones de firmware fallan + Esto podría ayudar en dispositivos donde las instalaciones de firmware fallan. Historial de pasos Pasos/min actuales Pasos totales @@ -348,7 +348,7 @@ Ritmo cardíaco Ritmo cardíaco Almacenar datos en bruto en la base de datos - Una vez seleccionado, los datos archivados se guardan en bruto y están disponibles para ser interpretados más tarde. Nota: ¡La base de datos será más grande! + Guarda los datos en bruto para poder ser interpretados más tarde, esto incrementa el tamaño de la base de datos. Administración de bases de datos Administración de bases de datos La base de datos usa la siguiente ubicación en su dispositivo.\nEsta ubicación está accesible para otras aplicaciones Android y para su ordenador.\nEncontrará sus bases de datos exportadas (o la que quiere importar) aquí: @@ -377,7 +377,7 @@ Vibración Emparejando con Pebble - En su dispositivo Android aparecerá un mensaje para emparejar. Si no aparece, mira en el cajón de notificaciones y acepta la propuesta de emparejamiento. Después acepta también en tu Pebble + En su dispositivo Android aparecerá un mensaje para emparejar. Si no aparece, mira en el cajón de notificaciones y acepta la propuesta de emparejamiento. Después acepta también en tu Pebble. Asegúrate de que este tema esté activado en la aplicación de notificación del tiempo para obtener la información en tu Pebble.\n\nNo se requiere configuración.\n\nPuedes activar la aplicación del tiempo del sistema desde la configuración de la app.\n\nLas watchfaces soportadas mostrarán la información del tiempo automáticamente. Activar el emparejamiento Bluetooth Desactiva esto si tienes problemas de conexión @@ -418,7 +418,6 @@ Número de presiones para activar el envío del mensaje Mensaje para enviar Enviar mensaje después de un número definido de pulsaciones - nodomain.freeyourgadget.gadgetbridge.mibandButtonPressed Activar acción por botón Activar acción por un número definido de pulsaciones Activar la vibración de la pulsera @@ -663,15 +662,15 @@ Configuraciones específicas del dispositivo Clave de autenticación Cambie la clave de autenticación a una clave común en todos sus dispositivos Android desde los que desea conectarse. La clave predeterminada anterior para todos los dispositivos es 0123456789@ABCDE - Está a punto de instalar el «firmware» %s en su Amazfit Cor 2. -\n -\nAsegúrese de instalar el archivo .fw y, a continuación, el archivo .res. Se reiniciará la pulsera tras instalar el archivo .fw. -\n + Está a punto de instalar el firmware %s en su Amazfit Cor 2. +\n +\nAsegúrese de instalar el archivo .fw y, a continuación, el archivo .res. La pulsera se reiniciará despues de instalar el archivo .fw. +\n \nNota: no es necesario instalar el archivo .res si es idéntico al instalado previamente. -\n -\nPROCEDA BAJO SU PROPIA CUENTA Y RIESGO. -\n -\nNO SE HA REALIZADO NINGUNA PRUEBA. QUIZÁ NECESITE INSTALAR UN «FIRMWARE» BEATS_W SI EL NOMBRE DE SU DISPOSITIVO ES «Amazfit Band 2» +\n +\nPROCEDA BAJO SU PROPIO RIESGO. +\n +\nNO SE HA REALIZADO NINGUNA PRUEBA. QUIZÁ NECESITE INSTALAR UN FIRMWARE BEATS_W SI EL NOMBRE DE SU DISPOSITIVO ES \"Amazfit Band 2\" Está a punto de instalar el «firmware» %s en su Mi Band 4. \n \nAsegúrese de instalar el archivo .fw y, a continuación, el archivo .res. Se reiniciará la pulsera tras instalar el archivo .fw. @@ -774,4 +773,18 @@ Intervalo de sueño Últimas 24 horas De mediodía a mediodía + Alarma de sueño + Sueño: %1$s + Botón de añadir nuevo dispositivo + Makibes HR3 + Amazfit Bip Lite + Amazfit GTR + Amazfit GTS + Está a punto de instalar el firmware %s en su Amazfit GTS. +\n +\nPor favor, asegúrese de instalar el archivo .fw primero, el archivo .res a continuación y por ultimo el archivo .gps. Su reloj se reiniciara después de instalar el archivo .fw. +\n +\nNota: No hace falta instalar los archivos .res y .gps si los archivos son idénticos a los previamente instalados. +\n +\n¡PROCEDE BAJO TU PROPIO RIESGO! \ No newline at end of file diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 3825ea828..1397759f0 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -278,4 +278,5 @@ Luba värin nupu abil Värin Lähtesta impordi aeg + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 8b97a747d..9e1e48f42 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -124,4 +124,5 @@ هواشناسی مکان تعیین شده برای هواشناسی (CM/LOS) اضافه کردن برنامه‌ها به لیست سیاه + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 8272674ef..5471cc954 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -1,9 +1,9 @@ - -Asetukset + + + Asetukset Synkronisoi Löydä kadonnut laite Gadgetbridge - Gadgetbridge Sulje Lahjoita @@ -18,8 +18,6 @@ Yhteyttä katkaistaan Yhdistetään Otataan ruutukaappausta laitteesta - - Sovellusten hallinta Välimuistissa olevat sovellukset Asennetut sovellukset @@ -37,5 +35,5 @@ Asenna sääilmoitussovellus Määritä Siirrä ylös - - + nodomain.freeyourgadget.gadgetbridge.ButtonPressed + \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4d2b2b2f1..7f926f05b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -228,7 +228,7 @@ Pas par minute Trouver l\'appareil perdu Annuler pour arrêter les vibrations. - Votre activité + Activité et Sommeil Configurer les alarmes Configurer les alarmes Détails des alarmes @@ -256,11 +256,11 @@ %1$s batterie restante : %2$s%% Dernière charge : %s \n Nombre de charges : %s - Votre sommeil + Sommeil Sommeil de la semaine Sommeil aujourd\'hui, objectif : %1$s Pas de la semaine - Votre activité et sommeil + Activité Installation du micrologiciel… Le fichier ne peut pas être installé, l\'appareil n\'est pas prêt. %1$s: %2$s %3$s @@ -413,12 +413,11 @@ Temps de sommeil préféré en heures \n \nCONTINUEZ À VOS RISQUES ! Actions du bouton - Spécifier les actions par pression du bouton du Mi Band 2 + Spécifier les actions par pression du bouton Nombre de pressions du bouton Nombre de pressions pour envoyer message Message à envoyer Envoyer message après nombre défini de pressions du bouton - nodomain.freeyourgadget.gadgetbridge.mibandButtonPressed Activer action du bouton Activer action après nombre spécifié de pressions Activer la vibration du bracelet @@ -759,4 +758,8 @@ Temps de sommeil préféré en heures Activer « Trouver le tél. » Utilisez votre bande pour lire l\'alarme de votre téléphone. Cet appareil a besoin d\'une clé d\'auth. Pression longue sur celui-ci pour la saisir. Lisez le wiki. + Rouge + Orange + Dernières 24 heures + De midi à midi \ No newline at end of file diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index caa8307c1..1c502f3b5 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -17,7 +17,7 @@ Pechar menú de navegación Manter pulsado o icono para desconectar Desconectando - Conectando + Conectando… Capturando pantalla do dispositivo Depurar Xestor de App @@ -40,13 +40,13 @@ Bloqueo de notificacións Calendarios bloqueados Instalador de FW/App - Está a piques de instalar o firmware %s no lugar do actual na súa Mi Band. + Está a piques de instalar o firmware %s. Está a piques de instalar os firmwares %1$s e %2$s no canto dos que están actualmente na súa Mi Band. Este firmware foi probado e é compatíbel co Gadgetbridge. Este firmware non foi probado e pode non ser compatíbel co Gadgetbridge. \n -\nRECOMENDASE QUE NON o instale na súa Mi Band! - Se aínda así quere proceder e todo continúa a funcionar normalmente, por favor avise aos programadores do Gadgetbridge para que permitan a versión %s do firmware +\nRECOMENDASE QUE NON o instale! + Se aínda así quere proceder e todo continúa a funcionar normalmente, por favor avise aos programadores do Gadgetbridge para que permitan a versión %s do firmware. Axustes Axustes xerais Conectar ao dispositivo ao activar o Bluetooth @@ -240,8 +240,8 @@ Ven Sáb Espertador intelixente - Houbo un erro configurando as alarmas, por favor téntao de novo! - Alarmas enviadas ao dispositivo! + Houbo un erro configurando as alarmas, por favor téntao de novo. + Alarmas enviadas ao dispositivo. Sen datos. Sincronizar dispositivo? A piques de transferir %1$s de datos desde %2$s Obxectivo de pasos diarios @@ -257,11 +257,11 @@ Última carga: %s \n Número de cargas: %s - O teu sono + Sono Sono por semana Sono hoxe, obxectivo: %1$s Pasos por semana - A túa actividade e sono + Actividade Anovando Firmware… O arquivo non pode ser instalado, o dispositivo non está preparado. %1$s: %2$s %3$s @@ -306,7 +306,7 @@ Este firmware non é compatíbel co dispositivo Alarmas reservadas para próximos eventos Usar sensor de ritmo cardíaco para mellorar a detección de sono - Mi2: Formato de data + Formato de data Hora Hora e data Accións do botón @@ -426,7 +426,7 @@ Enviar mensaxe despois dun número definido de pulsacións Retardo despois dunha acción do botón (o número está en button_id intent extra) ou ben 0 para efecto inmediato Se marcado, os datos son almacenados no seu formato orixinal ficando disponíbeis para posterior interpretación. Nota: A base de datos será máis grande! - Verá unha notificación de emparellamento no seu dispositivo Android. Se non, acceda ás notificacións e acepte a solicitude de emparellamento. posteriormente a solicitude de emparellamento no seu Pebble + Verá unha notificación de emparellamento no seu dispositivo Android. Se non, acceda ás notificacións e acepte a solicitude de emparellamento. posteriormente a solicitude de emparellamento no seu Pebble. Asegúrate de que este tema esté activado na aplicación de notificación do clima para obter a información no teu Pebble. \n \nNon se require configuración. @@ -435,7 +435,7 @@ \n \nAs \"watchfaces\" soportadas amosarán a información do clima automáticamente. Selecciona Emparellar para emparellar os teus dispositivos. Se isto falla, proba de novo sen emparellar. - Conectar + Conectar… Estás a piques de instalar firmware %s no teu Amazfit Cor. \n \nPor favor, asegúrate de instalar o ficheiro .fw, e despois diso o ficheiro .res. O teu reloxo reiniciará despois de instalar o arquivo .fw. @@ -516,4 +516,5 @@ Compás Axustes Alipay + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 1355d03f9..6323fc62c 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -412,7 +412,7 @@ לצמד לא לצמד פעולות כפתור - ציון פעולות בלחיצה על הכפתור של Mi Band 2 + ציון פעולות בלחיצה על הכפתור ספירת לחיצות על הכפתור מספר לחיצות על הכפתור כדי להפעיל שידור הודעה הודעת שידור לשליחה @@ -789,4 +789,5 @@ \nלתשומת לבך: אין צורך בהתקנת קובצי ה־‎.res וה־‎.gps אם הם כבר זהים לאלו שהתקנת בעבר. \n \nהמשך התהליך הוא על אחריותך! + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 6e7987fda..de63cb849 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -1,8 +1,9 @@ - -Gadgetbridge - + + + Gadgetbridge Muško Žensko Ostalo Lijevo - + nodomain.freeyourgadget.gadgetbridge.ButtonPressed + \ No newline at end of file diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 5cf42bb46..4e51fce0b 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -450,4 +450,5 @@ %1$ akkumulátora merül %1$ akkumulátora merül: %2$s A gyári beállítások visszaállítása minden adatot töröl a kapcsolódott eszközről (ha támogatott). A Xiaomi/Huami eszközökön emellett megváltozik a Bluetooth MAC cím is, így új eszközként jelennek meg a Gadgetbridge számára. + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 154224965..ec84be086 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -1,5 +1,6 @@ -Gadgetbridge + + Gadgetbridge Gadgetbridge Pengaturan Keluar @@ -23,4 +24,5 @@ Kalibrasi perangkat Perbaikan Kembalikan ke pengaturan pabrik\? + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index dc30c2083..7c48102b8 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -705,4 +705,5 @@ Imposta allarme frequenza cardiaca durante l\'attività sportiva Limite inferiore Limite Superiore + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 12c03b33e..35265cea3 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -415,7 +415,6 @@ ブロードキャスト メッセージをトリガーするボタンを押した数 送信するブロードキャスト メッセージ ボタンを押した数で定義された数に達したブロードキャスト メッセージ - nodomain.freeyourgadget.gadgetbridge.mibandButtonPressed ボタンの動作を有効にする 指定したボタンを押した数の動作を有効にします band の振動を有効にする diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 461faea0a..b3c1027dd 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -610,4 +610,5 @@ FM 주파수 올바르지 않은 주파수 87.5와 108.0 사이의 주파수를 입력하세요 + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index e23ea6ab5..7885b5d86 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -1,6 +1,6 @@ - -Gadgetbridge - + + + Gadgetbridge Gadgetbridge Nustatymai Šalinti riktus @@ -15,8 +15,6 @@ Ištrinti %1$s Šiuo veiksmu ištrinsite įrenginį ir visus jo sukauptus duomenis! Daroma įrenginio ekrano nuotrauka - - Įdiegti laikrodžio stiliai Oras Žadintuvas @@ -24,13 +22,12 @@ Kompasas Nustatymai Alipay -Atverti programos meniu + Atverti programos meniu Užverti programos meniu Norėdami atjungti ilgai spauskite kortelę Atjungiama Jungiama Derinti - Programų tvarkyklė Programos talpykloje Įdiegtos programos @@ -47,11 +44,8 @@ Įdiegti orų prognozės pranešimų programą Konfigūruoti Perkelti į viršų - Pranešimų juodasis sąrašas - Kalendorių juodasis sąrašas - FW/Programų diegyklė Išbandyti įrenginį Pebble @@ -66,6 +60,5 @@ Exrizu K8 Veikla Kalibruoti įrenginį - - - + nodomain.freeyourgadget.gadgetbridge.ButtonPressed + \ No newline at end of file diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index 7aa0ba943..fa089bd6e 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -36,4 +36,5 @@ အခ်က္အလက္ကြဲမ်ား အခ်က္အလက္မ်ားကိုသိမ္းဆည္းမည္ မခ်ိတ္ဆက္ထားျခင္းမရွိပါ , သတိေပးခ်က္မထားရေသးပါ + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 74492daf5..372f1b8ec 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -325,7 +325,7 @@ Tid Tid og dato Knappevalg - Angi handlinger for Mi Band 2 knappetrykk + Angi handlinger for knappetrykk Antall trykk på knapp Antall trykk på knapp for å utløse meldingskringkasting Kringkastingsmelding å sende @@ -791,4 +791,5 @@ \nMerk: Du må ikke installere .res og .gps hvis disse er akkurat de samme som dem som allerede er installert. \n \nFORTSETT PÅ EGEN RISIKO! + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index b7fbc8b42..111ccc084 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -347,7 +347,7 @@ Tijd Tijd & datum Knoppen acties - Specificeer actie voor de Mi Band 2 knopdruk + Specificeer actie voor knop druk Aantal knopdrukken Aantal knopdrukken nodig om een bericht te sturen Uit te sturen bericht @@ -793,4 +793,5 @@ \nOpmerking: U hoeft de .res niet te installeren als deze exact dezelfde is als degene die ervoor al was geïnstalleerd. \n \nGA VERDER OP EIGEN RISICO! + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 8aa0dbd2a..1e58a478b 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -551,4 +551,5 @@ "Puls: " Pokazuj gdy zawiera słowa Czerwony + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index fb22170d1..7127cb3c7 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -413,7 +413,7 @@ Frequência cardíaca Bateria Ações do botão - Especifica as ações quando pressionado o botão da Mi Band 2 + Especifica ações no pressionamento do botão Contagem de acionamento do botão Número de toques no botão para enviar a mensagem Mensagem para enviar @@ -799,4 +799,5 @@ \nNota: você não precisa instalar .res e .gps se esses arquivos forem exatamente os mesmos que os instalados anteriormente. \n \nPROSSIGA AO SEU PRÓPRIO RISCO! + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 2566082f9..a9574b4c0 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -525,4 +525,5 @@ Ativar botão Ativar vibração Efetuar uma reposição de fábrica eliminará todos os dados do aparelhos ligado (caso seja suportado). Além disso, aparelhos Xiaomi/Huami mudarão os seus endereços MAC, aparecendo como aparelhos novos para o Gadgetbridge. + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index f23224b1c..2edb5b68d 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -128,4 +128,5 @@ Toate cuvintele Salvare Configurație Deconectat(ă), alarma nu este setată. + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 0310b265a..4d5b9cbda 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -619,4 +619,5 @@ Режим фильтрации Сохранить конфигурацию Не подключено, будильник не установлено. + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index ed8a49ce5..4764b74f2 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -492,4 +492,5 @@ Gadgetbridge upozornenia Pripojiť Zap. + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 2a885130e..61daafb9c 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -44,4 +44,8 @@ Svartlistade kalendrar FW/App-installerare Röd + nodomain.freeyourgadget.gadgetbridge.ButtonPressed + Aktivera pulsmätare + Avaktivera pulsmätare + Konfigurera \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 650f6cc1e..f232a15bc 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -166,4 +166,5 @@ Konumumu güncel tut "Türkçe " Change FM Frequency + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 278cc9200..1e77ee82e 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -465,4 +465,5 @@ РР/ММ/ДД ДД/ММ/РР ММ/ДД/РР + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 044bd21ad..a5c98d6f0 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -189,4 +189,5 @@ Giữ địa điểm luôn được cập nhật Giờ Giờ và ngày + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index a940df62c..dc68c3fb7 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -324,7 +324,7 @@ 仅时间 时间和日期 按钮操作 - 指定小米手环2按钮上的操作 + 指定按钮按下时的操作 按钮按下计数 触发消息广播的按钮按数 启用按钮操作 @@ -792,4 +792,5 @@ \n备注:如果您安装的 .res 文件和之前相同,则无需安装 .res 文件。 \n \n风险自担! + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 4165c9382..ec1c1e8e5 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -25,4 +25,5 @@ 刪除 刪除並清除緩存 重新安裝 + nodomain.freeyourgadget.gadgetbridge.ButtonPressed \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f9845a135..f8eb4a603 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -458,12 +458,12 @@ Disconnect notification Button actions - Specify actions on Mi Band 2 button press + Specify button press actions Button press count Number of button presses to trigger message broadcast Broadcast message to send Broadcast message on defined number of button presses reached - nodomain.freeyourgadget.gadgetbridge.mibandButtonPressed + nodomain.freeyourgadget.gadgetbridge.ButtonPressed Enable button action Enable action on specified number of button presses Enable band vibration diff --git a/app/src/main/res/xml/changelog_master.xml b/app/src/main/res/xml/changelog_master.xml index 19193ca85..238225a81 100644 --- a/app/src/main/res/xml/changelog_master.xml +++ b/app/src/main/res/xml/changelog_master.xml @@ -1,5 +1,9 @@ + + Try to actively re-connect when a connection gets interrupted (interval grows up to 64 seconds) + Mi Band2/Amazfip Bip: Make button action settings per-device and enable for Amazfit Bip + Amazfit GTS: Initial and incomplete support, mostly untested Add forward/backward buttons to charts for faster navigation diff --git a/app/src/main/res/xml/devicesettings_buttonactions.xml b/app/src/main/res/xml/devicesettings_buttonactions.xml index 14083cd18..224b483c7 100644 --- a/app/src/main/res/xml/devicesettings_buttonactions.xml +++ b/app/src/main/res/xml/devicesettings_buttonactions.xml @@ -11,13 +11,13 @@ public static final String PREF_BUTTON_ACTION_PRESS_DELAY = "button_action_press_count_delay"; - -