1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-08-02 20:13:36 +02:00

Merge branch 'master' into banglejs_apploader

This commit is contained in:
Gordon Williams 2022-04-26 16:12:18 +01:00
commit 573e704040
93 changed files with 715 additions and 511 deletions

View File

@ -5,9 +5,9 @@ pipeline:
- pwd #bump
- ./gradlew assembleDebug --stacktrace
when:
repo: Freeyourgadget/Gadgetbridge
branch: master
#when:
#repo: Freeyourgadget/Gadgetbridge
#branch: master
#this doesn't work yet:
#https://github.com/woodpecker-ci/woodpecker/issues/687

View File

@ -143,7 +143,7 @@ Translations can be contributed via https://hosted.weblate.org/projects/freeyour
## Community
If you would like to get in touch with other Gadgetbridge users and developers outside of Codeberg, you can do so via:
* Matrix: `#gadgetbridge:matrix.org` ([web access via Element.io](https://app.element.io/#/room/#gadgetbridge:matrix.org))
* Matrix: [`#gadgetbridge:matrix.org`](https://matrix.to/#/#gadgetbridge:matrix.org)
## Do you have further questions or feedback?

View File

@ -47,7 +47,6 @@ android {
targetCompatibility JavaVersion.VERSION_1_7
}
compileSdkVersion 29
buildToolsVersion '30.0.2'
defaultConfig {
applicationId "nodomain.freeyourgadget.gadgetbridge"
@ -63,6 +62,11 @@ android {
buildConfigField "String", "GIT_HASH_SHORT", "\"${getGitHashShort()}\""
buildConfigField "boolean", "INTERNET_ACCESS", "false"
resValue "string", "pebble_content_provider", "com.getpebble.android.provider"
resValue "string", "app_name", "@string/application_name_generic"
resValue "string", "title_activity_controlcenter", "@string/title_activity_controlcenter_generic"
resValue "string", "about_activity_title", "@string/about_activity_title_generic"
resValue "string", "about_description", "@string/about_description_generic"
resValue "string", "gadgetbridge_running", "@string/gadgetbridge_running_generic"
}
signingConfigs {
nightly {
@ -92,6 +96,11 @@ android {
}
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
resValue "string", "pebble_content_provider", "com.getpebble.android.provider"
resValue "string", "app_name", "@string/application_name_main_nightly"
resValue "string", "title_activity_controlcenter", "@string/title_activity_controlcenter_main_nightly"
resValue "string", "about_activity_title", "@string/about_activity_title_main_nightly"
resValue "string", "about_description", "@string/about_description_main_nightly"
resValue "string", "gadgetbridge_running", "@string/gadgetbridge_running_main_nightly"
debuggable true
}
nopebble {
@ -105,6 +114,11 @@ android {
}
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
resValue "string", "pebble_content_provider", "com.getpebble.android.nopebble.provider"
resValue "string", "app_name", "@string/application_name_main_nopebble"
resValue "string", "title_activity_controlcenter", "@string/title_activity_controlcenter_main_nopebble"
resValue "string", "about_activity_title", "@string/about_activity_title_main_nopebble"
resValue "string", "about_description", "@string/about_description_main_nopebble"
resValue "string", "gadgetbridge_running", "@string/gadgetbridge_running_main_nopebble"
debuggable true
}
@ -126,6 +140,8 @@ android {
flavorDimensions "device_type"
productFlavors {
main {
// Ensure that when starting from scratch, 'main' is selected, not 'banglejs'
getIsDefault().set(true)
// the default build product flavor
dimension "device_type"
//applicationIdSuffix ""
@ -137,6 +153,13 @@ android {
applicationIdSuffix ".banglejs"
versionNameSuffix "-banglejs"
buildConfigField "boolean", "INTERNET_ACCESS", "true"
// Disable pebble provider to allow Bangle.js Gadgetbridge to coexist with Gadgetbridge
resValue "string", "pebble_content_provider", "com.getpebble.android.nopebble.provider"
resValue "string", "app_name", "@string/application_name_banglejs_main"
resValue "string", "title_activity_controlcenter", "@string/title_activity_controlcenter_banglejs_main"
resValue "string", "about_activity_title", "@string/about_activity_title_banglejs_main"
resValue "string", "about_description", "@string/about_description_banglejs_main"
resValue "string", "gadgetbridge_running", "@string/gadgetbridge_running_banglejs_main"
}
}
@ -158,7 +181,7 @@ android {
externalNativeBuild {
cmake {
path "src/main/c/CMakeLists.txt"
version "3.10.2"
version "3.18.1"
}
}
sourceSets {

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_name">Bangle.js Gadgetbridge</string>
<string name="title_activity_controlcenter">Bangle.js Gadgetbridge</string>
<string name="about_activity_title">About Bangle.js Gadgetbridge</string>
<string name="about_description">Android companion app for Bangle.js built on top of the Gadgetbridge project</string>
<string name="gadgetbridge_running">Bangle.js running</string>
</resources>

View File

@ -69,7 +69,8 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:requestLegacyExternalStorage="true"
android:theme="@style/GadgetbridgeTheme">
android:theme="@style/GadgetbridgeTheme"
tools:replace="android:label">
<activity
android:name=".activities.ControlCenterv2"
android:label="@string/title_activity_controlcenter"

View File

@ -85,11 +85,15 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.AMAZFITBIP;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.AMAZFITCOR;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.AMAZFITCOR2;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.FITPRO;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.GALAXY_BUDS;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.LEFUN;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND2;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.MIBAND3;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.PEBBLE;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.TLW64;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.WATCHXPLUS;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceType.fromKey;
import static nodomain.freeyourgadget.gadgetbridge.util.GB.NOTIFICATION_CHANNEL_HIGH_PRIORITY_ID;
import static nodomain.freeyourgadget.gadgetbridge.util.GB.NOTIFICATION_ID_ERROR;
@ -111,7 +115,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 = 10;
private static final int CURRENT_PREFS_VERSION = 11;
private static LimitedQueue mIDSenderLookup = new LimitedQueue(16);
private static Prefs prefs;
@ -977,6 +981,97 @@ public class GBApplication extends Application {
Log.w(TAG, "error acquiring DB lock");
}
}
if (oldVersion < 11) {
try (DBHandler db = acquireDB()) {
DaoSession daoSession = db.getDaoSession();
List<Device> activeDevices = DBHelper.getActiveDevices(daoSession);
for (Device dbDevice : activeDevices) {
SharedPreferences deviceSharedPrefs = GBApplication.getDeviceSpecificSharedPrefs(dbDevice.getIdentifier());
SharedPreferences.Editor deviceSharedPrefsEdit = deviceSharedPrefs.edit();
DeviceType deviceType = fromKey(dbDevice.getType());
if (deviceType == WATCHXPLUS || deviceType == FITPRO || deviceType == LEFUN) {
deviceSharedPrefsEdit.putBoolean("inactivity_warnings_enable", deviceSharedPrefs.getBoolean("pref_longsit_switch", false));
deviceSharedPrefsEdit.remove("pref_longsit_switch");
}
if (deviceType == WATCHXPLUS || deviceType == FITPRO) {
deviceSharedPrefsEdit.putString("inactivity_warnings_start", deviceSharedPrefs.getString("pref_longsit_start", "06:00"));
deviceSharedPrefsEdit.putString("inactivity_warnings_end", deviceSharedPrefs.getString("pref_longsit_end", "23:00"));
deviceSharedPrefsEdit.remove("pref_longsit_start");
deviceSharedPrefsEdit.remove("pref_longsit_end");
}
if (deviceType == WATCHXPLUS || deviceType == LEFUN) {
deviceSharedPrefsEdit.putString("inactivity_warnings_threshold", deviceSharedPrefs.getString("pref_longsit_period", "60"));
deviceSharedPrefsEdit.remove("pref_longsit_period");
}
if (deviceType == TLW64) {
deviceSharedPrefsEdit.putBoolean("inactivity_warnings_enable_noshed", deviceSharedPrefs.getBoolean("screen_longsit_noshed", false));
deviceSharedPrefsEdit.remove("screen_longsit_noshed");
}
if (dbDevice.getManufacturer().equals("Huami")) {
editor.putBoolean("inactivity_warnings_dnd", prefs.getBoolean("mi2_inactivity_warnings_dnd", false));
editor.putString("inactivity_warnings_dnd_start", prefs.getString("mi2_inactivity_warnings_dnd_start", "12:00"));
editor.putString("inactivity_warnings_dnd_end", prefs.getString("mi2_inactivity_warnings_dnd_end", "14:00"));
editor.putBoolean("inactivity_warnings_enable", prefs.getBoolean("mi2_inactivity_warnings", false));
editor.putInt("inactivity_warnings_threshold", prefs.getInt("mi2_inactivity_warnings_threshold", 60));
editor.putString("inactivity_warnings_start", prefs.getString("mi2_inactivity_warnings_start", "06:00"));
editor.putString("inactivity_warnings_end", prefs.getString("mi2_inactivity_warnings_end", "22:00"));
}
switch (deviceType) {
case LEFUN:
deviceSharedPrefsEdit.putString("language", deviceSharedPrefs.getString("pref_lefun_interface_language", "0"));
deviceSharedPrefsEdit.remove("pref_lefun_interface_language");
break;
case FITPRO:
deviceSharedPrefsEdit.putString("inactivity_warnings_threshold", deviceSharedPrefs.getString("pref_longsit_period", "4"));
deviceSharedPrefsEdit.remove("pref_longsit_period");
break;
case ZETIME:
editor.putString("do_not_disturb", prefs.getString("zetime_do_not_disturb", "off"));
editor.putString("do_not_disturb_start", prefs.getString("zetime_do_not_disturb_start", "22:00"));
editor.putString("do_not_disturb_end", prefs.getString("zetime_do_not_disturb_end", "07:00"));
editor.putBoolean("inactivity_warnings_enable", prefs.getBoolean("zetime_inactivity_warnings", false));
editor.putString("inactivity_warnings_start", prefs.getString("zetime_inactivity_warnings_start", "06:00"));
editor.putString("inactivity_warnings_end", prefs.getString("zetime_inactivity_warnings_end", "22:00"));
editor.putInt("inactivity_warnings_threshold", prefs.getInt("zetime_inactivity_warnings_threshold", 60));
editor.putBoolean("inactivity_warnings_mo", prefs.getBoolean("zetime_prefs_inactivity_repetitions_mo", false));
editor.putBoolean("inactivity_warnings_tu", prefs.getBoolean("zetime_prefs_inactivity_repetitions_tu", false));
editor.putBoolean("inactivity_warnings_we", prefs.getBoolean("zetime_prefs_inactivity_repetitions_we", false));
editor.putBoolean("inactivity_warnings_th", prefs.getBoolean("zetime_prefs_inactivity_repetitions_th", false));
editor.putBoolean("inactivity_warnings_fr", prefs.getBoolean("zetime_prefs_inactivity_repetitions_fr", false));
editor.putBoolean("inactivity_warnings_sa", prefs.getBoolean("zetime_prefs_inactivity_repetitions_sa", false));
editor.putBoolean("inactivity_warnings_su", prefs.getBoolean("zetime_prefs_inactivity_repetitions_su", false));
break;
}
deviceSharedPrefsEdit.apply();
}
editor.putInt("fitness_goal", prefs.getInt("mi_fitness_goal", 8000));
editor.remove("zetime_do_not_disturb");
editor.remove("zetime_do_not_disturb_start");
editor.remove("zetime_do_not_disturb_end");
editor.remove("zetime_inactivity_warnings");
editor.remove("zetime_inactivity_warnings_start");
editor.remove("zetime_inactivity_warnings_end");
editor.remove("zetime_inactivity_warnings_threshold");
editor.remove("zetime_prefs_inactivity_repetitions_mo");
editor.remove("zetime_prefs_inactivity_repetitions_tu");
editor.remove("zetime_prefs_inactivity_repetitions_we");
editor.remove("zetime_prefs_inactivity_repetitions_th");
editor.remove("zetime_prefs_inactivity_repetitions_fr");
editor.remove("zetime_prefs_inactivity_repetitions_sa");
editor.remove("zetime_prefs_inactivity_repetitions_su");
editor.remove("mi2_inactivity_warnings_dnd");
editor.remove("mi2_inactivity_warnings_dnd_start");
editor.remove("mi2_inactivity_warnings_dnd_end");
editor.remove("mi2_inactivity_warnings");
editor.remove("mi2_inactivity_warnings_threshold");
editor.remove("mi2_inactivity_warnings_start");
editor.remove("mi2_inactivity_warnings_end");
editor.remove("mi_fitness_goal");
} catch (Exception e) {
Log.w(TAG, "error acquiring DB lock");
}
}
editor.putString(PREFS_VERSION, Integer.toString(CURRENT_PREFS_VERSION));
editor.apply();
}

View File

@ -41,6 +41,10 @@ public class DeviceSettingsPreferenceConst {
public static final String PREF_VIBRATION_STRENGH_PERCENTAGE = "vibration_strength";
public static final String PREF_RELAX_FIRMWARE_CHECKS = "relax_firmware_checks";
public static final String PREF_DISCONNECT_NOTIFICATION = "disconnect_notification";
public static final String PREF_DISCONNECT_NOTIFICATION_START = "disconnect_notification_start";
public static final String PREF_DISCONNECT_NOTIFICATION_END = "disconnect_notification_end";
public static final String PREF_HYBRID_HR_FORCE_WHITE_COLOR = "force_white_color_scheme";
public static final String PREF_HYBRID_HR_DRAW_WIDGET_CIRCLES = "widget_draw_circles";
public static final String PREF_HYBRID_HR_SAVE_RAW_ACTIVITY_FILES = "save_raw_activity_files";
@ -61,8 +65,22 @@ public class DeviceSettingsPreferenceConst {
public static final String PREF_LIFTWRIST_NOSHED = "activate_display_on_lift_wrist_noshed";
public static final String PREF_DISCONNECTNOTIF_NOSHED = "disconnect_notification_noshed";
public static final String PREF_LONGSIT_START = "pref_longsit_start";
public static final String PREF_LONGSIT_END = "pref_longsit_end";
public static final String PREF_INACTIVITY_KEY = "inactivity_warnings_key";
public static final String PREF_INACTIVITY_ENABLE = "inactivity_warnings_enable";
public static final String PREF_INACTIVITY_ENABLE_NOSHED = "inactivity_warnings_enable_noshed";
public static final String PREF_INACTIVITY_START = "inactivity_warnings_start";
public static final String PREF_INACTIVITY_END = "inactivity_warnings_end";
public static final String PREF_INACTIVITY_THRESHOLD = "inactivity_warnings_threshold";
public static final String PREF_INACTIVITY_MO = "inactivity_warnings_mo";
public static final String PREF_INACTIVITY_TU = "inactivity_warnings_tu";
public static final String PREF_INACTIVITY_WE = "inactivity_warnings_we";
public static final String PREF_INACTIVITY_TH = "inactivity_warnings_th";
public static final String PREF_INACTIVITY_FR = "inactivity_warnings_fr";
public static final String PREF_INACTIVITY_SA = "inactivity_warnings_sa";
public static final String PREF_INACTIVITY_SU = "inactivity_warnings_su";
public static final String PREF_INACTIVITY_DND = "inactivity_warnings_dnd";
public static final String PREF_INACTIVITY_DND_START = "inactivity_warnings_dnd_start";
public static final String PREF_INACTIVITY_DND_END = "inactivity_warnings_dnd_end";
public static final String PREF_AUTOHEARTRATE_SWITCH = "pref_autoheartrate_switch";
public static final String PREF_AUTOHEARTRATE_SLEEP = "pref_autoheartrate_sleep";
@ -73,14 +91,19 @@ public class DeviceSettingsPreferenceConst {
public static final String PREF_POWER_MODE = "power_mode";
public static final String PREF_BUTTON_BP_CALIBRATE = "prefs_sensors_button_bp_calibration";
public static final String PREF_ALTITUDE_CALIBRATE = "pref_sensors_altitude";
public static final String PREF_LONGSIT_PERIOD = "pref_longsit_period";
public static final String PREF_LONGSIT_SWITCH = "pref_longsit_switch";
public static final String PREF_LONGSIT_SWITCH_NOSHED = "screen_longsit_noshed";
public static final String PREF_DO_NOT_DISTURB_NOAUTO = "do_not_disturb_no_auto";
public static final String PREF_DO_NOT_DISTURB_NOAUTO_START = "do_not_disturb_no_auto_start";
public static final String PREF_DO_NOT_DISTURB_NOAUTO_END = "do_not_disturb_no_auto_end";
public static final String PREF_DO_NOT_DISTURB = "do_not_disturb";
public static final String PREF_DO_NOT_DISTURB_START = "do_not_disturb_start";
public static final String PREF_DO_NOT_DISTURB_END = "do_not_disturb_end";
public static final String PREF_DO_NOT_DISTURB_LIFT_WRIST = "do_not_disturb_lift_wrist";
public static final String PREF_DO_NOT_DISTURB_OFF = "off";
public static final String PREF_DO_NOT_DISTURB_AUTOMATIC = "automatic";
public static final String PREF_DO_NOT_DISTURB_SCHEDULED = "scheduled";
public static final String PREF_FIND_PHONE_ENABLED = "prefs_find_phone";
public static final String PREF_FIND_PHONE = "prefs_find_phone";
public static final String PREF_FIND_PHONE_DURATION = "prefs_find_phone_duration";
public static final String PREF_AUTOLIGHT = "autolight";
public static final String PREF_AUTOREMOVE_MESSAGE = "autoremove_message";
public static final String PREF_AUTOREMOVE_NOTIFICATIONS = "autoremove_notifications";
@ -92,7 +115,6 @@ public class DeviceSettingsPreferenceConst {
public static final String PREF_HYDRATION_SWITCH = "pref_hydration_switch";
public static final String PREF_HYDRATION_PERIOD = "pref_hydration_period";
public static final String PREF_AMPM_ENABLED = "pref_ampm_enabled";
public static final String PREF_LEFUN_INTERFACE_LANGUAGE = "pref_lefun_interface_language";
public static final String PREF_SONYSWR12_LOW_VIBRATION = "vibration_preference";
public static final String PREF_SONYSWR12_STAMINA = "stamina_preference";
@ -156,6 +178,10 @@ public class DeviceSettingsPreferenceConst {
public static final String PREFS_ACTIVITY_IN_DEVICE_CARD_DISTANCE = "prefs_activity_in_device_card_distance";
public static final String PREFS_DEVICE_CHARTS_TABS = "charts_tabs";
public static final String PREF_UM25_SHOW_THRESHOLD_NOTIFICATION = "um25_current_threshold_notify";
public static final String PREF_UM25_SHOW_THRESHOLD = "um25_current_threshold";
public static final String PREF_SOUNDS = "sounds";
public static final String PREF_AUTH_KEY = "authkey";
public static final String PREF_USER_FITNESS_GOAL = "fitness_goal";
}

View File

@ -57,7 +57,6 @@ import nodomain.freeyourgadget.gadgetbridge.util.XTimePreference;
import nodomain.freeyourgadget.gadgetbridge.util.XTimePreferenceFragment;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.*;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DEVICE_ACTION_FELL_SLEEP_BROADCAST;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DEVICE_ACTION_FELL_SLEEP_SELECTION;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DEVICE_ACTION_SELECTION_BROADCAST;
@ -66,22 +65,11 @@ import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DEVICE_ACTION_START_NON_WEAR_SELECTION;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DEVICE_ACTION_WOKE_UP_BROADCAST;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DEVICE_ACTION_WOKE_UP_SELECTION;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISCONNECT_NOTIFICATION;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISCONNECT_NOTIFICATION_END;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISCONNECT_NOTIFICATION_START;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISPLAY_ITEMS;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISPLAY_ITEMS_SORTABLE;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISPLAY_ON_LIFT_END;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISPLAY_ON_LIFT_START;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_EXPOSE_HR_THIRDPARTY;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_SHORTCUTS;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_SHORTCUTS_SORTABLE;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_DO_NOT_DISTURB;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_DO_NOT_DISTURB_END;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_DO_NOT_DISTURB_LIFT_WRIST;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_DO_NOT_DISTURB_OFF;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_DO_NOT_DISTURB_SCHEDULED;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_DO_NOT_DISTURB_START;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_DATEFORMAT;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_ROTATE_WRIST_TO_SWITCH_INFO;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE;
@ -298,7 +286,7 @@ public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat imp
}
String doNotDisturbState = prefs.getString(MiBandConst.PREF_DO_NOT_DISTURB, PREF_DO_NOT_DISTURB_OFF);
String doNotDisturbState = prefs.getString(PREF_DO_NOT_DISTURB, PREF_DO_NOT_DISTURB_OFF);
boolean doNotDisturbScheduled = doNotDisturbState.equals(PREF_DO_NOT_DISTURB_SCHEDULED);
final Preference doNotDisturbStart = findPreference(PREF_DO_NOT_DISTURB_START);
@ -371,10 +359,20 @@ public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat imp
addPreferenceHandlerFor(PREF_DISCONNECTNOTIF_NOSHED);
addPreferenceHandlerFor(PREF_BUTTON_BP_CALIBRATE);
addPreferenceHandlerFor(PREF_ALTITUDE_CALIBRATE);
addPreferenceHandlerFor(PREF_LONGSIT_PERIOD);
addPreferenceHandlerFor(PREF_LONGSIT_SWITCH);
addPreferenceHandlerFor(PREF_LONGSIT_START);
addPreferenceHandlerFor(PREF_LONGSIT_END);
addPreferenceHandlerFor(PREF_INACTIVITY_ENABLE);
addPreferenceHandlerFor(PREF_INACTIVITY_START);
addPreferenceHandlerFor(PREF_INACTIVITY_END);
addPreferenceHandlerFor(PREF_INACTIVITY_THRESHOLD);
addPreferenceHandlerFor(PREF_INACTIVITY_MO);
addPreferenceHandlerFor(PREF_INACTIVITY_TU);
addPreferenceHandlerFor(PREF_INACTIVITY_WE);
addPreferenceHandlerFor(PREF_INACTIVITY_TH);
addPreferenceHandlerFor(PREF_INACTIVITY_FR);
addPreferenceHandlerFor(PREF_INACTIVITY_SA);
addPreferenceHandlerFor(PREF_INACTIVITY_SU);
addPreferenceHandlerFor(PREF_INACTIVITY_DND);
addPreferenceHandlerFor(PREF_INACTIVITY_DND_START);
addPreferenceHandlerFor(PREF_INACTIVITY_DND_END);
addPreferenceHandlerFor(PREF_AUTOHEARTRATE_SWITCH);
addPreferenceHandlerFor(PREF_AUTOHEARTRATE_SLEEP);
addPreferenceHandlerFor(PREF_AUTOHEARTRATE_INTERVAL);
@ -383,8 +381,12 @@ public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat imp
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_NOAUTO);
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_NOAUTO_START);
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_NOAUTO_END);
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB);
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_START);
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_END);
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_LIFT_WRIST);
addPreferenceHandlerFor(PREF_FIND_PHONE_ENABLED);
addPreferenceHandlerFor(PREF_FIND_PHONE);
addPreferenceHandlerFor(PREF_FIND_PHONE_DURATION);
addPreferenceHandlerFor(PREF_AUTOLIGHT);
addPreferenceHandlerFor(PREF_AUTOREMOVE_MESSAGE);
addPreferenceHandlerFor(PREF_AUTOREMOVE_NOTIFICATIONS);
@ -395,7 +397,6 @@ public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat imp
addPreferenceHandlerFor(PREF_HYDRATION_SWITCH);
addPreferenceHandlerFor(PREF_HYDRATION_PERIOD);
addPreferenceHandlerFor(PREF_AMPM_ENABLED);
addPreferenceHandlerFor(PREF_LEFUN_INTERFACE_LANGUAGE);
addPreferenceHandlerFor(PREF_SOUNDS);
addPreferenceHandlerFor(PREF_HYBRID_HR_DRAW_WIDGET_CIRCLES);
@ -453,6 +454,10 @@ public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat imp
addPreferenceHandlerFor(PREF_SONY_CONNECT_TWO_DEVICES);
addPreferenceHandlerFor(PREF_QC35_NOISE_CANCELLING_LEVEL);
addPreferenceHandlerFor(PREF_USER_FITNESS_GOAL);
addPreferenceHandlerFor(PREF_UM25_SHOW_THRESHOLD_NOTIFICATION);
addPreferenceHandlerFor(PREF_UM25_SHOW_THRESHOLD);
String sleepTimeState = prefs.getString(PREF_SLEEP_TIME, PREF_DO_NOT_DISTURB_OFF);
boolean sleepTimeScheduled = sleepTimeState.equals(PREF_DO_NOT_DISTURB_SCHEDULED);
@ -589,7 +594,7 @@ public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat imp
setInputTypeFor(HuamiConst.PREF_BUTTON_ACTION_PRESS_MAX_INTERVAL, InputType.TYPE_CLASS_NUMBER);
setInputTypeFor(HuamiConst.PREF_BUTTON_ACTION_PRESS_COUNT, InputType.TYPE_CLASS_NUMBER);
setInputTypeFor(MiBandConst.PREF_MIBAND_DEVICE_TIME_OFFSET_HOURS, InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
setInputTypeFor(MakibesHR3Constants.PREF_FIND_PHONE_DURATION, InputType.TYPE_CLASS_NUMBER);
setInputTypeFor(DeviceSettingsPreferenceConst.PREF_FIND_PHONE_DURATION, InputType.TYPE_CLASS_NUMBER);
setInputTypeFor(DeviceSettingsPreferenceConst.PREF_RESERVER_ALARMS_CALENDAR, InputType.TYPE_CLASS_NUMBER);
setInputTypeFor(DeviceSettingsPreferenceConst.PREF_RESERVER_REMINDERS_CALENDAR, InputType.TYPE_CLASS_NUMBER);

View File

@ -174,7 +174,7 @@ public class FitProDeviceCoordinator extends AbstractDeviceCoordinator {
public int[] getSupportedDeviceSpecificSettings(GBDevice device) {
return new int[]{
R.xml.devicesettings_liftwrist_display_no_on,
R.xml.devicesettings_longsit_extended,
R.xml.devicesettings_inactivity_extended,
R.xml.devicesettings_donotdisturb_no_auto,
R.xml.devicesettings_sleep_time,
R.xml.devicesettings_wearlocation,

View File

@ -57,14 +57,6 @@ public class HuamiConst {
public static final String AMAZFIT_X = "Amazfit X";
public static final String PREF_ACTIVATE_DISPLAY_ON_LIFT = "activate_display_on_lift_wrist";
public static final String PREF_DISPLAY_ON_LIFT_START = "display_on_lift_start";
public static final String PREF_DISPLAY_ON_LIFT_END = "display_on_lift_end";
public static final String PREF_DISCONNECT_NOTIFICATION = "disconnect_notification";
public static final String PREF_DISCONNECT_NOTIFICATION_START = "disconnect_notification_start";
public static final String PREF_DISCONNECT_NOTIFICATION_END = "disconnect_notification_end";
public static final String PREF_DISPLAY_ITEMS = "display_items";
public static final String PREF_DISPLAY_ITEMS_SORTABLE = "display_items_sortable";
public static final String PREF_SHORTCUTS = "shortcuts";

View File

@ -147,7 +147,7 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator {
String liftOn = context.getString(R.string.p_on);
String liftScheduled = context.getString(R.string.p_scheduled);
String pref = prefs.getString(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, liftOff);
String pref = prefs.getString(DeviceSettingsPreferenceConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, liftOff);
if (liftOn.equals(pref)) {
return ActivateDisplayOnLift.ON;
@ -159,11 +159,11 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator {
}
public static Date getDisplayOnLiftStart(String deviceAddress) {
return getTimePreference(HuamiConst.PREF_DISPLAY_ON_LIFT_START, "00:00", deviceAddress);
return getTimePreference(DeviceSettingsPreferenceConst.PREF_DISPLAY_ON_LIFT_START, "00:00", deviceAddress);
}
public static Date getDisplayOnLiftEnd(String deviceAddress) {
return getTimePreference(HuamiConst.PREF_DISPLAY_ON_LIFT_END, "00:00", deviceAddress);
return getTimePreference(DeviceSettingsPreferenceConst.PREF_DISPLAY_ON_LIFT_END, "00:00", deviceAddress);
}
public static DisconnectNotificationSetting getDisconnectNotificationSetting(Context context, String deviceAddress) {
@ -173,7 +173,7 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator {
String liftOn = context.getString(R.string.p_on);
String liftScheduled = context.getString(R.string.p_scheduled);
String pref = prefs.getString(HuamiConst.PREF_DISCONNECT_NOTIFICATION, liftOff);
String pref = prefs.getString(DeviceSettingsPreferenceConst.PREF_DISCONNECT_NOTIFICATION, liftOff);
if (liftOn.equals(pref)) {
return DisconnectNotificationSetting.ON;
@ -185,11 +185,11 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator {
}
public static Date getDisconnectNotificationStart(String deviceAddress) {
return getTimePreference(HuamiConst.PREF_DISCONNECT_NOTIFICATION_START, "00:00", deviceAddress);
return getTimePreference(DeviceSettingsPreferenceConst.PREF_DISCONNECT_NOTIFICATION_START, "00:00", deviceAddress);
}
public static Date getDisconnectNotificationEnd(String deviceAddress) {
return getTimePreference(HuamiConst.PREF_DISCONNECT_NOTIFICATION_END, "00:00", deviceAddress);
return getTimePreference(DeviceSettingsPreferenceConst.PREF_DISCONNECT_NOTIFICATION_END, "00:00", deviceAddress);
}
public static boolean getUseCustomFont(String deviceAddress) {
@ -209,41 +209,41 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator {
public static boolean getInactivityWarnings() {
Prefs prefs = GBApplication.getPrefs();
return prefs.getBoolean(MiBandConst.PREF_MI2_INACTIVITY_WARNINGS, false);
return prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE, false);
}
public static int getInactivityWarningsThreshold() {
Prefs prefs = GBApplication.getPrefs();
return prefs.getInt(MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_THRESHOLD, 60);
return prefs.getInt(DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD, 60);
}
public static boolean getInactivityWarningsDnd() {
Prefs prefs = GBApplication.getPrefs();
return prefs.getBoolean(MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_DND, false);
return prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_DND, false);
}
public static Date getInactivityWarningsStart() {
return getTimePreference(MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_START, "06:00");
return getTimePreference(DeviceSettingsPreferenceConst.PREF_INACTIVITY_START, "06:00");
}
public static Date getInactivityWarningsEnd() {
return getTimePreference(MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_END, "22:00");
return getTimePreference(DeviceSettingsPreferenceConst.PREF_INACTIVITY_END, "22:00");
}
public static Date getInactivityWarningsDndStart() {
return getTimePreference(MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_DND_START, "12:00");
return getTimePreference(DeviceSettingsPreferenceConst.PREF_INACTIVITY_DND_START, "12:00");
}
public static Date getInactivityWarningsDndEnd() {
return getTimePreference(MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_DND_END, "14:00");
return getTimePreference(DeviceSettingsPreferenceConst.PREF_INACTIVITY_DND_END, "14:00");
}
public static Date getDoNotDisturbStart(String deviceAddress) {
return getTimePreference(MiBandConst.PREF_DO_NOT_DISTURB_START, "01:00", deviceAddress);
return getTimePreference(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_START, "01:00", deviceAddress);
}
public static Date getDoNotDisturbEnd(String deviceAddress) {
return getTimePreference(MiBandConst.PREF_DO_NOT_DISTURB_END, "06:00", deviceAddress);
return getTimePreference(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_END, "06:00", deviceAddress);
}
public static boolean getBandScreenUnlock(String deviceAddress) {
@ -298,11 +298,11 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator {
public static DoNotDisturb getDoNotDisturb(String deviceAddress) {
SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(deviceAddress);
String pref = prefs.getString(MiBandConst.PREF_DO_NOT_DISTURB, MiBandConst.PREF_DO_NOT_DISTURB_OFF);
String pref = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB, DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_OFF);
if (MiBandConst.PREF_DO_NOT_DISTURB_AUTOMATIC.equals(pref)) {
if (DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_AUTOMATIC.equals(pref)) {
return DoNotDisturb.AUTOMATIC;
} else if (MiBandConst.PREF_DO_NOT_DISTURB_SCHEDULED.equals(pref)) {
} else if (DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_SCHEDULED.equals(pref)) {
return DoNotDisturb.SCHEDULED;
}
@ -312,7 +312,7 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator {
public static boolean getDoNotDisturbLiftWrist(String deviceAddress) {
SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(deviceAddress);
return prefs.getBoolean(MiBandConst.PREF_DO_NOT_DISTURB_LIFT_WRIST, false);
return prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_LIFT_WRIST, false);
}
@Override

View File

@ -164,7 +164,7 @@ public class LefunDeviceCoordinator extends AbstractDeviceCoordinator {
R.xml.devicesettings_liftwrist_display_noshed,
R.xml.devicesettings_timeformat,
R.xml.devicesettings_antilost,
R.xml.devicesettings_longsit,
R.xml.devicesettings_inactivity,
R.xml.devicesettings_hydration_reminder,
R.xml.devicesettings_lefun_interface_language,
R.xml.devicesettings_transliteration

View File

@ -31,10 +31,6 @@ public final class WatchXPlusConstants extends LenovoWatchConstants {
public static final UUID UUID_CHARACTERISTIC_UNKNOWN_4 = UUID.fromString("0000a804-0000-1000-8000-00805f9b34fb");
public static final String PREF_FIND_PHONE = "prefs_find_phone";
public static final String PREF_FIND_PHONE_DURATION = "prefs_find_phone_duration";
// new
public static final String PREF_CONTINIOUS_RING = "notification_enable_continious_ring";
public static final String PREF_REPEAT_RING = "notification_repeat_ring";
@ -46,15 +42,7 @@ public final class WatchXPlusConstants extends LenovoWatchConstants {
public static final String PREF_BP_CAL_LOW = "pref_sensors_bp_calibration_low";
public static final String PREF_BP_CAL_HIGH = "pref_sensors_bp_calibration_high";
public static final String PREF_DO_NOT_DISTURB = "do_not_disturb_no_auto";
public static final String PREF_DO_NOT_DISTURB_START = "do_not_disturb_no_auto_start";
public static final String PREF_DO_NOT_DISTURB_END = "do_not_disturb_no_auto_end";
public static final String PREF_LONGSIT_START = "pref_longsit_start";
public static final String PREF_LONGSIT_END = "pref_longsit_end";
public static final String PREF_SHOW_RAW_GRAPH = "show_raw_graph";
// moved to gear icon (per device settings)
public static final String PREF_LANGUAGE = "language";
// time format constants
public static final byte ARG_SET_TIMEMODE_24H = 0x00;

View File

@ -192,7 +192,7 @@ public class WatchXPlusDeviceCoordinator extends AbstractDeviceCoordinator {
R.xml.devicesettings_liftwrist_display_noshed,
R.xml.devicesettings_disconnectnotification_noshed,
R.xml.devicesettings_donotdisturb_no_auto,
R.xml.devicesettings_longsit,
R.xml.devicesettings_inactivity,
R.xml.devicesettings_find_phone,
R.xml.devicesettings_timeformat,
R.xml.devicesettings_power_mode,
@ -206,7 +206,7 @@ public class WatchXPlusDeviceCoordinator extends AbstractDeviceCoordinator {
* @return {@link #FindPhone_OFF}, {@link #FindPhone_ON}, or the duration
*/
public static int getFindPhone(SharedPreferences sharedPrefs) {
String findPhone = sharedPrefs.getString(WatchXPlusConstants.PREF_FIND_PHONE, getContext().getString(R.string.p_off));
String findPhone = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_FIND_PHONE, getContext().getString(R.string.p_off));
assert findPhone != null;
if (findPhone.equals(getContext().getString(R.string.p_off))) {
@ -214,7 +214,7 @@ public class WatchXPlusDeviceCoordinator extends AbstractDeviceCoordinator {
} else if (findPhone.equals(getContext().getString(R.string.p_on))) {
return FindPhone_ON;
} else { // Duration
String duration = sharedPrefs.getString(WatchXPlusConstants.PREF_FIND_PHONE_DURATION, "0");
String duration = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_FIND_PHONE_DURATION, "0");
try {
int iDuration;
@ -241,7 +241,7 @@ public class WatchXPlusDeviceCoordinator extends AbstractDeviceCoordinator {
*/
public static boolean getDNDHours(String deviceAddress, Calendar startOut, Calendar endOut) {
SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(deviceAddress);
String doNotDisturb = prefs.getString(WatchXPlusConstants.PREF_DO_NOT_DISTURB, getContext().getString(R.string.p_off));
String doNotDisturb = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO, getContext().getString(R.string.p_off));
assert doNotDisturb != null;
if (doNotDisturb.equals(getContext().getString(R.string.p_off))) {
@ -249,8 +249,8 @@ public class WatchXPlusDeviceCoordinator extends AbstractDeviceCoordinator {
return false;
} else {
String start = prefs.getString(WatchXPlusConstants.PREF_DO_NOT_DISTURB_START, "01:00");
String end = prefs.getString(WatchXPlusConstants.PREF_DO_NOT_DISTURB_END, "06:00");
String start = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_START, "01:00");
String end = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_END, "06:00");
DateFormat df = new SimpleDateFormat("HH:mm");
@ -272,14 +272,14 @@ public class WatchXPlusDeviceCoordinator extends AbstractDeviceCoordinator {
*/
public static boolean getLongSitHours(String deviceAddress, Calendar startOut, Calendar endOut) {
SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(deviceAddress);
boolean enabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_LONGSIT_SWITCH, false);
boolean enabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE, false);
if (!enabled) {
LOG.info(" Long sit reminder is disabled ");
return false;
} else {
String start = prefs.getString(WatchXPlusConstants.PREF_LONGSIT_START, "06:00");
String end = prefs.getString(WatchXPlusConstants.PREF_LONGSIT_END, "23:00");
String start = prefs.getString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_START, "06:00");
String end = prefs.getString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_END, "23:00");
DateFormat df = new SimpleDateFormat("HH:mm");

View File

@ -20,16 +20,6 @@ import java.util.UUID;
public final class MakibesHR3Constants {
// TODO: This doesn't belong here, but I don't want to touch other files to avoid
// TODO: breaking someone else's device support.
public static final String PREF_HEADS_UP_SCREEN = "activate_display_on_lift_wrist";
public static final String PREF_LOST_REMINDER = "disconnect_notification";
public static final String PREF_DO_NOT_DISTURB = "do_not_disturb_no_auto";
public static final String PREF_DO_NOT_DISTURB_START = "do_not_disturb_no_auto_start";
public static final String PREF_DO_NOT_DISTURB_END = "do_not_disturb_no_auto_end";
public static final String PREF_FIND_PHONE = "prefs_find_phone";
public static final String PREF_FIND_PHONE_DURATION = "prefs_find_phone_duration";
public static final UUID UUID_SERVICE = UUID.fromString("6e400001-b5a3-f393-e0a9-e50e24dcca9e");
public static final UUID UUID_CHARACTERISTIC_CONTROL = UUID.fromString("6e400002-b5a3-f393-e0a9-e50e24dcca9e");
public static final UUID UUID_CHARACTERISTIC_REPORT = UUID.fromString("6e400003-b5a3-f393-e0a9-e50e24dcca9e");

View File

@ -64,14 +64,14 @@ public class MakibesHR3Coordinator extends AbstractDeviceCoordinator {
public static boolean shouldEnableHeadsUpScreen(SharedPreferences sharedPrefs) {
String liftMode = sharedPrefs.getString(MakibesHR3Constants.PREF_HEADS_UP_SCREEN, getContext().getString(R.string.p_on));
String liftMode = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_on));
// Makibes HR3 doesn't support scheduled intervals. Treat it as "on".
return !liftMode.equals(getContext().getString(R.string.p_off));
}
public static boolean shouldEnableLostReminder(SharedPreferences sharedPrefs) {
String lostReminder = sharedPrefs.getString(MakibesHR3Constants.PREF_LOST_REMINDER, getContext().getString(R.string.p_on));
String lostReminder = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_DISCONNECT_NOTIFICATION, getContext().getString(R.string.p_on));
// Makibes HR3 doesn't support scheduled intervals. Treat it as "on".
return !lostReminder.equals(getContext().getString(R.string.p_off));
@ -95,13 +95,13 @@ public class MakibesHR3Coordinator extends AbstractDeviceCoordinator {
* @return True if quite hours are enabled.
*/
public static boolean getQuiteHours(SharedPreferences sharedPrefs, Calendar startOut, Calendar endOut) {
String doNotDisturb = sharedPrefs.getString(MakibesHR3Constants.PREF_DO_NOT_DISTURB, getContext().getString(R.string.p_off));
String doNotDisturb = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO, getContext().getString(R.string.p_off));
if (doNotDisturb.equals(getContext().getString(R.string.p_off))) {
return false;
} else {
String start = sharedPrefs.getString(MakibesHR3Constants.PREF_DO_NOT_DISTURB_START, "00:00");
String end = sharedPrefs.getString(MakibesHR3Constants.PREF_DO_NOT_DISTURB_END, "00:00");
String start = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_START, "00:00");
String end = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_END, "00:00");
DateFormat df = new SimpleDateFormat("HH:mm");
@ -121,14 +121,14 @@ public class MakibesHR3Coordinator extends AbstractDeviceCoordinator {
* @return {@link #FindPhone_OFF}, {@link #FindPhone_ON}, or the duration
*/
public static int getFindPhone(SharedPreferences sharedPrefs) {
String findPhone = sharedPrefs.getString(MakibesHR3Constants.PREF_FIND_PHONE, getContext().getString(R.string.p_off));
String findPhone = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_FIND_PHONE, getContext().getString(R.string.p_off));
if (findPhone.equals(getContext().getString(R.string.p_off))) {
return FindPhone_OFF;
} else if (findPhone.equals(getContext().getString(R.string.p_on))) {
return FindPhone_ON;
} else { // Duration
String duration = sharedPrefs.getString(MakibesHR3Constants.PREF_FIND_PHONE_DURATION, "0");
String duration = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_FIND_PHONE_DURATION, "0");
try {
int iDuration;

View File

@ -36,20 +36,6 @@ public final class MiBandConst {
public static final String PREF_MI2_DISPLAY_ITEM_BATTERY = "battery";
public static final String PREF_MI2_ROTATE_WRIST_TO_SWITCH_INFO = "rotate_wrist_to_cycle_info";
public static final String PREF_MI2_ENABLE_TEXT_NOTIFICATIONS = "mi2_enable_text_notifications";
public static final String PREF_DO_NOT_DISTURB = "do_not_disturb";
public static final String PREF_DO_NOT_DISTURB_LIFT_WRIST = "do_not_disturb_lift_wrist";
public static final String PREF_DO_NOT_DISTURB_OFF = "off";
public static final String PREF_DO_NOT_DISTURB_AUTOMATIC = "automatic";
public static final String PREF_DO_NOT_DISTURB_SCHEDULED = "scheduled";
public static final String PREF_DO_NOT_DISTURB_START = "do_not_disturb_start";
public static final String PREF_DO_NOT_DISTURB_END = "do_not_disturb_end";
public static final String PREF_MI2_INACTIVITY_WARNINGS = "mi2_inactivity_warnings";
public static final String PREF_MI2_INACTIVITY_WARNINGS_THRESHOLD = "mi2_inactivity_warnings_threshold";
public static final String PREF_MI2_INACTIVITY_WARNINGS_START = "mi2_inactivity_warnings_start";
public static final String PREF_MI2_INACTIVITY_WARNINGS_END = "mi2_inactivity_warnings_end";
public static final String PREF_MI2_INACTIVITY_WARNINGS_DND = "mi2_inactivity_warnings_dnd";
public static final String PREF_MI2_INACTIVITY_WARNINGS_DND_START = "mi2_inactivity_warnings_dnd_start";
public static final String PREF_MI2_INACTIVITY_WARNINGS_DND_END = "mi2_inactivity_warnings_dnd_end";
public static final String PREF_MIBAND_SETUP_BT_PAIRING = "mi_setup_bt_pairing";
public static final String PREF_SWIPE_UNLOCK = "swipe_unlock";

View File

@ -37,16 +37,16 @@ import nodomain.freeyourgadget.gadgetbridge.model.NotificationType;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_START;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_END;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_DND;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_DND_START;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_DND_END;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_ALARM_CLOCK;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_INCOMING_CALL;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_GOAL_NOTIFICATION;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_INACTIVITY_WARNINGS;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_DND;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_DND_END;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_DND_START;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_END;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_START;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_THRESHOLD;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_ADDRESS;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_USE_HR_FOR_SLEEP_DETECTION;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.VIBRATION_COUNT;
@ -97,98 +97,98 @@ public class MiBandPreferencesActivity extends AbstractSettingsActivity {
});
final Preference inactivityWarnings = findPreference(PREF_MI2_INACTIVITY_WARNINGS);
final Preference inactivityWarnings = findPreference(PREF_INACTIVITY_ENABLE);
inactivityWarnings.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newVal) {
invokeLater(new Runnable() {
@Override
public void run() {
GBApplication.deviceService().onSendConfiguration(PREF_MI2_INACTIVITY_WARNINGS);
GBApplication.deviceService().onSendConfiguration(PREF_INACTIVITY_ENABLE);
}
});
return true;
}
});
final Preference inactivityWarningsThreshold = findPreference(PREF_MI2_INACTIVITY_WARNINGS_THRESHOLD);
final Preference inactivityWarningsThreshold = findPreference(PREF_INACTIVITY_THRESHOLD);
inactivityWarningsThreshold.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newVal) {
invokeLater(new Runnable() {
@Override
public void run() {
GBApplication.deviceService().onSendConfiguration(PREF_MI2_INACTIVITY_WARNINGS_THRESHOLD);
GBApplication.deviceService().onSendConfiguration(PREF_INACTIVITY_THRESHOLD);
}
});
return true;
}
});
final Preference inactivityWarningsStart = findPreference(PREF_MI2_INACTIVITY_WARNINGS_START);
final Preference inactivityWarningsStart = findPreference(PREF_INACTIVITY_START);
inactivityWarningsStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newVal) {
invokeLater(new Runnable() {
@Override
public void run() {
GBApplication.deviceService().onSendConfiguration(PREF_MI2_INACTIVITY_WARNINGS_START);
GBApplication.deviceService().onSendConfiguration(PREF_INACTIVITY_START);
}
});
return true;
}
});
final Preference inactivityWarningsEnd = findPreference(PREF_MI2_INACTIVITY_WARNINGS_END);
final Preference inactivityWarningsEnd = findPreference(PREF_INACTIVITY_END);
inactivityWarningsEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newVal) {
invokeLater(new Runnable() {
@Override
public void run() {
GBApplication.deviceService().onSendConfiguration(PREF_MI2_INACTIVITY_WARNINGS_END);
GBApplication.deviceService().onSendConfiguration(PREF_INACTIVITY_END);
}
});
return true;
}
});
final Preference inactivityWarningsDnd = findPreference(PREF_MI2_INACTIVITY_WARNINGS_DND);
final Preference inactivityWarningsDnd = findPreference(PREF_INACTIVITY_DND);
inactivityWarningsDnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newVal) {
invokeLater(new Runnable() {
@Override
public void run() {
GBApplication.deviceService().onSendConfiguration(PREF_MI2_INACTIVITY_WARNINGS_DND);
GBApplication.deviceService().onSendConfiguration(PREF_INACTIVITY_DND);
}
});
return true;
}
});
final Preference inactivityWarningsDndStart = findPreference(PREF_MI2_INACTIVITY_WARNINGS_DND_START);
final Preference inactivityWarningsDndStart = findPreference(PREF_INACTIVITY_DND_START);
inactivityWarningsDndStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newVal) {
invokeLater(new Runnable() {
@Override
public void run() {
GBApplication.deviceService().onSendConfiguration(PREF_MI2_INACTIVITY_WARNINGS_DND_START);
GBApplication.deviceService().onSendConfiguration(PREF_INACTIVITY_DND_START);
}
});
return true;
}
});
final Preference inactivityWarningsDndEnd = findPreference(PREF_MI2_INACTIVITY_WARNINGS_DND_END);
final Preference inactivityWarningsDndEnd = findPreference(PREF_INACTIVITY_DND_END);
inactivityWarningsDndEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newVal) {
invokeLater(new Runnable() {
@Override
public void run() {
GBApplication.deviceService().onSendConfiguration(PREF_MI2_INACTIVITY_WARNINGS_DND_END);
GBApplication.deviceService().onSendConfiguration(PREF_INACTIVITY_DND_END);
}
});
return true;
@ -264,7 +264,7 @@ public class MiBandPreferencesActivity extends AbstractSettingsActivity {
prefKeys.add(PREF_USER_NAME);
prefKeys.add(PREF_MIBAND_ADDRESS);
prefKeys.add(ActivityUser.PREF_USER_STEPS_GOAL);
prefKeys.add(PREF_MI2_INACTIVITY_WARNINGS_THRESHOLD);
prefKeys.add(PREF_INACTIVITY_THRESHOLD);
prefKeys.add(getNotificationPrefKey(VIBRATION_COUNT, ORIGIN_ALARM_CLOCK));
prefKeys.add(getNotificationPrefKey(VIBRATION_COUNT, ORIGIN_INCOMING_CALL));

View File

@ -144,7 +144,7 @@ public class TLW64Coordinator extends AbstractDeviceCoordinator {
public int[] getSupportedDeviceSpecificSettings(GBDevice device) {
return new int[]{
R.xml.devicesettings_liftwrist_display_noshed,
R.xml.devicesettings_longsit_noshed,
R.xml.devicesettings_inactivity_noshed,
R.xml.devicesettings_timeformat,
R.xml.devicesettings_transliteration
};

View File

@ -56,6 +56,7 @@ public class DataActivity extends AbstractGBActivity {
chargeDurationTextView = findViewById(R.id.um25_text_charge_duration);
TextView wattHoursTextView = findViewById(R.id.um25_text_wattage_sum);
TextView currentAccumulatedTextView = findViewById(R.id.um25_text_current_sum);
View.OnLongClickListener longClickListener = new View.OnLongClickListener() {
@Override
@ -70,6 +71,7 @@ public class DataActivity extends AbstractGBActivity {
chargeDurationTextView.setOnLongClickListener(longClickListener);
wattHoursTextView.setOnLongClickListener(longClickListener);
currentAccumulatedTextView.setOnLongClickListener(longClickListener);
}
@Override

View File

@ -9,15 +9,12 @@ import android.os.ParcelUuid;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import cyanogenmod.app.CustomTile;
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.devices.um25.Activity.DataActivity;
@ -55,6 +52,13 @@ public class UM25Coordinator extends AbstractDeviceCoordinator {
return DeviceType.UNKNOWN;
}
@Override
public int[] getSupportedDeviceSpecificSettings(GBDevice device) {
return new int[]{
R.xml.devicesettings_um25
};
}
@Override
public DeviceType getDeviceType() {
return DeviceType.UM25;

View File

@ -135,23 +135,6 @@ public class ZeTimeConstants {
public static final String PREF_ZETIME_MIN_HEARTRATE = "alarm_min_heart_rate";
public static final String PREF_ZETIME_HEARTRATE_INTERVAL = "heartrate_measurement_interval";
public static final String PREF_DO_NOT_DISTURB = "zetime_do_not_disturb";
public static final String PREF_DO_NOT_DISTURB_START = "zetime_do_not_disturb_start";
public static final String PREF_DO_NOT_DISTURB_END = "zetime_do_not_disturb_end";
public static final String PREF_INACTIVITY_KEY = "zetime_inactivity_warning_key";
public static final String PREF_INACTIVITY_ENABLE = "zetime_inactivity_warnings";
public static final String PREF_INACTIVITY_START = "zetime_inactivity_warnings_start";
public static final String PREF_INACTIVITY_END = "zetime_inactivity_warnings_end";
public static final String PREF_INACTIVITY_THRESHOLD = "zetime_inactivity_warnings_threshold";
public static final String PREF_INACTIVITY_MO = "zetime_prefs_inactivity_repetitions_mo";
public static final String PREF_INACTIVITY_TU = "zetime_prefs_inactivity_repetitions_tu";
public static final String PREF_INACTIVITY_WE = "zetime_prefs_inactivity_repetitions_we";
public static final String PREF_INACTIVITY_TH = "zetime_prefs_inactivity_repetitions_th";
public static final String PREF_INACTIVITY_FR = "zetime_prefs_inactivity_repetitions_fr";
public static final String PREF_INACTIVITY_SA = "zetime_prefs_inactivity_repetitions_sa";
public static final String PREF_INACTIVITY_SU = "zetime_prefs_inactivity_repetitions_su";
public static final String PREF_ANALOG_MODE = "zetime_analog_mode";
public static final String PREF_ACTIVITY_TRACKING = "zetime_activity_tracking";
public static final String PREF_HANDMOVE_DISPLAY = "zetime_handmove_display";
@ -169,7 +152,6 @@ public class ZeTimeConstants {
public static final String PREF_LOW_POWER_SIGNALING = "zetime_vibration_profile_lowpower";
public static final String PREF_ANTI_LOSS_SIGNALING = "zetime_vibration_profile_antiloss";
public static final String PREF_USER_FITNESS_GOAL = "mi_fitness_goal";
public static final String PREF_USER_SLEEP_GOAL = "activity_user_sleep_duration";
public static final String PREF_USER_CALORIES_GOAL = "activity_user_calories_burnt";
public static final String PREF_USER_DISTANCE_GOAL = "activity_user_distance_meters";

View File

@ -49,26 +49,10 @@ public class ZeTimePreferenceActivity extends AbstractSettingsActivity {
addPreferenceHandlerFor(ZeTimeConstants.PREF_HANDMOVE_DISPLAY);
addPreferenceHandlerFor(ZeTimeConstants.PREF_DO_NOT_DISTURB);
addPreferenceHandlerFor(ZeTimeConstants.PREF_DO_NOT_DISTURB_START);
addPreferenceHandlerFor(ZeTimeConstants.PREF_DO_NOT_DISTURB_END);
addPreferenceHandlerFor(ZeTimeConstants.PREF_CALORIES_TYPE);
addPreferenceHandlerFor(ZeTimeConstants.PREF_DATE_FORMAT);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_ENABLE);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_START);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_END);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_THRESHOLD);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_MO);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_TU);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_WE);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_TH);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_FR);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_SA);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_SU);
addPreferenceHandlerFor(ZeTimeConstants.PREF_SMS_SIGNALING);
addPreferenceHandlerFor(ZeTimeConstants.PREF_ANTI_LOSS_SIGNALING);
addPreferenceHandlerFor(ZeTimeConstants.PREF_CALENDAR_SIGNALING);
@ -85,7 +69,6 @@ public class ZeTimePreferenceActivity extends AbstractSettingsActivity {
addPreferenceHandlerFor(ZeTimeConstants.PREF_ZETIME_MIN_HEARTRATE);
addPreferenceHandlerFor(ZeTimeConstants.PREF_USER_FITNESS_GOAL);
addPreferenceHandlerFor(ZeTimeConstants.PREF_USER_SLEEP_GOAL);
addPreferenceHandlerFor(ZeTimeConstants.PREF_USER_CALORIES_GOAL);
addPreferenceHandlerFor(ZeTimeConstants.PREF_USER_DISTANCE_GOAL);

View File

@ -65,7 +65,7 @@ public class ActivityUser {
public static final String PREF_USER_HEIGHT_CM = "activity_user_height_cm";
public static final String PREF_USER_WEIGHT_KG = "activity_user_weight_kg";
public static final String PREF_USER_SLEEP_DURATION = "activity_user_sleep_duration";
public static final String PREF_USER_STEPS_GOAL = "mi_fitness_goal"; // FIXME: for compatibility
public static final String PREF_USER_STEPS_GOAL = "fitness_goal"; // FIXME: for compatibility
public static final String PREF_USER_CALORIES_BURNT = "activity_user_calories_burnt";
public static final String PREF_USER_DISTANCE_METERS = "activity_user_distance_meters";
public static final String PREF_USER_ACTIVETIME_MINUTES = "activity_user_activetime_minutes";

View File

@ -110,6 +110,9 @@ public class CalendarEvents {
}
}
return true;
} catch (Exception e) {
LOG.error("could not query calendar, permission denied?");
return false;
}
}

View File

@ -70,7 +70,8 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_AUTOLIGHT;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_AUTOREMOVE_MESSAGE;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_FAKE_RING_DURATION;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_FIND_PHONE_ENABLED;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_FIND_PHONE;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_FIND_PHONE_DURATION;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_KEY_VIBRATION;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_OPERATING_SOUNDS;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_TIMEFORMAT;
@ -381,7 +382,7 @@ public class CasioGBX100DeviceSupport extends CasioSupport implements SharedPref
if (start) {
SharedPreferences sharedPreferences = GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress());
String findPhone = sharedPreferences.getString(PREF_FIND_PHONE_ENABLED, getContext().getString(R.string.p_off));
String findPhone = sharedPreferences.getString(PREF_FIND_PHONE, getContext().getString(R.string.p_off));
if(findPhone.equals(getContext().getString(R.string.p_off)))
return;
@ -391,7 +392,7 @@ public class CasioGBX100DeviceSupport extends CasioSupport implements SharedPref
evaluateGBDeviceEvent(findPhoneEvent);
if(!findPhone.equals(getContext().getString(R.string.p_on))) {
String duration = sharedPreferences.getString(MakibesHR3Constants.PREF_FIND_PHONE_DURATION, "0");
String duration = sharedPreferences.getString(PREF_FIND_PHONE_DURATION, "0");
try {
int iDuration;
@ -620,8 +621,8 @@ public class CasioGBX100DeviceSupport extends CasioSupport implements SharedPref
new SetConfigurationOperation(this, CasioConstants.ConfigurationOption.OPTION_OPERATING_SOUNDS).perform();
break;
case PREF_FAKE_RING_DURATION:
case PREF_FIND_PHONE_ENABLED:
case MakibesHR3Constants.PREF_FIND_PHONE_DURATION:
case PREF_FIND_PHONE:
case PREF_FIND_PHONE_DURATION:
// No action, we check the shared preferences when the device tries to ring the phone.
break;
default:

View File

@ -543,10 +543,10 @@ public class FitProDeviceSupport extends AbstractBTLEDeviceSupport {
case DeviceSettingsPreferenceConst.PREF_LANGUAGE:
setLanguage(builder);
break;
case DeviceSettingsPreferenceConst.PREF_LONGSIT_PERIOD:
case DeviceSettingsPreferenceConst.PREF_LONGSIT_SWITCH:
case DeviceSettingsPreferenceConst.PREF_LONGSIT_START:
case DeviceSettingsPreferenceConst.PREF_LONGSIT_END:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_START:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_END:
setLongSitReminder(builder);
break;
case DeviceSettingsPreferenceConst.PREF_ACTIVATE_DISPLAY_ON_LIFT:
@ -1143,14 +1143,14 @@ public class FitProDeviceSupport extends AbstractBTLEDeviceSupport {
public FitProDeviceSupport setLongSitReminder(TransactionBuilder builder) {
LOG.debug("FitPro set inactivity warning");
boolean prefLongsitSwitch = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getBoolean("pref_longsit_switch", false);
boolean prefLongsitSwitch = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE, false);
LOG.info("Setting long sit warning to " + prefLongsitSwitch);
if (prefLongsitSwitch) {
String inactivity = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString("pref_longsit_period", "4");
String start = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString("pref_longsit_start", "08:00");
String end = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString("pref_longsit_end", "16:00");
String inactivity = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD, "4");
String start = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_START, "08:00");
String end = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_END, "16:00");
Calendar startCalendar = GregorianCalendar.getInstance();
Calendar endCalendar = GregorianCalendar.getInstance();
DateFormat df = new SimpleDateFormat("HH:mm");

View File

@ -147,9 +147,26 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
import nodomain.freeyourgadget.gadgetbridge.util.Version;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_ACTIVATE_DISPLAY_ON_LIFT;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_ALLOW_HIGH_MTU;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_BT_CONNECTED_ADVERTISEMENT;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DATEFORMAT;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DISPLAY_ON_LIFT_START;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DISPLAY_ON_LIFT_END;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DISCONNECT_NOTIFICATION;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DISCONNECT_NOTIFICATION_START;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DISCONNECT_NOTIFICATION_END;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_START;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_END;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_LIFT_WRIST;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_START;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_END;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_DND;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_DND_START;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_INACTIVITY_DND_END;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_LANGUAGE;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_RESERVER_ALARMS_CALENDAR;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_RESERVER_REMINDERS_CALENDAR;
@ -2208,14 +2225,14 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
case MiBandConst.PREF_MI2_GOAL_NOTIFICATION:
setGoalNotification(builder);
break;
case HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT:
case HuamiConst.PREF_DISPLAY_ON_LIFT_START:
case HuamiConst.PREF_DISPLAY_ON_LIFT_END:
case PREF_ACTIVATE_DISPLAY_ON_LIFT:
case PREF_DISPLAY_ON_LIFT_START:
case PREF_DISPLAY_ON_LIFT_END:
setActivateDisplayOnLiftWrist(builder);
break;
case HuamiConst.PREF_DISCONNECT_NOTIFICATION:
case HuamiConst.PREF_DISCONNECT_NOTIFICATION_START:
case HuamiConst.PREF_DISCONNECT_NOTIFICATION_END:
case PREF_DISCONNECT_NOTIFICATION:
case PREF_DISCONNECT_NOTIFICATION_START:
case PREF_DISCONNECT_NOTIFICATION_END:
setDisconnectNotification(builder);
break;
case HuamiConst.PREF_DISPLAY_ITEMS:
@ -2232,19 +2249,19 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
case ActivityUser.PREF_USER_STEPS_GOAL:
setFitnessGoal(builder);
break;
case MiBandConst.PREF_DO_NOT_DISTURB:
case MiBandConst.PREF_DO_NOT_DISTURB_START:
case MiBandConst.PREF_DO_NOT_DISTURB_END:
case MiBandConst.PREF_DO_NOT_DISTURB_LIFT_WRIST:
case PREF_DO_NOT_DISTURB:
case PREF_DO_NOT_DISTURB_START:
case PREF_DO_NOT_DISTURB_END:
case PREF_DO_NOT_DISTURB_LIFT_WRIST:
setDoNotDisturb(builder);
break;
case MiBandConst.PREF_MI2_INACTIVITY_WARNINGS:
case MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_THRESHOLD:
case MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_START:
case MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_END:
case MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_DND:
case MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_DND_START:
case MiBandConst.PREF_MI2_INACTIVITY_WARNINGS_DND_END:
case PREF_INACTIVITY_ENABLE:
case PREF_INACTIVITY_THRESHOLD:
case PREF_INACTIVITY_START:
case PREF_INACTIVITY_END:
case PREF_INACTIVITY_DND:
case PREF_INACTIVITY_DND_START:
case PREF_INACTIVITY_DND_END:
setInactivityWarnings(builder);
break;
case SettingsActivity.PREF_MEASUREMENT_SYSTEM:
@ -2800,8 +2817,8 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
if (sounds != null) {
final String[] soundOrder = new String[]{"button", "calls", "alarm", "notifications", "inactivity_warning", "sms", "goal"};
byte[] command = new byte[]{0x3c, 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 7, 0, 0};
final String[] soundOrder = new String[]{"button", "calls", "alarm", "notifications", "inactivity_warning", "sms", "email", "goal"};
byte[] command = new byte[]{0x3c, 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0};
int i = 3;
for (String sound : soundOrder) {
if (sounds.contains(sound)) {

View File

@ -32,9 +32,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband5.MiBand5Support;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.UpdateFirmwareOperation;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.UpdateFirmwareOperation2020;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.UpdateFirmwareOperationNew;
//import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitneo.AmazfitBand5FWHelper;
public class AmazfitNeoSupport extends MiBand5Support {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitNeoSupport.class);

View File

@ -131,6 +131,7 @@ public class InitOperation2021 extends InitOperation {
TransactionBuilder builder = createTransactionBuilder("Authenticated, now initialize phase 2");
builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZING, getContext()));
huamiSupport.enableFurtherNotifications(builder, true);
huamiSupport.setCurrentTimeWithService(builder);
huamiSupport.requestDeviceInfo(builder);
huamiSupport.phase2Initialize(builder);
huamiSupport.phase3Initialize(builder);

View File

@ -405,15 +405,15 @@ public class LefunDeviceSupport extends AbstractBTLEDeviceSupport {
sendEnabledFeaturesSetting(features);
break;
}
case DeviceSettingsPreferenceConst.PREF_LONGSIT_SWITCH: {
boolean enabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_LONGSIT_SWITCH, false);
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE: {
boolean enabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE, false);
FeaturesCommand features = getCurrentEnabledFeatures();
features.setFeature(FeaturesCommand.FEATURE_SEDENTARY_REMINDER, enabled);
sendEnabledFeaturesSetting(features);
break;
}
case DeviceSettingsPreferenceConst.PREF_LONGSIT_PERIOD: {
String periodStr = prefs.getString(DeviceSettingsPreferenceConst.PREF_LONGSIT_PERIOD, "60");
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD: {
String periodStr = prefs.getString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD, "60");
try {
int period = Integer.parseInt(periodStr);
sendSedentaryReminderIntervalSetting(period);
@ -445,8 +445,8 @@ public class LefunDeviceSupport extends AbstractBTLEDeviceSupport {
sendUnitsSetting(null);
break;
}
case DeviceSettingsPreferenceConst.PREF_LEFUN_INTERFACE_LANGUAGE: {
String value = prefs.getString(DeviceSettingsPreferenceConst.PREF_LEFUN_INTERFACE_LANGUAGE, "0");
case DeviceSettingsPreferenceConst.PREF_LANGUAGE: {
String value = prefs.getString(DeviceSettingsPreferenceConst.PREF_LANGUAGE, "0");
int intValue = Integer.parseInt(value);
sendLanguageSetting((byte) intValue);
break;
@ -523,7 +523,7 @@ public class LefunDeviceSupport extends AbstractBTLEDeviceSupport {
SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress());
boolean raiseToWakeEnabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_LIFTWRIST_NOSHED, true);
boolean antilostEnabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_ANTILOST_ENABLED, true);
boolean sedentaryEnabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_LONGSIT_SWITCH, false);
boolean sedentaryEnabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE, false);
boolean hydrationEnabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_HYDRATION_SWITCH, false);
FeaturesCommand cmd = new FeaturesCommand();
@ -693,7 +693,7 @@ public class LefunDeviceSupport extends AbstractBTLEDeviceSupport {
prefs.edit()
.putBoolean(DeviceSettingsPreferenceConst.PREF_LIFTWRIST_NOSHED,
cmd.getFeature(FeaturesCommand.FEATURE_RAISE_TO_WAKE))
.putBoolean(DeviceSettingsPreferenceConst.PREF_LONGSIT_SWITCH,
.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE,
cmd.getFeature(FeaturesCommand.FEATURE_SEDENTARY_REMINDER))
.putBoolean(DeviceSettingsPreferenceConst.PREF_HYDRATION_SWITCH,
cmd.getFeature(FeaturesCommand.FEATURE_HYDRATION_REMINDER))
@ -710,7 +710,7 @@ public class LefunDeviceSupport extends AbstractBTLEDeviceSupport {
public void receiveSedentaryReminderIntervalSetting(int period) {
SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress());
prefs.edit()
.putString(DeviceSettingsPreferenceConst.PREF_LONGSIT_PERIOD, String.valueOf(period))
.putString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD, String.valueOf(period))
.apply();
}

View File

@ -960,12 +960,12 @@ public class WatchXPlusDeviceSupport extends AbstractBTLEDeviceSupport {
case DeviceSettingsPreferenceConst.PREF_POWER_MODE:
setPowerMode();
break;
case WatchXPlusConstants.PREF_LANGUAGE:
case DeviceSettingsPreferenceConst.PREF_LANGUAGE:
setLanguageAndTimeFormat(builder);
break;
case DeviceSettingsPreferenceConst.PREF_LONGSIT_PERIOD:
case DeviceSettingsPreferenceConst.PREF_LONGSIT_SWITCH:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE:
setLongSitHours(builder);
break;
// calibrations
@ -986,7 +986,7 @@ public class WatchXPlusDeviceSupport extends AbstractBTLEDeviceSupport {
case DeviceSettingsPreferenceConst.PREF_TIMEFORMAT:
setLanguageAndTimeFormat(builder);
break;
case WatchXPlusConstants.PREF_DO_NOT_DISTURB:
case DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO:
setDNDHours(builder);
break;
}
@ -1049,7 +1049,7 @@ public class WatchXPlusDeviceSupport extends AbstractBTLEDeviceSupport {
Calendar end = new GregorianCalendar();
boolean enable = WatchXPlusDeviceCoordinator.getLongSitHours(gbDevice.getAddress(), start, end);
if (enable) {
String periodString = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString(DeviceSettingsPreferenceConst.PREF_LONGSIT_PERIOD, "60");
String periodString = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD, "60");
int period = Integer.parseInt(periodString);
this.setLongSitHours(builder, enable,
@ -2128,7 +2128,7 @@ public class WatchXPlusDeviceSupport extends AbstractBTLEDeviceSupport {
// set time format
private void setLanguageAndTimeFormat(TransactionBuilder transactionBuilder) {
byte setLanguage, setTimeMode;
String languageString = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString(WatchXPlusConstants.PREF_LANGUAGE, "1");
String languageString = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString(DeviceSettingsPreferenceConst.PREF_LANGUAGE, "1");
if (languageString == null || languageString.equals("1")) {
setLanguage = 0x01;
} else {

View File

@ -555,16 +555,16 @@ public class MakibesHR3DeviceSupport extends AbstractBTLEDeviceSupport implement
if (key.equals(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT)) {
this.setTimeMode(transactionBuilder, sharedPreferences);
} else if (key.equals(MakibesHR3Constants.PREF_HEADS_UP_SCREEN)) {
} else if (key.equals(DeviceSettingsPreferenceConst.PREF_ACTIVATE_DISPLAY_ON_LIFT)) {
this.setHeadsUpScreen(transactionBuilder, sharedPreferences);
} else if (key.equals(MakibesHR3Constants.PREF_LOST_REMINDER)) {
} else if (key.equals(DeviceSettingsPreferenceConst.PREF_DISCONNECT_NOTIFICATION)) {
this.setLostReminder(transactionBuilder, sharedPreferences);
} else if (key.equals(MakibesHR3Constants.PREF_DO_NOT_DISTURB) ||
key.equals(MakibesHR3Constants.PREF_DO_NOT_DISTURB_START) ||
key.equals(MakibesHR3Constants.PREF_DO_NOT_DISTURB_END)) {
} else if (key.equals(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO) ||
key.equals(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_START) ||
key.equals(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_END)) {
this.setQuiteHours(transactionBuilder, sharedPreferences);
} else if (key.equals(MakibesHR3Constants.PREF_FIND_PHONE) ||
key.equals(MakibesHR3Constants.PREF_FIND_PHONE_DURATION)) {
} else if (key.equals(DeviceSettingsPreferenceConst.PREF_FIND_PHONE) ||
key.equals(DeviceSettingsPreferenceConst.PREF_FIND_PHONE_DURATION)) {
// No action, we check the shared preferences when the device tries to ring the phone.
} else {
return;

View File

@ -548,7 +548,7 @@ public class TLW64Support extends AbstractBTLEDeviceSupport {
(byte) 0x00 // unknown, sniffed by original app
};
if (GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getBoolean(DeviceSettingsPreferenceConst.PREF_LONGSIT_SWITCH_NOSHED, false)) {
if (GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE_NOSHED, false)) {
deviceBytes[1] = (byte) 0x01;
}

View File

@ -1,12 +1,16 @@
package nodomain.freeyourgadget.gadgetbridge.service.devices.um25.Support;
import android.app.Notification;
import android.app.PendingIntent;
import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import androidx.core.app.NotificationCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import org.slf4j.Logger;
@ -19,12 +23,17 @@ import java.util.UUID;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst;
import nodomain.freeyourgadget.gadgetbridge.devices.um25.Activity.DataActivity;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateAction;
import nodomain.freeyourgadget.gadgetbridge.service.devices.um25.Data.CaptureGroup;
import nodomain.freeyourgadget.gadgetbridge.service.devices.um25.Data.MeasurementData;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
public class UM25Support extends UM25BaseSupport {
@ -44,6 +53,12 @@ public class UM25Support extends UM25BaseSupport {
private static final Logger logger = LoggerFactory.getLogger(UM25Support.class);
SharedPreferences preferences;
private boolean notifyOnCurrentThreshold;
private int notificationCurrentThreshold;
private boolean wasOverNotificationCurrent = false;
private long lastOverThresholdTimestamp = 0;
public UM25Support() {
super(logger);
@ -63,8 +78,22 @@ public class UM25Support extends UM25BaseSupport {
}
};
void readPreferences(){
notifyOnCurrentThreshold = preferences.getBoolean(DeviceSettingsPreferenceConst.PREF_UM25_SHOW_THRESHOLD_NOTIFICATION, false);
notificationCurrentThreshold = Integer.parseInt(preferences.getString(DeviceSettingsPreferenceConst.PREF_UM25_SHOW_THRESHOLD, "100"));
}
@Override
public void onSendConfiguration(String config) {
readPreferences();
}
@Override
protected TransactionBuilder initializeDevice(TransactionBuilder builder) {
preferences = GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress());
readPreferences();
return builder
.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZING, getContext()))
.notify(getCharacteristic(UUID.fromString(UUID_CHAR)), true)
@ -132,6 +161,48 @@ public class UM25Support extends UM25BaseSupport {
return true;
}
private void handleCurrentNotification(int currentMa){
logger.debug("current: " + currentMa);
if(!notifyOnCurrentThreshold){
return;
}
boolean isOverNotificationCurrent = currentMa > notificationCurrentThreshold;
long now = System.currentTimeMillis();
if(isOverNotificationCurrent){
lastOverThresholdTimestamp = now;
wasOverNotificationCurrent = true;
return;
}
long deltaSinceOverThreshold = now - lastOverThresholdTimestamp;
if(deltaSinceOverThreshold < 5000){
// must be below threshold for over certain time before triggering notification
return;
}
if(wasOverNotificationCurrent){
// handle change from over threshold to below threshold
wasOverNotificationCurrent = false;
Intent activityIntent = new Intent(getContext(), DataActivity.class);
Notification notification = new NotificationCompat.Builder(getContext(), GB.NOTIFICATION_CHANNEL_HIGH_PRIORITY_ID)
.setSmallIcon(R.drawable.ic_notification_low_battery)
.setContentTitle("USB current")
.setContentText("USB current below threshold")
.setContentIntent(PendingIntent.getActivity(getContext(), 0, activityIntent, PendingIntent.FLAG_CANCEL_CURRENT))
.build();
GB.notify(
GB.NOTIFICATION_ID_LOW_BATTERY,
notification,
getContext()
);
}
}
private void handlePayload(ByteBuffer payload){
String payloadString = StringUtils.bytesToHex(payload.array());
payloadString = payloadString.replaceAll("(..)", "$1 ");
@ -163,8 +234,6 @@ public class UM25Support extends UM25BaseSupport {
int chargingSeconds = payload.getInt(112);
int cableResistance = payload.getInt(122);
logger.debug("variable: " + chargedCurrent);
MeasurementData data = new MeasurementData(
voltage,
current,
@ -185,6 +254,8 @@ public class UM25Support extends UM25BaseSupport {
measurementIntent.putExtra(EXTRA_KEY_MEASUREMENT_DATA, data);
handleCurrentNotification(current / 10);
LocalBroadcastManager.getInstance(getContext())
.sendBroadcast(measurementIntent);
}

View File

@ -169,9 +169,9 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport {
case ZeTimeConstants.PREF_HANDMOVE_DISPLAY:
setDisplayOnMovement(builder);
break;
case ZeTimeConstants.PREF_DO_NOT_DISTURB:
case ZeTimeConstants.PREF_DO_NOT_DISTURB_START:
case ZeTimeConstants.PREF_DO_NOT_DISTURB_END:
case DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB:
case DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_START:
case DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_END:
setDoNotDisturb(builder);
break;
case ZeTimeConstants.PREF_CALORIES_TYPE:
@ -183,18 +183,18 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport {
case ZeTimeConstants.PREF_DATE_FORMAT:
setDateFormate(builder);
break;
case ZeTimeConstants.PREF_INACTIVITY_KEY:
case ZeTimeConstants.PREF_INACTIVITY_ENABLE:
case ZeTimeConstants.PREF_INACTIVITY_START:
case ZeTimeConstants.PREF_INACTIVITY_END:
case ZeTimeConstants.PREF_INACTIVITY_THRESHOLD:
case ZeTimeConstants.PREF_INACTIVITY_MO:
case ZeTimeConstants.PREF_INACTIVITY_TU:
case ZeTimeConstants.PREF_INACTIVITY_WE:
case ZeTimeConstants.PREF_INACTIVITY_TH:
case ZeTimeConstants.PREF_INACTIVITY_FR:
case ZeTimeConstants.PREF_INACTIVITY_SA:
case ZeTimeConstants.PREF_INACTIVITY_SU:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_KEY:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_START:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_END:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_MO:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_TU:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_WE:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_TH:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_FR:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_SA:
case DeviceSettingsPreferenceConst.PREF_INACTIVITY_SU:
setInactivityAlert(builder);
break;
case ZeTimeConstants.PREF_SMS_SIGNALING:
@ -215,7 +215,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport {
case ZeTimeConstants.PREF_ZETIME_MIN_HEARTRATE:
setHeartRateLimits(builder);
break;
case ZeTimeConstants.PREF_USER_FITNESS_GOAL:
case DeviceSettingsPreferenceConst.PREF_USER_FITNESS_GOAL:
case ZeTimeConstants.PREF_USER_SLEEP_GOAL:
case ZeTimeConstants.PREF_USER_CALORIES_GOAL:
case ZeTimeConstants.PREF_USER_DISTANCE_GOAL:
@ -1713,10 +1713,10 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport {
private void setDoNotDisturb(TransactionBuilder builder) {
Prefs prefs = GBApplication.getPrefs();
String scheduled = prefs.getString(ZeTimeConstants.PREF_DO_NOT_DISTURB, "off");
String scheduled = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB, "off");
String dndScheduled = getContext().getString(R.string.p_scheduled);
String start = prefs.getString(ZeTimeConstants.PREF_DO_NOT_DISTURB_START, "22:00");
String end = prefs.getString(ZeTimeConstants.PREF_DO_NOT_DISTURB_END, "07:00");
String start = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_START, "22:00");
String end = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_END, "07:00");
DateFormat df_start = new SimpleDateFormat("HH:mm");
DateFormat df_end = new SimpleDateFormat("HH:mm");
Calendar calendar = GregorianCalendar.getInstance();
@ -1817,8 +1817,8 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport {
private void setInactivityAlert(TransactionBuilder builder) {
Prefs prefs = GBApplication.getPrefs();
boolean enabled = prefs.getBoolean(ZeTimeConstants.PREF_INACTIVITY_ENABLE, false);
int threshold = prefs.getInt(ZeTimeConstants.PREF_INACTIVITY_THRESHOLD, 60);
boolean enabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE, false);
int threshold = prefs.getInt(DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD, 60);
if (threshold > 0xff) {
threshold = 0xff;
@ -1843,21 +1843,21 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport {
};
if (enabled) {
String start = prefs.getString(ZeTimeConstants.PREF_INACTIVITY_START, "06:00");
String end = prefs.getString(ZeTimeConstants.PREF_INACTIVITY_END, "22:00");
String start = prefs.getString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_START, "06:00");
String end = prefs.getString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_END, "22:00");
DateFormat df_start = new SimpleDateFormat("HH:mm");
DateFormat df_end = new SimpleDateFormat("HH:mm");
Calendar calendar = GregorianCalendar.getInstance();
Calendar calendar_end = GregorianCalendar.getInstance();
int reps = (1 << 7); // set inactivity active: set bit 7
reps |= (prefs.getBoolean(ZeTimeConstants.PREF_INACTIVITY_MO, false) ? 1 : 0);
reps |= ((prefs.getBoolean(ZeTimeConstants.PREF_INACTIVITY_TU, false) ? 1 : 0) << 1);
reps |= ((prefs.getBoolean(ZeTimeConstants.PREF_INACTIVITY_WE, false) ? 1 : 0) << 2);
reps |= ((prefs.getBoolean(ZeTimeConstants.PREF_INACTIVITY_TH, false) ? 1 : 0) << 3);
reps |= ((prefs.getBoolean(ZeTimeConstants.PREF_INACTIVITY_FR, false) ? 1 : 0) << 4);
reps |= ((prefs.getBoolean(ZeTimeConstants.PREF_INACTIVITY_SA, false) ? 1 : 0) << 5);
reps |= ((prefs.getBoolean(ZeTimeConstants.PREF_INACTIVITY_SU, false) ? 1 : 0) << 6);
reps |= (prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_MO, false) ? 1 : 0);
reps |= ((prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_TU, false) ? 1 : 0) << 1);
reps |= ((prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_WE, false) ? 1 : 0) << 2);
reps |= ((prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_TH, false) ? 1 : 0) << 3);
reps |= ((prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_FR, false) ? 1 : 0) << 4);
reps |= ((prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_SA, false) ? 1 : 0) << 5);
reps |= ((prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_SU, false) ? 1 : 0) << 6);
inactivity[5] = (byte) reps;
@ -2086,12 +2086,12 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport {
String endtime = String.format("%02d:%02d", msg[8], msg[9]);
if (0x1 == msg[5]) {
prefs.putString(ZeTimeConstants.PREF_DO_NOT_DISTURB, "scheduled");
prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB, "scheduled");
} else {
prefs.putString(ZeTimeConstants.PREF_DO_NOT_DISTURB, "off");
prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB, "off");
}
prefs.putString(ZeTimeConstants.PREF_DO_NOT_DISTURB_START, starttime);
prefs.putString(ZeTimeConstants.PREF_DO_NOT_DISTURB_END, endtime);
prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_START, starttime);
prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_END, endtime);
prefs.apply();
}
@ -2147,45 +2147,45 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport {
String starttime = String.format("%02d:%02d", msg[7], msg[8]);
String endtime = String.format("%02d:%02d", msg[9], msg[10]);
prefs.putString(ZeTimeConstants.PREF_INACTIVITY_THRESHOLD, Integer.toString(msg[6]));
prefs.putString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD, Integer.toString(msg[6]));
if (0 != msg[5]) {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_ENABLE, true);
prefs.putString(ZeTimeConstants.PREF_INACTIVITY_START, starttime);
prefs.putString(ZeTimeConstants.PREF_INACTIVITY_END, endtime);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE, true);
prefs.putString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_START, starttime);
prefs.putString(DeviceSettingsPreferenceConst.PREF_INACTIVITY_END, endtime);
if (0 != (msg[5] & (1 << 0))) {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_MO, true);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_MO, true);
} else {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_MO, false);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_MO, false);
}
if (0 != (msg[5] & (1 << 1))) {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_TU, true);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_TU, true);
} else {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_TU, false);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_TU, false);
}
if (0 != (msg[5] & (1 << 2))) {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_WE, true);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_WE, true);
} else {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_WE, false);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_WE, false);
}
if (0 != (msg[5] & (1 << 3))) {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_TH, true);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_TH, true);
} else {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_TH, false);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_TH, false);
}
if (0 != (msg[5] & (1 << 4))) {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_FR, true);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_FR, true);
} else {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_FR, false);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_FR, false);
}
if (0 != (msg[5] & (1 << 5))) {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_SA, true);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_SA, true);
} else {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_SA, false);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_SA, false);
}
if (0 != (msg[5] & (1 << 6))) {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_SU, true);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_SU, true);
} else {
prefs.putBoolean(ZeTimeConstants.PREF_INACTIVITY_SU, false);
prefs.putBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_SU, false);
}
}
prefs.apply();

View File

@ -44,7 +44,7 @@
android:paddingRight="@dimen/about_margin">
<TextView
android:id="@+id/about_desc"
android:id="@+id/about_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/about_description" />

View File

@ -17,8 +17,8 @@
<string name="pref_title_charts_range">Обхват на Графиката</string>
<string name="pref_charts_range_on">Обхвата е Месец</string>
<string name="pref_charts_range_off">Обхвата е Седмица</string>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Настройки</string>
<string name="action_debug">Дебъгване</string>
<string name="action_quit">Изход</string>
@ -228,7 +228,7 @@
<string name="tap_connected_device_for_vibration">Докоснете свързаното устройство за вибрации</string>
<string name="tap_a_device_to_connect">Докоснете устройство за свързване</string>
<string name="cannot_connect_bt_address_invalid_">Не може да се установи връзка. Грешен Bluetooth адрес\?</string>
<string name="gadgetbridge_running">Gadgetbridge работи</string>
<string name="gadgetbridge_running_generic">Gadgetbridge работи</string>
<string name="installing_binary_d_d">Инсталиране на двоичен файл %1$d/%2$d</string>
<string name="installation_failed_">Инсталацията пропадна</string>
<string name="installation_successful">Инсталирано</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Configuració</string>
<string name="action_debug">Depuració</string>
<string name="action_quit">Surt</string>
@ -174,7 +174,7 @@
<string name="tap_connected_device_for_vibration">Toca l\'aparell per fer-lo vibrar</string>
<string name="tap_a_device_to_connect">Toca un aparell per connectar-hi</string>
<string name="cannot_connect_bt_address_invalid_">No es pot connectar. Potser la direcció Bluetooth és incorrecta\?</string>
<string name="gadgetbridge_running">El Gadgetbridge està funcionant</string>
<string name="gadgetbridge_running_generic">El Gadgetbridge està funcionant</string>
<string name="installing_binary_d_d">S\'està instal·lant el binari %1$d/%2$d</string>
<string name="installation_failed_">La instal·lació ha fallat</string>
<string name="installation_successful">Instal·lat</string>
@ -908,7 +908,7 @@
<string name="about_additional_device_support">Support d\'aparell addicional</string>
<string name="about_contributors">Col·laboradors</string>
<string name="about_core_team_title">Equip principal (en ordre de primera contribució de codi)</string>
<string name="about_description">Substitut lliure, copyleft i sense núvol per a les aplicacions Android de codi tancat dels fabricants dels aparells.</string>
<string name="about_description_generic">Substitut lliure, copyleft i sense núvol per a les aplicacions Android de codi tancat dels fabricants dels aparells.</string>
<string name="menuitem_dnd">No molestis</string>
<string name="menuitem_spo2">SpO2</string>
<string name="menuitem_pai">PAI</string>
@ -995,7 +995,7 @@
<string name="device_requires_key">ES REQUEREIX CLAU</string>
<string name="require_location_provider">La ubicació ha d\'estar activada</string>
<string name="about_links">Enllaços</string>
<string name="about_activity_title">Quant a Gadgetbridge</string>
<string name="about_activity_title_generic">Quant a Gadgetbridge</string>
<string name="about_version">Versió %s</string>
<string name="about_title">Quant a</string>
<string name="hr_widget_last_notification">Última notificació</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Nastavení</string>
<string name="action_debug">Ladění</string>
<string name="action_quit">Ukončit</string>
@ -154,7 +154,7 @@
<string name="tap_connected_device_for_vibration">Dotkněte se zařízení pro vibrace</string>
<string name="tap_a_device_to_connect">Dotkněte se zařízení pro připojení</string>
<string name="cannot_connect_bt_address_invalid_">Nelze připojit. Je BT adresa v pořádku?</string>
<string name="gadgetbridge_running">Gadgetbridge běží</string>
<string name="gadgetbridge_running_generic">Gadgetbridge běží</string>
<string name="installing_binary_d_d">Instaluji soubor %1$d/%2$d</string>
<string name="installation_failed_">Instalace selhala</string>
<string name="installation_successful">Instalace úspěšná</string>
@ -915,8 +915,8 @@
<string name="about_additional_device_support">Podpora dalších zařízení</string>
<string name="about_contributors">Přispěvatelé</string>
<string name="about_core_team_title">Centrální tým (v pořadí příspěvku prvního kódu)</string>
<string name="about_description">Svobodná a lokální náhrada za uzavřenou aplikaci vašich hodinek/náramku.</string>
<string name="about_activity_title">O aplikaci Gadgetbridge</string>
<string name="about_description_generic">Svobodná a lokální náhrada za uzavřenou aplikaci vašich hodinek/náramku.</string>
<string name="about_activity_title_generic">O aplikaci Gadgetbridge</string>
<string name="about_title">O aplikaci</string>
<string name="menuitem_worldclock">Světový Čas</string>
<string name="pref_title_weather_summary">Použito s poskytovatelem počasí LineageOS. Ostatní verze Androidu vyžadují \"Weather Notification\" app. Více informací naleznete na Gadgetbridge wiki.</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Einstellungen</string>
<string name="action_debug">Debug</string>
<string name="action_quit">Beenden</string>
@ -161,7 +161,7 @@
<string name="tap_connected_device_for_vibration">Tippe auf das verbundene Gerät, um es vibrieren zu lassen</string>
<string name="tap_a_device_to_connect">Tippe auf ein Gerät, um eine Verbindung herzustellen</string>
<string name="cannot_connect_bt_address_invalid_">Keine Verbindung möglich. Bluetooth-Adresse ungültig\?</string>
<string name="gadgetbridge_running">Gadgetbridge läuft</string>
<string name="gadgetbridge_running_generic">Gadgetbridge läuft</string>
<string name="installing_binary_d_d">Binärdatei %1$d/%2$d wird installiert</string>
<string name="installation_failed_">Installation fehlgeschlagen</string>
<string name="installation_successful">Installiert</string>
@ -923,8 +923,8 @@
<string name="about_additional_device_support">Unterstützung zusätzlicher Geräte</string>
<string name="about_contributors">Beitragende</string>
<string name="about_core_team_title">Kernteam (Reihenfolge der ersten Mitwirkung am Code)</string>
<string name="about_description">Cloudloser freier Ersatz für proprietäre Android-Gadget-Apps der Hersteller.</string>
<string name="about_activity_title">Über Gadgetbridge</string>
<string name="about_description_generic">Cloudloser freier Ersatz für proprietäre Android-Gadget-Apps der Hersteller.</string>
<string name="about_activity_title_generic">Über Gadgetbridge</string>
<string name="about_title">Über</string>
<string name="pref_title_weather_summary">Wird für den LineageOS Wetterdienst genutzt, andere Android-Versionen müssen eine Anwendung wie Weather notification nutzen. Mehr Informationen gibt es im Gadgetbride-Wiki.</string>
<string name="menuitem_worldclock">Weltzeituhr</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Ρυθμίσεις</string>
<string name="action_debug">Αποσφαλμάτωση</string>
<string name="action_quit">Έξοδος</string>
@ -174,7 +174,7 @@
<string name="tap_connected_device_for_vibration">Πατήστε τη συνδεδεμένη συσκευή για δόνηση</string>
<string name="tap_a_device_to_connect">Πατήστε μία συσκευή για να συνδεθεί</string>
<string name="cannot_connect_bt_address_invalid_">Δεν μπορεί να γίνει σύνδεση. Μήπως δεν είναι έγκυρη η διεύθυνση Bluetooth;</string>
<string name="gadgetbridge_running">Το Gadgetbridge εκτελείται</string>
<string name="gadgetbridge_running_generic">Το Gadgetbridge εκτελείται</string>
<string name="installing_binary_d_d">Γίνεται εγκατάσταση των βιβλιοθηκών %1$d/%2$d</string>
<string name="installation_failed_">Η εγκατάσταση απέτυχε</string>
<string name="installation_successful">Εγκατεστημένο</string>
@ -901,8 +901,8 @@
<string name="about_additional_device_support">Πρόσθετη υποστήριξη συσκευών</string>
<string name="about_contributors">Συντελεστές</string>
<string name="about_core_team_title">Βασική ομάδα (κατά σειρά μεγαλύτερης συνεισφοράς κώδικα)</string>
<string name="about_description">Μια δωρεάν, ελεύθερου κώδικα και χωρίς πρόσβαση στο διαδίκτυο εφαρμογή Android για να αντικαταστήσει τις υπάρχουσες εφαρμογές κλειστού κώδικα των κατασκευαστών του smartwatch σας.</string>
<string name="about_activity_title">Σχετικά με το Gadgetbridge</string>
<string name="about_description_generic">Μια δωρεάν, ελεύθερου κώδικα και χωρίς πρόσβαση στο διαδίκτυο εφαρμογή Android για να αντικαταστήσει τις υπάρχουσες εφαρμογές κλειστού κώδικα των κατασκευαστών του smartwatch σας.</string>
<string name="about_activity_title_generic">Σχετικά με το Gadgetbridge</string>
<string name="about_title">Σχετικά</string>
<string name="menuitem_worldclock">Παγκόσμιο Ρολόι</string>
<string name="devicetype_amazfit_trex">Amazfit T-Rex</string>

View File

@ -684,7 +684,7 @@
<string name="installation_successful">Installed</string>
<string name="installation_failed_">Installation failed</string>
<string name="installing_binary_d_d">Installing binary %1$d/%2$d</string>
<string name="gadgetbridge_running">Gadgetbridge running</string>
<string name="gadgetbridge_running_generic">Gadgetbridge running</string>
<string name="cannot_connect_bt_address_invalid_">Cannot connect. Bluetooth address invalid\?</string>
<string name="tap_a_device_to_connect">Tap a device to connect</string>
<string name="tap_connected_device_for_vibration">Tap connected device for vibration</string>
@ -853,8 +853,8 @@
<string name="action_quit">Quit</string>
<string name="action_debug">Debug</string>
<string name="action_settings">Settings</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="pref_qhybrid_save_raw_activity_files">Save raw activity files</string>
<string name="menuitem_workout">Workout</string>
<string name="menuitem_eventreminder">Event Reminder</string>
@ -1124,7 +1124,7 @@
<string name="activity_summaries_statistics">Statistics</string>
<string name="pref_title_upper_button_function_short">Upper Button short</string>
<string name="pref_title_upper_button_function_double">Upper Button double</string>
<string name="about_activity_title">About Gadgetbridge</string>
<string name="about_activity_title_generic">About Gadgetbridge</string>
<string name="gpx_receiver_files_received">GPX file(s) received:</string>
<string name="gpx_receiver_overwrite_some_files">Some file(s) already exist. Overwrite\?</string>
<string name="about_additional_contributions">Many thanks to all unlisted contributors for contributing code, translations, support, ideas, motivation, bug reports, money… ✊</string>
@ -1276,7 +1276,7 @@
<string name="menuitem_temperature">Temperature</string>
<string name="about_version">Version %s</string>
<string name="about_title">About</string>
<string name="about_description">Cloudless copylefted libre replacement for closed source Android gadget apps from vendors.</string>
<string name="about_description_generic">Cloudless copylefted libre replacement for closed source Android gadget apps from vendors.</string>
<string name="sports_activity_quick_filter_30days">30 days</string>
<string name="sports_activity_quick_filter_select">Time period</string>
<string name="device_is_currently_bonded">Already bonded</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Configuración</string>
<string name="action_debug">Depuración</string>
<string name="action_quit">Salir</string>
@ -161,7 +161,7 @@
<string name="tap_connected_device_for_vibration">Toque el dispositivo conectado para la vibración</string>
<string name="tap_a_device_to_connect">Toca un dispositivo para conectarlo</string>
<string name="cannot_connect_bt_address_invalid_">No se puede conectar. ¿Dirección BT incorrecta?</string>
<string name="gadgetbridge_running">Gadgetbridge funcionando</string>
<string name="gadgetbridge_running_generic">Gadgetbridge funcionando</string>
<string name="installing_binary_d_d">Instalando binario %1$d/%2$d</string>
<string name="installation_failed_">Instalación fallida</string>
<string name="installation_successful">Instalado</string>
@ -1093,8 +1093,8 @@
<string name="about_additional_device_support">Soporte de dispositivos adicionales</string>
<string name="about_contributors">Colaboradores</string>
<string name="about_core_team_title">Equipo principal (por orden de primera contribución de código)</string>
<string name="about_description">Sustitución sin nube y con copyleft de las aplicaciones de código cerrado para Android de los proveedores.</string>
<string name="about_activity_title">Acerca de Gadgetbridge</string>
<string name="about_description_generic">Sustitución sin nube y con copyleft de las aplicaciones de código cerrado para Android de los proveedores.</string>
<string name="about_activity_title_generic">Acerca de Gadgetbridge</string>
<string name="about_version">Versión %s</string>
<string name="about_title">Acerca de</string>
<string name="hr_widget_last_notification">Última notificación</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Seaded</string>
<string name="action_debug">Silumine</string>
<string name="action_quit">Välju</string>
@ -243,7 +243,7 @@
<string name="tap_connected_device_for_vibration">Puuduta ühendatud seadet värina tekitamiseks</string>
<string name="tap_a_device_to_connect">Puuduta seadet, et ühendada</string>
<string name="cannot_connect_bt_address_invalid_">Ei saa ühendust. Vigane bluetooth aadress\?</string>
<string name="gadgetbridge_running">Gadgetbridge töötab</string>
<string name="gadgetbridge_running_generic">Gadgetbridge töötab</string>
<string name="installing_binary_d_d">Binaarfaili %1$d/%2$d paigaldamine</string>
<string name="installation_failed_">Paigaldamine nurjus</string>
<string name="installation_successful">Paigaldatud</string>
@ -746,8 +746,8 @@
<string name="about_additional_device_support">Täiendavate seadmete tugi</string>
<string name="about_contributors">Kaasaaitajad</string>
<string name="about_core_team_title">Tuumiktiim (järjestatud esimese koodirea kuupäeva järgi)</string>
<string name="about_description">Tasuta ja pilvevaba asendus teie kantavate nutiseadmete tootjate rakendustele.</string>
<string name="about_activity_title">Gadgetbridge\'ist</string>
<string name="about_description_generic">Tasuta ja pilvevaba asendus teie kantavate nutiseadmete tootjate rakendustele.</string>
<string name="about_activity_title_generic">Gadgetbridge\'ist</string>
<string name="about_title">Rakendusest</string>
<string name="pref_title_lower_button_function">Alumine nupp</string>
<string name="pref_title_middle_button_function">Keskmine nupp</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">گجت‌بریج</string>
<string name="title_activity_controlcenter">گجت‌بریج</string>
<string name="application_name_generic">گجت‌بریج</string>
<string name="title_activity_controlcenter_generic">گجت‌بریج</string>
<string name="action_settings">تنظیمات</string>
<string name="action_debug">اشکال‌زدایی</string>
<string name="action_quit">خروج</string>

View File

@ -3,8 +3,8 @@
<string name="action_settings">Asetukset</string>
<string name="controlcenter_fetch_activity_data">Synkronoi</string>
<string name="controlcenter_find_device">Löydä kadonnut laite</string>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_quit">Lopeta</string>
<string name="action_donate">Lahjoita</string>
<string name="controlcenter_take_screenshot">Ota ruutukaappaus</string>
@ -447,7 +447,7 @@
<string name="live_activity_steps_history">Askeleiden historia</string>
<string name="live_activity_total_steps">Kokonaisaskeleet</string>
<string name="about_title">Tietoja</string>
<string name="about_activity_title">Tietoja Gadgetbridgestä</string>
<string name="about_activity_title_generic">Tietoja Gadgetbridgestä</string>
<string name="activity_filter_date_from">Alkaen</string>
<string name="activity_filter_date_to">Päättyen</string>
<string name="pref_screen_notification_profile_missed_call">Vastaamatta jääneen puhelun ilmoitus</string>

View File

@ -129,8 +129,8 @@
<string name="calories">Calories</string>
<string name="miband_prefs_vibration">Vibration</string>
<string name="vibration_profile_long">Long</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<plurals name="widget_alarm_target_hours">
<item quantity="one">%d heure</item>
<item quantity="other">%d heures</item>
@ -697,7 +697,7 @@
<string name="installation_successful">Installé</string>
<string name="installation_failed_">Échec de l\'installation</string>
<string name="installing_binary_d_d">Installation du binaire %1$d/%2$d</string>
<string name="gadgetbridge_running">Gadgetbridge est en fonctionnement</string>
<string name="gadgetbridge_running_generic">Gadgetbridge est en fonctionnement</string>
<string name="tap_a_device_to_connect">Tapez sur le périphérique pour le connecter</string>
<string name="tap_connected_device_for_vibration">Cliquez sur connecter pour envoyer une vibration</string>
<string name="tap_connected_device_for_activity">Cliquez sur l\'appareil pour ouvrir le gestionnaire dactivité</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Paramètres</string>
<string name="action_debug">Déboguer</string>
<string name="action_quit">Quitter</string>
@ -161,7 +161,7 @@
<string name="tap_connected_device_for_vibration">Cliquez sur connecter pour envoyer une vibration</string>
<string name="tap_a_device_to_connect">Tapez sur le périphérique pour le connecter</string>
<string name="cannot_connect_bt_address_invalid_">Connexion impossible. Ladresse Bluetooth est-elle valide ?</string>
<string name="gadgetbridge_running">Gadgetbridge est en fonctionnement</string>
<string name="gadgetbridge_running_generic">Gadgetbridge est en fonctionnement</string>
<string name="installing_binary_d_d">Installation du binaire %1$d/%2$d</string>
<string name="installation_failed_">Échec de l\'installation</string>
<string name="installation_successful">Installé</string>
@ -1017,8 +1017,8 @@ Temps de sommeil préféré en heures</string>
<string name="about_additional_device_support">Support d\'appareil supplémentaire</string>
<string name="about_contributors">Contributeurs</string>
<string name="about_core_team_title">Équipe principal (dans l\'ordre de la première contribution au code)</string>
<string name="about_description">Un remplaçant libre et sans cloud aux applications Android propriétaires des fabricants de vos bracelets.</string>
<string name="about_activity_title">A propos de Gadgetbridge</string>
<string name="about_description_generic">Un remplaçant libre et sans cloud aux applications Android propriétaires des fabricants de vos bracelets.</string>
<string name="about_activity_title_generic">A propos de Gadgetbridge</string>
<string name="about_title">A propos</string>
<string name="menuitem_worldclock">Horloge mondiale</string>
<string name="menuitem_stress">Stress</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Axustes</string>
<string name="action_debug">Depuración</string>
<string name="action_quit">Saír</string>
@ -143,7 +143,7 @@
<string name="tap_connected_device_for_vibration">Toque nun dispositivo conectado para facelo Vibrar</string>
<string name="tap_a_device_to_connect">Toque nun dispositivo para conectar</string>
<string name="cannot_connect_bt_address_invalid_">Non foi posíbel conectar. Enderezo Bluetooth inválido?</string>
<string name="gadgetbridge_running">Gadgetbridge en execución</string>
<string name="gadgetbridge_running_generic">Gadgetbridge en execución</string>
<string name="installing_binary_d_d">Instalando binario %1$d/%2$d</string>
<string name="installation_failed_">Fallou a instalación</string>
<string name="installation_successful">Instalado</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">הגדרות</string>
<string name="action_debug">ניפוי שגיאות</string>
<string name="action_quit">יציאה</string>
@ -147,7 +147,7 @@
<string name="tap_connected_device_for_vibration">נקישה על ההתקן המחובר לרטט</string>
<string name="tap_a_device_to_connect">יש לגעת בהתקן כדי להתחבר</string>
<string name="cannot_connect_bt_address_invalid_">לא ניתן להתחבר. כתובת ה־Bluetooth שגויה?</string>
<string name="gadgetbridge_running">Gadgetbridge פעיל</string>
<string name="gadgetbridge_running_generic">Gadgetbridge פעיל</string>
<string name="installing_binary_d_d">התקנת הבינרי %1$d/%2$d</string>
<string name="installation_failed_">ההתקנה נכשלה</string>
<string name="installation_successful">ההתקנה הצליחה</string>
@ -913,8 +913,8 @@
<string name="about_additional_device_support">תמיכה במכשירים נוספים</string>
<string name="about_contributors">תורמים</string>
<string name="about_core_team_title">צוות הליבה (מסודרים לפי מועד תרומת הקוד הראשונה)</string>
<string name="about_description">חלופה חופשית ונטולת ענן ליישומוני ה־Android לחפיצים עם הקוד הסגור של היצרנים.</string>
<string name="about_activity_title">על אודות Gadgetbridge</string>
<string name="about_description_generic">חלופה חופשית ונטולת ענן ליישומוני ה־Android לחפיצים עם הקוד הסגור של היצרנים.</string>
<string name="about_activity_title_generic">על אודות Gadgetbridge</string>
<string name="about_title">על אודות</string>
<string name="pref_title_weather_summary">משמש לספק מזג האוויר של LineageOS, גרסאות אחרות של Android צריכות להשתמש ביישומונים כמו „התראות מזג אוויר”. אפשר למצוא מידע נוסף בוויקי של Gadgetbridge.</string>
<string name="menuitem_worldclock">שעון עולמי</string>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="male">Muško</string>
<string name="female">Žensko</string>
<string name="other">Ostalo</string>
@ -28,7 +28,7 @@
<string name="controlcenter_set_alias">Postavi pseudonim</string>
<string name="action_quit">Izlaz</string>
<string name="action_debug">Debug</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="dbmanagementactivity_delete_old_activitydb_confirmation">Stvarno izbrisati staru bazu podataka aktivnosti\? Podaci aktivnosti koji nisu uvezeni će se izgubiti.</string>
<string name="dbmanagementactivity_delete_old_activity_db">Izbrisati staru bazu podataka aktivnosti\?</string>
<string name="dbmanagementactivity_database_successfully_deleted">Podaci izbrisani.</string>
@ -1268,8 +1268,8 @@
<string name="add_widget">Dodaj widget</string>
<string name="appwidget_setting_alarm">Postavljanje alarma za %1$02d:%2$02d</string>
<string name="about_version">Verzija %s</string>
<string name="about_activity_title">O Gadgetbridge</string>
<string name="about_description">Zamjena za libre bez oblaka bez kopiranja za zatvorene aplikacije za Android gadgete od dobavljača.</string>
<string name="about_activity_title_generic">O Gadgetbridge</string>
<string name="about_description_generic">Zamjena za libre bez oblaka bez kopiranja za zatvorene aplikacije za Android gadgete od dobavljača.</string>
<string name="about_core_team_title">Osnovni tim (po redoslijedu doprinosa prvog koda)</string>
<string name="qhybrid_title_watchface">Konfiguracija izgleda sata</string>
<string name="button_watchface_select_image">Promjena pozadinske slike</string>
@ -1358,7 +1358,7 @@
\n
\n
\n Ovaj firmware je za HW reviziju: %s</string>
<string name="gadgetbridge_running">Gadgetbridge je pokrenut</string>
<string name="gadgetbridge_running_generic">Gadgetbridge je pokrenut</string>
<string name="tap_a_device_to_connect">Dodirnite uređaj za povezivanje</string>
<string name="test">Test</string>
<string name="not_connected">Nije povezano</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge </string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge </string>
<string name="action_settings">Beállítások</string>
<string name="action_debug">Hibakeresés</string>
<string name="action_quit">Kilépés</string>
@ -157,7 +157,7 @@
<string name="tap_connected_device_for_vibration">Koppints az eszközre a rezgetéshez.</string>
<string name="tap_a_device_to_connect">Koppints az eszközre a csatlakozáshoz</string>
<string name="cannot_connect_bt_address_invalid_">Nem lehet csatlakozni. Rossz Bluetooth cím?</string>
<string name="gadgetbridge_running">A Gadgetbridge fut</string>
<string name="gadgetbridge_running_generic">A Gadgetbridge fut</string>
<string name="installing_binary_d_d">%1$d/%2$d bináris telepítése</string>
<string name="installation_failed_">Sikertelen telepítés</string>
<string name="installation_successful">Telepítve</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Pengaturan</string>
<string name="action_quit">Keluar</string>
<string name="action_donate">Donasi</string>
@ -175,7 +175,7 @@
<string name="hr_widget_calories">Kalori</string>
<string name="gpx_receiver_activity_title">Penerima GPX Gadgetbridge</string>
<string name="require_location_provider">Lokasi harus diaktifkan</string>
<string name="about_activity_title">Tentang Gadgetbridge</string>
<string name="about_activity_title_generic">Tentang Gadgetbridge</string>
<string name="about_version">Versi %s</string>
<string name="about_title">Tentang</string>
<string name="about_links">Tautan</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Impostazioni</string>
<string name="action_debug">Debug</string>
<string name="action_quit">Esci</string>
@ -158,7 +158,7 @@
<string name="tap_connected_device_for_vibration">Tocca il dispositivo connesso per la vibrazione</string>
<string name="tap_a_device_to_connect">tocca il dispositivo a cui connettersi</string>
<string name="cannot_connect_bt_address_invalid_">Impossibile connettersi. Indirizzo Bluetooth non valido?</string>
<string name="gadgetbridge_running">Gadgetbridge in esecuzione</string>
<string name="gadgetbridge_running_generic">Gadgetbridge in esecuzione</string>
<string name="installing_binary_d_d">Installazione del binario %1$d/%2$d</string>
<string name="installation_failed_">Installazione fallita</string>
<string name="installation_successful">Installazione conclusa con successo</string>
@ -884,8 +884,8 @@
<string name="about_additional_device_support">Supporto a dispositivi aggiuntivi</string>
<string name="about_contributors">Contributori</string>
<string name="about_core_team_title">Team principale (ordinati in base al primo contributo di codice)</string>
<string name="about_description">Un\'alternativa gratuita, libera e senza cloud alle applicazioni Android a sorgente chiusa del tuo dispositivo.</string>
<string name="about_activity_title">Su Gadgetbridge</string>
<string name="about_description_generic">Un\'alternativa gratuita, libera e senza cloud alle applicazioni Android a sorgente chiusa del tuo dispositivo.</string>
<string name="about_activity_title_generic">Su Gadgetbridge</string>
<string name="about_title">Informazioni</string>
<string name="hr_widget_last_notification">Ultima notifica</string>
<string name="pref_qhybrid_save_raw_activity_files">Salva i dati raw (grezzi) delle attività</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ガジェットブリッジ</string>
<string name="title_activity_controlcenter">ガジェットブリッジ</string>
<string name="application_name_generic">ガジェットブリッジ</string>
<string name="title_activity_controlcenter_generic">ガジェットブリッジ</string>
<string name="action_settings">設定</string>
<string name="action_debug">デバッグ</string>
<string name="action_quit">終了</string>
@ -161,7 +161,7 @@
<string name="tap_connected_device_for_vibration">バイブレーションの接続されたデバイスをタップ</string>
<string name="tap_a_device_to_connect">接続するデバイスをタップ</string>
<string name="cannot_connect_bt_address_invalid_">接続できません。 Bluetoothアドレスが無効ですか\?</string>
<string name="gadgetbridge_running">ガジェットブリッジは実行中</string>
<string name="gadgetbridge_running_generic">ガジェットブリッジは実行中</string>
<string name="installing_binary_d_d">バイナリーのインストール中 %1$d/%2$d</string>
<string name="installation_failed_">インストールに失敗しました</string>
<string name="installation_successful">インストールに成功しました</string>
@ -708,7 +708,7 @@
<string name="distanceMeters">距離</string>
<string name="device_requires_key">キーが必要です</string>
<string name="about_contributors">貢献者</string>
<string name="about_activity_title">Gadgetbridgeについて</string>
<string name="about_activity_title_generic">Gadgetbridgeについて</string>
<string name="about_title">について</string>
<string name="hr_widget_last_notification">最終通知</string>
<string name="hr_appname_commute">通勤</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">პარამეტრები</string>
<string name="action_quit">შეწყვეტა</string>
<string name="action_donate">დონაცია</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">가젯브릿지</string>
<string name="title_activity_controlcenter">가젯브릿지</string>
<string name="application_name_generic">가젯브릿지</string>
<string name="title_activity_controlcenter_generic">가젯브릿지</string>
<string name="action_settings">설정</string>
<string name="action_debug">디버그</string>
<string name="action_quit">종료</string>
@ -77,7 +77,7 @@
<string name="tap_connected_device_for_app_mananger">연결된 기기를 선택해 앱 관리자 실행</string>
<string name="tap_a_device_to_connect">기기를 선택해 연결</string>
<string name="cannot_connect_bt_address_invalid_">연결할 수 없습니다. 블루투스 주소가 올바르지 않은 것 같습니다\?</string>
<string name="gadgetbridge_running">가젯브릿지 실행중</string>
<string name="gadgetbridge_running_generic">가젯브릿지 실행중</string>
<string name="installing_binary_d_d">바이너리 설치중: %1$d/%2$d</string>
<string name="installation_failed_">설치 실패</string>
<string name="installation_successful">설치됨</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Nustatymai</string>
<string name="action_debug">Šalinti riktus</string>
<string name="action_quit">Išeiti</string>
@ -167,7 +167,7 @@
<string name="bluetooth_is_not_supported_">Bluetooth nepalaikomas.</string>
<string name="bluetooth_is_disabled_">Bluetooth išjungtas.</string>
<string name="tap_a_device_to_connect">Bagstelėkite įrenginį, kad prisijungtumėte</string>
<string name="gadgetbridge_running">Gadgetbridge paleistas</string>
<string name="gadgetbridge_running_generic">Gadgetbridge paleistas</string>
<string name="installation_successful">Instaluota</string>
<string name="title_activity_discovery">Įrenginio paieška</string>
<string name="discovery_stop_scanning">Stabdyti skenavimą</string>

View File

@ -78,8 +78,8 @@
<string name="action_quit">പുറത്തു കടക്കുക</string>
<string name="action_debug">തെറ്റുകൾ തിരുത്തുക</string>
<string name="action_settings">ക്രമീകരണങ്ങൾ</string>
<string name="title_activity_controlcenter">ഗാഡ്ജക്‌റ്റ് ബ്രിഡ്ജ്</string>
<string name="app_name">ഗാഡ്ജക്‌റ്റ് ബ്രിഡ്ജ്</string>
<string name="title_activity_controlcenter_generic">ഗാഡ്ജക്‌റ്റ് ബ്രിഡ്ജ്</string>
<string name="application_name_generic">ഗാഡ്ജക്‌റ്റ് ബ്രിഡ്ജ്</string>
<string name="sonyswr12_settings_low_vibration_summary">ബാൻഡിൽ വൈബ്രേഷന്റെ കുറഞ്ഞ തീവ്രത പ്രവർത്തനക്ഷമമാക്കുക</string>
<string name="sonyswr12_settings_stamina_summary">പവർ സേവിംഗ് മോഡ് ഹൃദയമിടിപ്പിന്റെ ആനുകാലിക യാന്ത്രിക അളവ് ഓഫുചെയ്യുന്നത് പ്രവർത്തന സമയം വർദ്ധിപ്പിക്കുന്നു</string>
<string name="sonyswr12_settings_alarm_interval_summary">ഇൻസ്റ്റാൾ ചെയ്ത അലാറത്തിന് മുമ്പുള്ള ഇടവേളയാണ് സ്മാർട്ട് അലാറം ഇടവേള. ഈ ഇടവേള ഉപകരണം ഉപയോക്താവിനെ ഉണർത്താൻ ഉറക്കത്തിന്റെ ഭാരം കുറഞ്ഞ ഘട്ടം കണ്ടെത്താൻ ശ്രമിക്കുന്നു</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">ခ်ိန္ညွိရန္</string>
<string name="action_debug">ျပစ္ခ်က္</string>
<string name="action_quit">ထြက္မည္</string>

View File

@ -39,8 +39,8 @@
<string name="title_activity_calblacklist">Svartelistede kalendere</string>
<string name="title_activity_fw_app_insaller">Fastvare-/program-installerer</string>
<string name="fw_upgrade_notice">Du er i ferd med å installere %s.</string>
<string name="app_name">Gadgetbru</string>
<string name="title_activity_controlcenter">Gadgetbru</string>
<string name="application_name_generic">Gadgetbru</string>
<string name="title_activity_controlcenter_generic">Gadgetbru</string>
<string name="controlcenter_delete_device_dialogmessage">Dette vil slette enheten og all tilknyttet data!</string>
<string name="fw_upgrade_notice_amazfitbip">Du er i ferd med å installere %s-fastvaren på din Amazfit Bip.
\n
@ -165,7 +165,7 @@
<string name="tap_connected_device_for_vibration">Trykk på tilkoblet enhet for vibrasjon</string>
<string name="tap_a_device_to_connect">Trykk på en enhet for å koble til</string>
<string name="cannot_connect_bt_address_invalid_">Kan ikke koble til. Ugyldig Blåtannsadresse?</string>
<string name="gadgetbridge_running">Gadgetbro kjører</string>
<string name="gadgetbridge_running_generic">Gadgetbro kjører</string>
<string name="installing_binary_d_d">Installerer binærfil %1$d/%2$d</string>
<string name="installation_failed_">Installasjon mislyktes</string>
<string name="installation_successful">Installert</string>
@ -902,7 +902,7 @@
<string name="error_background_service">Klarte ikke å starte bakgrunnstjeneste</string>
<string name="about_additional_device_support">Ytterligere enhetsstøtte</string>
<string name="about_contributors">Bidragsytere</string>
<string name="about_activity_title">Om Gadgetbridge</string>
<string name="about_activity_title_generic">Om Gadgetbridge</string>
<string name="about_title">Om</string>
<string name="menuitem_worldclock">Verdensklokke</string>
<string name="menuitem_stress">Stress</string>
@ -1034,7 +1034,7 @@
<string name="sonyswr12_settings_low_vibration_summary">Aktiver lav vibrasjonsintensitet på båndet</string>
<string name="sonyswr12_settings_stamina_summary">Strømsparingsmodus slår av periodisk automatisk måling av hjertefrekvensen og øker dermed arbeidstiden</string>
<string name="sonyswr12_settings_alarm_interval_summary">Smart alarmintervall er intervall før installert alarm. I dette intervallet prøver enheten å oppdage den letteste søvnfasen for å våkne brukeren</string>
<string name="about_description">Skyfri, gemenhetslig fri erstatning for den lukkede motsatsen for dine Android-slaveenheter.</string>
<string name="about_description_generic">Skyfri, gemenhetslig fri erstatning for den lukkede motsatsen for dine Android-slaveenheter.</string>
<string name="pref_check_permission_status_summary">Sjekk og forespør tilganger selv om de ikke trengs umiddelbart. Skru av dette kun hvis enhetene dine ikke støtter noen av disse funksjonene. Å ikke innvilge tilganger kan forårsake problemer!</string>
<string name="companiondevice_pairing_details">Skrur på slaveenhets-API (funker kun på Android 8 og høyere, og tilknytningen må settes opp på ny med Gadgetbro), noe som øker påliteligheten hvis tjenester må startes på ny i bakgrunnen</string>
<string name="error_version_check_extreme_caution">Advarsel: Kunne ikke sjekke versjonsinfo! Du bør ikke fortsette og versjonsnavnet «%s» ble sett.</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Instellingen</string>
<string name="action_debug">Debug</string>
<string name="action_quit">Sluit af</string>
@ -185,7 +185,7 @@
<string name="tap_connected_device_for_vibration">Tap op het verbonden apparaat voor vibratie</string>
<string name="tap_a_device_to_connect">Tap op een apparaat om te verbinden</string>
<string name="cannot_connect_bt_address_invalid_">Kan niet verbinden. Is het Bluetooth adres ongeldig?</string>
<string name="gadgetbridge_running">Gadgetbridge loopt</string>
<string name="gadgetbridge_running_generic">Gadgetbridge loopt</string>
<string name="installing_binary_d_d">Binary installeren %1$d/%2$d</string>
<string name="installation_failed_">Installatie gefaald</string>
<string name="installation_successful">Geïnstalleerd</string>
@ -914,8 +914,8 @@
<string name="about_additional_device_support">Extra apparaatondersteuning</string>
<string name="about_contributors">Bijdragers</string>
<string name="about_core_team_title">Kernteam (in volgorde van eerste codebijdrage)</string>
<string name="about_description">Cloudloze vrije vervanging voor de gesloten Android-applicaties van gadgetfabrikanten.</string>
<string name="about_activity_title">Over Gadgetbridge</string>
<string name="about_description_generic">Cloudloze vrije vervanging voor de gesloten Android-applicaties van gadgetfabrikanten.</string>
<string name="about_activity_title_generic">Over Gadgetbridge</string>
<string name="about_title">Over</string>
<string name="pref_title_weather_summary">Gebruikt voor de LineageOS-weeraanbieder, andere Android versies moeten een app zoals \"Weather notification\" gebruiken. Meer informatie is te vinden in de Gadgetbridge wiki.</string>
<string name="menuitem_worldclock">Wereld Klok</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Ustawienia</string>
<string name="action_debug">Debuguj</string>
<string name="action_quit">Wyjdź</string>
@ -108,7 +108,7 @@
<string name="tap_connected_device_for_app_mananger">Kliknij połączone urządzenie, aby uruchomić menadżer aplikacji</string>
<string name="tap_a_device_to_connect">Dotknij urządzenie aby połączyć</string>
<string name="cannot_connect_bt_address_invalid_">Nie można połączyć. Nieprawidłowy adres Bluetooth\?</string>
<string name="gadgetbridge_running">Gadgetbridge działa</string>
<string name="gadgetbridge_running_generic">Gadgetbridge działa</string>
<string name="installing_binary_d_d">Instalowanie binarki %1$d/%2$d</string>
<string name="installation_failed_">Instalacja nie powiodła się</string>
<string name="installation_successful">Zainstalowano</string>
@ -913,7 +913,7 @@
<string name="hr_widget_last_notification">Ostatnie powiadomienie</string>
<string name="controlcenter_set_alias">Ustaw własną nazwę</string>
<string name="about_contributors">Współtwórcy</string>
<string name="about_activity_title">O Gadgetbridge</string>
<string name="about_activity_title_generic">O Gadgetbridge</string>
<string name="devicetype_amazfit_trex">Amazfit T-Rex</string>
<string name="backstroke">Styl grzbietowy</string>
<string name="freestyle">Styl dowolny</string>
@ -1031,7 +1031,7 @@
<string name="about_links">Linki</string>
<string name="about_additional_contributions">Dziękujemy wszystkim nie notowanym na liście współtwórcom za udostępnienie kodu, tłumaczenia, wsparcie, pomysły, motywację, zgłoszenia błędów, pieniądze… ✊</string>
<string name="about_core_team_title">Zespół główny (w kolejności od pierwszego wkładu w kod aplikacji)</string>
<string name="about_description">Wolny od chmury zamiennik dla aplikacji o zamkniętym kodzie źródłowym dostarczanych przez producentów gadżetów dla systemu Android.</string>
<string name="about_description_generic">Wolny od chmury zamiennik dla aplikacji o zamkniętym kodzie źródłowym dostarczanych przez producentów gadżetów dla systemu Android.</string>
<string name="activity_summary_edit_name_title">Edytuj etykietę</string>
<string name="activity_type_pingpong">Ping-pong</string>
<string name="activity_type_cricket">Krykiet</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Configurações</string>
<string name="action_debug">Depurar</string>
<string name="action_quit">Sair</string>
@ -148,7 +148,7 @@
<string name="tap_connected_device_for_vibration">Toque no dispositivo conectado para vibração</string>
<string name="tap_a_device_to_connect">Toque num dispositivo para ligar</string>
<string name="cannot_connect_bt_address_invalid_">Não foi possível conectar. Endereço de Bluetooth inválido\?</string>
<string name="gadgetbridge_running">Gadgetbridge em execução</string>
<string name="gadgetbridge_running_generic">Gadgetbridge em execução</string>
<string name="installing_binary_d_d">Instalando binário %1$d/%2$d</string>
<string name="installation_failed_">Instalação falhou</string>
<string name="installation_successful">Instalado</string>
@ -920,8 +920,8 @@
<string name="about_additional_device_support">Suporte a dispositivos adicionais</string>
<string name="about_contributors">Contribuidores</string>
<string name="about_core_team_title">Equipe Core (na ordem da primeira contribuição de código)</string>
<string name="about_description">Um substituto livre, protegido por copyleft, sem acesso a nuvem para os aplicativos Android de código fechado dos fornecedores de gadgets.</string>
<string name="about_activity_title">Sobre o Gadgetbridge</string>
<string name="about_description_generic">Um substituto livre, protegido por copyleft, sem acesso a nuvem para os aplicativos Android de código fechado dos fornecedores de gadgets.</string>
<string name="about_activity_title_generic">Sobre o Gadgetbridge</string>
<string name="about_title">Sobre</string>
<string name="pref_title_weather_summary">Usado para o provedor do clima do LineageOS, outras versões do Android precisam usar um aplicativo como o \"Notificação de clima\". Encontrará mais informações no wiki do Gadgetbridge.</string>
<string name="menuitem_worldclock">Relógio mundial</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Definições</string>
<string name="action_debug">Depurar</string>
<string name="action_quit">Sair</string>
@ -156,7 +156,7 @@
<string name="tap_connected_device_for_vibration">Toque no aparelho ligado para o fazer vibrar</string>
<string name="tap_a_device_to_connect">Toque num aparelho para ligar</string>
<string name="cannot_connect_bt_address_invalid_">Não foi possível conectar. Endereço de Bluetooth inválido\?</string>
<string name="gadgetbridge_running">Gadgetbridge a executar</string>
<string name="gadgetbridge_running_generic">Gadgetbridge a executar</string>
<string name="installing_binary_d_d">Instalando binário %1$d/%2$d</string>
<string name="installation_failed_">A instalação falhou</string>
<string name="installation_successful">Instalado</string>
@ -573,8 +573,8 @@
<string name="about_additional_device_support">Suporte a aparelhos adicionais</string>
<string name="about_contributors">Contribuidores</string>
<string name="about_core_team_title">Equipa Core (na ordem da primeira contribuição de código)</string>
<string name="about_description">Um substituto livre, protegido por copyleft, sem acesso a nuvem para as apps Android de código fechado dos fornecedores de gadgets.</string>
<string name="about_activity_title">Sobre o Gadgetbridge</string>
<string name="about_description_generic">Um substituto livre, protegido por copyleft, sem acesso a nuvem para as apps Android de código fechado dos fornecedores de gadgets.</string>
<string name="about_activity_title_generic">Sobre o Gadgetbridge</string>
<string name="about_title">Sobre</string>
<string name="fw_upgrade_notice_amazfit_trex">Está prestes a instalar o firmware %s no seu Amazit T-Rex.
\n

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Setari</string>
<string name="action_debug">Depaneaza</string>
<string name="action_quit">Iesire</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Настройки</string>
<string name="action_debug">Отладка</string>
<string name="action_quit">Выйти</string>
@ -157,7 +157,7 @@
<string name="tap_connected_device_for_vibration">Коснитесь подключённого устройства для Вибрации</string>
<string name="tap_a_device_to_connect">Коснитесь устройства для соединения</string>
<string name="cannot_connect_bt_address_invalid_">Не удалось соединиться. Неверный адрес Bluetooth\?</string>
<string name="gadgetbridge_running">Gadgetbridge запущен</string>
<string name="gadgetbridge_running_generic">Gadgetbridge запущен</string>
<string name="installing_binary_d_d">установка бинарного файла %1$d/%2$d</string>
<string name="installation_failed_">Установка не удалась</string>
<string name="installation_successful">Установлено</string>
@ -848,8 +848,8 @@
<string name="about_additional_device_support">Дополнительная поддержка устройств</string>
<string name="about_contributors">Соавторы</string>
<string name="about_core_team_title">Основная команда (в порядке поступления первого кода)</string>
<string name="about_description">\"Безоблачная\" свободная альтернатива закрытым приложениям от производителей гаджетов.</string>
<string name="about_activity_title">О Gadgetbridge</string>
<string name="about_description_generic">\"Безоблачная\" свободная альтернатива закрытым приложениям от производителей гаджетов.</string>
<string name="about_activity_title_generic">О Gadgetbridge</string>
<string name="about_title">О программе</string>
<string name="hr_widget_last_notification">Последнее уведомление</string>
<string name="pref_qhybrid_save_raw_activity_files">Сохранять необработанные файлы активности</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Nastavenia</string>
<string name="action_debug">Ladenie</string>
<string name="action_quit">Ukončiť</string>
@ -180,7 +180,7 @@
<string name="tap_connected_device_for_vibration">Dotknite sa pripojeného zariadenia pre vibrácie</string>
<string name="tap_a_device_to_connect">Dotknite sa pripojeného zariadenia pre pripojenie</string>
<string name="cannot_connect_bt_address_invalid_">Nie je možné pripojiť. Je BT adresa v poriadku?</string>
<string name="gadgetbridge_running">Gadgetbridge je spustený</string>
<string name="gadgetbridge_running_generic">Gadgetbridge je spustený</string>
<string name="installing_binary_d_d">Instalujem binárny súbor %1$d/%2$d</string>
<string name="installation_failed_">Inštalácia zlyhala</string>
<string name="installation_successful">Inštalácia bola úspešná</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Inställningar</string>
<string name="action_quit">Avsluta</string>
<string name="action_donate">Donera</string>

View File

@ -88,7 +88,7 @@
\nSürüm %2$s, %3$s tarafından
\n</string>
<string name="app_move_to_top">Yukarı taşı</string>
<string name="app_name">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="appinstaller_install">Kur</string>
<string name="appmanager_app_openinstore">Pebble uygulama mağazasında ara</string>
<string name="appmanager_cached_watchapps_watchfaces">Önbellekteki uygulamalar</string>
@ -314,7 +314,7 @@
<string name="fwapp_install_device_not_ready">Dosya kurulamıyor, aygıt hazır değil.</string>
<string name="fwappinstaller_connection_state">Aygıta bağlantı: %1$s</string>
<string name="fwinstaller_firmware_not_compatible_to_device">Bu ürün yazılımı bu aygıtla uyumlu değil</string>
<string name="gadgetbridge_running">Gadgetbridge çalışıyor</string>
<string name="gadgetbridge_running_generic">Gadgetbridge çalışıyor</string>
<string name="german">Almanca</string>
<string name="heart_rate">Kalp ritmi</string>
<string name="horizontal">Yatay</string>
@ -754,7 +754,7 @@
<string name="title_activity_appmanager">Uygulama Yöneticisi</string>
<string name="title_activity_calblacklist">Kara Listeye Alınan Takvimler</string>
<string name="title_activity_charts">Etkinlik ve Uyku</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="title_activity_db_management">Veri yönetimi</string>
<string name="title_activity_debug">Hata Ayıklama</string>
<string name="title_activity_device_specific_settings">Aygıta özel ayarlar</string>
@ -937,8 +937,8 @@
<string name="about_additional_device_support">Ek aygıt desteği</string>
<string name="about_contributors">Katkıda bulunanlar</string>
<string name="about_core_team_title">Çekirdek Ekip (ilk kod katkıda bulunma sırasına göre)</string>
<string name="about_description">Satıcıların kapalı kaynaklı Android aygıt uygulamalarının yerine bulut gerektirmeyen copyleft özgür alternatif.</string>
<string name="about_activity_title">Gadgetbridge hakkında</string>
<string name="about_description_generic">Satıcıların kapalı kaynaklı Android aygıt uygulamalarının yerine bulut gerektirmeyen copyleft özgür alternatif.</string>
<string name="about_activity_title_generic">Gadgetbridge hakkında</string>
<string name="about_title">Hakkında</string>
<string name="pref_title_weather_summary">LineageOS hava durumu sağlayıcısı için kullanılır, diğer Android sürümleri \"Weather notification\" gibi bir uygulama kullanmalıdır. Gadgetbridge wiki sayfasında daha fazla bilgi bulabilirsiniz.</string>
<string name="menuitem_worldclock">Dünya Saati</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Налаштування</string>
<string name="action_debug">Зневадження</string>
<string name="action_quit">Вийти</string>
@ -98,7 +98,7 @@
<string name="bluetooth_is_not_supported_">Bluetooth не підтримується.</string>
<string name="bluetooth_is_disabled_">Bluetooth вимкнуто.</string>
<string name="cannot_connect_bt_address_invalid_">Не вдалося з\'єднатися. Неправильна Bluetooth адреса\?</string>
<string name="gadgetbridge_running">Gadgetbridge запущено</string>
<string name="gadgetbridge_running_generic">Gadgetbridge запущено</string>
<string name="installing_binary_d_d">Встановлення двійкового файлу %1$d/%2$d</string>
<string name="installation_failed_">Невдале встановлення</string>
<string name="installation_successful">Встановлено</string>
@ -1022,8 +1022,8 @@
<string name="about_additional_device_support">Підтримка додаткових пристроїв</string>
<string name="about_contributors">Співавтори</string>
<string name="about_core_team_title">Основна команда (впорядковано за датою допомоги)</string>
<string name="about_description">Незалежний від хмари, вільний замінник закритих застосунків від інших виробників.</string>
<string name="about_activity_title">Про Gadgetbridge</string>
<string name="about_description_generic">Незалежний від хмари, вільний замінник закритих застосунків від інших виробників.</string>
<string name="about_activity_title_generic">Про Gadgetbridge</string>
<string name="about_title">Про застосунок</string>
<string name="hr_widget_last_notification">Останнє сповіщення</string>
<string name="menuitem_worldclock">Світовий час</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">Cài đặt</string>
<string name="action_debug">Dò lỗi</string>
<string name="action_quit">Thoát</string>
@ -49,7 +49,7 @@
<string name="bluetooth_is_not_supported_">Không hỗ trợ Bluetooth.</string>
<string name="bluetooth_is_disabled_">Đã tắt Bluetooth.</string>
<string name="cannot_connect_bt_address_invalid_">Không thể kết nối. Địa chỉ Bluetooth không hợp lệ\?</string>
<string name="gadgetbridge_running">Gadgetbridge đang chạy</string>
<string name="gadgetbridge_running_generic">Gadgetbridge đang chạy</string>
<string name="installing_binary_d_d">Đang cài tệp nhị phân %1$d/%2$d</string>
<string name="installation_failed_">Cài đặt thất bại</string>
<string name="installation_successful">Đã cài đặt</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="action_settings">设置</string>
<string name="action_debug">调试</string>
<string name="action_quit">退出</string>
@ -166,7 +166,7 @@
<string name="tap_connected_device_for_vibration">点按以震动已连接的设备</string>
<string name="tap_a_device_to_connect">点按一个设备以连接</string>
<string name="cannot_connect_bt_address_invalid_">无法连接。 蓝牙地址无效?</string>
<string name="gadgetbridge_running">Gadgetbridge 正在运行</string>
<string name="gadgetbridge_running_generic">Gadgetbridge 正在运行</string>
<string name="installing_binary_d_d">正在安装二进制文件 %1$d/%2$d</string>
<string name="installation_failed_">安装失败</string>
<string name="installation_successful">安装成功</string>
@ -917,8 +917,8 @@
<string name="about_additional_device_support">额外设备支持</string>
<string name="about_contributors">贡献者</string>
<string name="about_core_team_title">核心成员 (以第一次提交代码排序)</string>
<string name="about_description">用于替代原厂手环应用的脱机无版权自由应用。</string>
<string name="about_activity_title">关于 Gadgetbridge</string>
<string name="about_description_generic">用于替代原厂手环应用的脱机无版权自由应用。</string>
<string name="about_activity_title_generic">关于 Gadgetbridge</string>
<string name="about_title">关于</string>
<string name="pref_title_weather_summary">由LineageOS天气服务提供其他版本的Android系统需要使用诸如“Weather notification”。更多信息请访问 Gadgetbridge 的Wiki。</string>
<string name="menuitem_worldclock">世界时钟</string>

View File

@ -26,8 +26,8 @@
<string name="appmananger_app_delete_cache">刪除並清除緩存</string>
<string name="appmananger_app_reinstall">重新安裝</string>
<string name="mi2_prefs_button_press_broadcast_default_value" translatable="false">nodomain.freeyourgadget.gadgetbridge.ButtonPressed</string>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="controlcenter_snackbar_connecting">連接中…</string>
<string name="controlcenter_snackbar_requested_screenshot">截取設備的屏幕截圖</string>
<string name="controlcenter_calibrate_device">校正設備</string>
@ -524,7 +524,7 @@
<string name="title_activity_mi_band_pairing">配對您的小米手環</string>
<string name="title_activity_android_pairing">配對裝置</string>
<string name="initialized">初始化完成</string>
<string name="gadgetbridge_running">Gadgetbridge 正在執行</string>
<string name="gadgetbridge_running_generic">Gadgetbridge 正在執行</string>
<string name="tap_a_device_to_connect">點擊一個裝置以進行連線</string>
<string name="bluetooth_is_not_supported_">藍芽不支援。</string>
<string name="zetime_calories_type_all">涵蓋活動與未活動時消耗的卡路里</string>
@ -583,8 +583,8 @@
<string name="about_additional_device_support">額外裝置支援</string>
<string name="about_contributors">貢獻者</string>
<string name="about_core_team_title">核心團隊(按第一次程式碼貢獻順序排列)</string>
<string name="about_description">用來取代廠商提供的閉源 Android 小裝置應用程式的離線且版權自由的替代品。</string>
<string name="about_activity_title">關於 Gadgetbridge</string>
<string name="about_description_generic">用來取代廠商提供的閉源 Android 小裝置應用程式的離線且版權自由的替代品。</string>
<string name="about_activity_title_generic">關於 Gadgetbridge</string>
<string name="about_title">關於</string>
<string name="activity_summaries">運動活動</string>
<string name="activity_type_swimming">游泳</string>

View File

@ -1818,6 +1818,7 @@
<item>@string/menuitem_notifications</item>
<item>@string/mi2_prefs_inactivity_warnings</item>
<item>@string/pref_title_notifications_sms</item>
<item>@string/menuitem_email</item>
<item>@string/menuitem_goal</item>
</string-array>
@ -1828,6 +1829,7 @@
<item>@string/p_menuitem_notifications</item>
<item>@string/p_menuitem_inactivity_warning</item>
<item>@string/p_menuitem_sms</item>
<item>@string/p_menuitem_email</item>
<item>@string/p_menuitem_goal</item>
</string-array>

View File

@ -1,7 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="application_name_generic">Gadgetbridge</string>
<string name="title_activity_controlcenter_generic">Gadgetbridge</string>
<string name="about_activity_title_generic">About Gadgetbridge</string>
<string name="about_description_generic">Cloudless copylefted libre replacement for closed source Android gadget apps from vendors.</string>
<string name="gadgetbridge_running_generic">Gadgetbridge running</string>
<string name="application_name_banglejs_main">Bangle.js Gadgetbridge</string>
<string name="title_activity_controlcenter_banglejs_main">Bangle.js Gadgetbridge</string>
<string name="about_activity_title_banglejs_main">About Bangle.js Gadgetbridge</string>
<string name="about_description_banglejs_main">Android companion app for Bangle.js built on top of the Gadgetbridge project, with added Internet Access.</string>
<string name="gadgetbridge_running_banglejs_main">Bangle.js running</string>
<string name="application_name_banglejs_nopebble">Bangle.js Gadgetbridge</string>
<string name="title_activity_controlcenter_banglejs_nopebble">Bangle.js Gadgetbridge</string>
<string name="about_activity_title_banglejs_nopebble">About Bangle.js Gadgetbridge</string>
<string name="about_description_banglejs_nopebble">Android companion app for Bangle.js built on top of the Gadgetbridge project, with added Internet Access.</string>
<string name="gadgetbridge_running_banglejs_nopebble">Bangle.js running</string>
<string name="application_name_main_nightly">Gadgetbridge (Nightly)</string>
<string name="title_activity_controlcenter_main_nightly">Gadgetbridge Nightly</string>
<string name="about_activity_title_main_nightly">About Gadgetbridge Nightly</string>
<string name="about_description_main_nightly">Cloudless copylefted libre replacement for closed source Android gadget apps from vendors. Nightly releases of Gadgetbridge. It cannot be installed if you already have either the Gadgetbridge or the Pebble app installed, due to a conflict in the Pebble provider.</string>
<string name="gadgetbridge_running_main_nightly">Nightly GB running</string>
<string name="application_name_main_nopebble">Gadgetbridge (Nightly, No Pebble provider)</string>
<string name="title_activity_controlcenter_main_nopebble">Gadgetbridge Nightly No Pebble </string>
<string name="about_activity_title_main_nopebble">About Gadgetbridge Nightly No Pebble</string>
<string name="about_description_main_nopebble">Cloudless copylefted libre replacement for closed source Android gadget apps from vendors. Nightly releases of Gadgetbridge. This version has the Pebble provider renamed to prevent conflicts, so some Pebble related integrations will not work, but it can be installed alongside existing Gadgetbridge installation.</string>
<string name="gadgetbridge_running_main_nopebble">Nightly NoPebble GB running</string>
<string name="action_settings">Settings</string>
<string name="action_debug">Debug</string>
<string name="action_quit">Quit</string>
@ -368,7 +396,6 @@
<string name="tap_connected_device_for_vibration">Tap connected device for vibration</string>
<string name="tap_a_device_to_connect">Tap a device to connect</string>
<string name="cannot_connect_bt_address_invalid_">Cannot connect. Bluetooth address invalid?</string>
<string name="gadgetbridge_running">Gadgetbridge running</string>
<string name="installing_binary_d_d">Installing binary %1$d/%2$d</string>
<string name="installation_failed_">Installation failed</string>
<string name="installation_successful">Installed</string>
@ -994,6 +1021,7 @@
<string name="menuitem_temperature">Temperature</string>
<string name="menuitem_barometer">Barometer</string>
<string name="menuitem_flashlight">Flashlight</string>
<string name='menuitem_email'>E-mail</string>
<string name="watch9_time_minutes">Minutes:</string>
<string name="watch9_time_hours">Hours:</string>
<string name="watch9_time_seconds">Seconds:</string>
@ -1095,11 +1123,9 @@
<string name="about_title">About</string>
<string name="about_version">Version %s</string>
<string name="about_hash">Commit %s</string>
<string name="about_activity_title">About Gadgetbridge</string>
<string name="gpx_receiver_activity_title">GPX Receiver Gadgetbridge</string>
<string name="gpx_receiver_files_received">GPX file(s) received:</string>
<string name="gpx_receiver_overwrite_some_files">Some file(s) already exist. Overwrite?</string>
<string name="about_description">Cloudless copylefted libre replacement for closed source Android gadget apps from vendors.</string>
<string name="about_core_team_title">Core Team (in order of first code contribution)</string>
<string name="about_contributors">Contributors</string>
<string name="about_core_team_members" translatable="false">Andreas Shimokawa\nCarsten Pfeiffer\nDaniele Gobbetti</string>

View File

@ -61,6 +61,7 @@
<item name="p_menuitem_calls" type="string">calls</item>
<item name="p_menuitem_inactivity_warning" type="string">inactivity_warning</item>
<item name="p_menuitem_sms" type="string">sms</item>
<item name="p_menuitem_email" type="string">email</item>
<item name="p_off" type="string">off</item>
<item name="p_on" type="string">on</item>

View File

@ -40,7 +40,7 @@
<EditTextPreference
android:defaultValue="10000"
android:inputType="number"
android:key="mi_fitness_goal"
android:key="fitness_goal"
android:maxLength="5"
android:title="@string/miband_prefs_fitness_goal" />

View File

@ -2,7 +2,7 @@
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
android:icon="@drawable/ic_chair"
android:key="screen_longsit"
android:key="screen_inactivity"
android:persistent="false"
android:summary="@string/mi2_prefs_inactivity_warnings_summary"
android:title="@string/mi2_prefs_inactivity_warnings">
@ -12,21 +12,21 @@
<SwitchPreference
android:defaultValue="false"
android:key="pref_longsit_switch"
android:key="inactivity_warnings_enable"
android:title="@string/mi2_prefs_inactivity_warnings" />
<EditTextPreference
android:defaultValue="60"
android:key="pref_longsit_period"
android:key="inactivity_warnings_threshold"
android:summary="@string/mi2_prefs_inactivity_warnings_summary"
android:title="@string/mi2_prefs_inactivity_warnings_threshold"/>
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference
android:defaultValue="06:00"
android:key="pref_longsit_start"
android:key="inactivity_warnings_start"
android:title="@string/mi2_prefs_do_not_disturb_start" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference
android:defaultValue="23:00"
android:key="pref_longsit_end"
android:key="inactivity_warnings_end"
android:title="@string/mi2_prefs_do_not_disturb_end" />
</PreferenceScreen>

View File

@ -2,7 +2,7 @@
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
android:icon="@drawable/ic_chair"
android:key="screen_longsit"
android:key="screen_inactivity_extended"
android:persistent="false"
android:summary="@string/mi2_prefs_inactivity_warnings_summary"
android:title="@string/mi2_prefs_inactivity_warnings">
@ -12,26 +12,26 @@
<SwitchPreference
android:defaultValue="false"
android:key="pref_longsit_switch"
android:key="inactivity_warnings_enable"
android:title="@string/mi2_prefs_inactivity_warnings" />
<ListPreference
android:defaultValue="4"
android:dependency="pref_longsit_switch"
android:dependency="inactivity_warnings_enable"
android:entries="@array/inactivity_minutes"
android:entryValues="@array/inactivity_minutes_values"
android:key="pref_longsit_period"
android:key="inactivity_warnings_threshold"
android:summary="@string/mi2_prefs_inactivity_warnings_summary"
android:title="@string/mi2_prefs_inactivity_warnings_threshold" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference
android:defaultValue="08:00"
android:key="pref_longsit_start"
android:key="inactivity_warnings_start"
android:title="@string/mi2_prefs_do_not_disturb_start" />
<nodomain.freeyourgadget.gadgetbridge.util.XTimePreference
android:defaultValue="16:00"
android:key="pref_longsit_end"
android:key="inactivity_warnings_end"
android:title="@string/mi2_prefs_do_not_disturb_end" />
</PreferenceScreen>
</androidx.preference.PreferenceScreen>

View File

@ -3,7 +3,7 @@
<SwitchPreference
android:icon="@drawable/ic_chair"
android:defaultValue="false"
android:key="screen_longsit_noshed"
android:key="inactivity_warnings_enable_noshed"
android:title="@string/mi2_prefs_inactivity_warnings"
android:summary="@string/mi2_prefs_inactivity_warnings_summary"/>
</androidx.preference.PreferenceScreen>

View File

@ -5,7 +5,7 @@
android:entries="@array/lefun_interface_language_names"
android:entryValues="@array/lefun_interface_language_values"
android:icon="@drawable/ic_language"
android:key="pref_lefun_interface_language"
android:key="language"
android:summary="%s"
android:title="@string/lefun_prefs_interface_language_title" />
</androidx.preference.PreferenceScreen>

View File

@ -2,7 +2,7 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SeekBarPreference
android:title="Noice cancelling level"
android:title="Noise cancelling level"
android:max="2"
android:key="qc35_noise_cancelling_level" />

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<CheckBoxPreference
android:title="Notify if below current threshold"
android:key="um25_current_threshold_notify" />
<EditTextPreference
android:title="Current threshold im mA"
android:key="um25_current_threshold"
android:inputType="number"
android:defaultValue="100"
app:useSimpleSummaryProvider="true" />/>
</PreferenceScreen>

View File

@ -12,7 +12,7 @@
<EditTextPreference
android:defaultValue="10000"
android:inputType="number"
android:key="mi_fitness_goal"
android:key="fitness_goal"
android:maxLength="5"
android:title="@string/miband_prefs_fitness_goal" />
@ -36,7 +36,7 @@
android:title="@string/prefs_title_heartrate_measurement_interval" />
<PreferenceScreen
android:key="mi2_inactivity_warning_key"
android:key="inactivity_warnings_key"
android:summary="@string/mi2_prefs_inactivity_warnings_summary"
android:title="@string/mi2_prefs_inactivity_warnings"
android:persistent="false">
@ -48,47 +48,47 @@
<CheckBoxPreference
android:defaultValue="false"
android:key="mi2_inactivity_warnings"
android:key="inactivity_warnings_enable"
android:summary="@string/mi2_prefs_inactivity_warnings_summary"
android:title="@string/mi2_prefs_inactivity_warnings" />
<EditTextPreference
android:defaultValue="60"
android:dependency="mi2_inactivity_warnings"
android:dependency="inactivity_warnings_enable"
android:inputType="numberSigned"
android:key="mi2_inactivity_warnings_threshold"
android:key="inactivity_warnings_threshold"
android:maxLength="2"
android:title="@string/mi2_prefs_inactivity_warnings_threshold" />
<nodomain.freeyourgadget.gadgetbridge.util.TimePreference
android:defaultValue="06:00"
android:dependency="mi2_inactivity_warnings"
android:key="mi2_inactivity_warnings_start"
android:dependency="inactivity_warnings_enable"
android:key="inactivity_warnings_start"
android:title="@string/mi2_prefs_do_not_disturb_start" />
<nodomain.freeyourgadget.gadgetbridge.util.TimePreference
android:defaultValue="22:00"
android:dependency="mi2_inactivity_warnings"
android:key="mi2_inactivity_warnings_end"
android:dependency="inactivity_warnings_enable"
android:key="inactivity_warnings_end"
android:title="@string/mi2_prefs_do_not_disturb_end" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="mi2_inactivity_warnings"
android:key="mi2_inactivity_warnings_dnd"
android:dependency="inactivity_warnings_enable"
android:key="inactivity_warnings_dnd"
android:summary="@string/mi2_prefs_inactivity_warnings_dnd_summary"
android:title="@string/mi2_prefs_do_not_disturb" />
<nodomain.freeyourgadget.gadgetbridge.util.TimePreference
android:defaultValue="12:00"
android:dependency="mi2_inactivity_warnings_dnd"
android:key="mi2_inactivity_warnings_dnd_start"
android:dependency="inactivity_warnings_dnd"
android:key="inactivity_warnings_dnd_start"
android:title="@string/mi2_prefs_do_not_disturb_start" />
<nodomain.freeyourgadget.gadgetbridge.util.TimePreference
android:defaultValue="14:00"
android:dependency="mi2_inactivity_warnings_dnd"
android:key="mi2_inactivity_warnings_dnd_end"
android:dependency="inactivity_warnings_dnd"
android:key="inactivity_warnings_dnd_end"
android:title="@string/mi2_prefs_do_not_disturb_end" />
</PreferenceScreen>

View File

@ -20,7 +20,7 @@
<EditTextPreference
android:defaultValue="10000"
android:inputType="number"
android:key="mi_fitness_goal"
android:key="fitness_goal"
android:maxLength="5"
android:title="@string/miband_prefs_fitness_goal" />
@ -52,7 +52,7 @@
android:title="@string/activity_prefs_activetime_minutes" />
<PreferenceScreen
android:key="zetime_inactivity_warning_key"
android:key="inactivity_warnings_key"
android:summary="@string/mi2_prefs_inactivity_warnings_summary"
android:title="@string/mi2_prefs_inactivity_warnings"
android:persistent="false">
@ -64,60 +64,60 @@
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_inactivity_warnings"
android:key="inactivity_warnings_enable"
android:summary="@string/mi2_prefs_inactivity_warnings_summary"
android:title="@string/mi2_prefs_inactivity_warnings" />
<EditTextPreference
android:defaultValue="60"
android:dependency="zetime_inactivity_warnings"
android:dependency="inactivity_warnings_enable"
android:inputType="numberSigned"
android:key="zetime_inactivity_warnings_threshold"
android:key="inactivity_warnings_threshold"
android:maxLength="3"
android:title="@string/mi2_prefs_inactivity_warnings_threshold" />
<nodomain.freeyourgadget.gadgetbridge.util.TimePreference
android:defaultValue="06:00"
android:dependency="zetime_inactivity_warnings"
android:key="zetime_inactivity_warnings_start"
android:dependency="inactivity_warnings_enable"
android:key="inactivity_warnings_start"
android:title="@string/mi2_prefs_do_not_disturb_start" />
<nodomain.freeyourgadget.gadgetbridge.util.TimePreference
android:defaultValue="22:00"
android:dependency="zetime_inactivity_warnings"
android:key="zetime_inactivity_warnings_end"
android:dependency="inactivity_warnings_enable"
android:key="inactivity_warnings_end"
android:title="@string/mi2_prefs_do_not_disturb_end" />
<!-- workaround for missing toolbar -->
<PreferenceCategory android:title="@string/zetime_prefs_inactivity_repetitions"
android:dependency="zetime_inactivity_warnings">
android:dependency="inactivity_warnings_enable">
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_mo"
android:key="inactivity_warnings_mo"
android:title="@string/zetime_prefs_inactivity_mo" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_tu"
android:key="inactivity_warnings_tu"
android:title="@string/zetime_prefs_inactivity_tu" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_we"
android:key="inactivity_warnings_we"
android:title="@string/zetime_prefs_inactivity_we" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_th"
android:key="inactivity_warnings_th"
android:title="@string/zetime_prefs_inactivity_th" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_fr"
android:key="inactivity_warnings_fr"
android:title="@string/zetime_prefs_inactivity_fr" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_sa"
android:key="inactivity_warnings_sa"
android:title="@string/zetime_prefs_inactivity_sa" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_su"
android:key="inactivity_warnings_su"
android:title="@string/zetime_prefs_inactivity_su" />
</PreferenceCategory>
</PreferenceScreen>
@ -173,18 +173,18 @@
android:defaultValue="@string/p_off"
android:entries="@array/zetime_do_not_disturb"
android:entryValues="@array/zetime_do_not_disturb_values"
android:key="zetime_do_not_disturb"
android:key="do_not_disturb"
android:title="@string/mi2_prefs_do_not_disturb"
android:summary="%s" />
<nodomain.freeyourgadget.gadgetbridge.util.TimePreference
android:defaultValue="22:00"
android:key="zetime_do_not_disturb_start"
android:key="do_not_disturb_start"
android:title="@string/mi2_prefs_do_not_disturb_start" />
<nodomain.freeyourgadget.gadgetbridge.util.TimePreference
android:defaultValue="07:00"
android:key="zetime_do_not_disturb_end"
android:key="do_not_disturb_end"
android:title="@string/mi2_prefs_do_not_disturb_end" />
</PreferenceScreen>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_name">Gadgetbridge (Nightly)</string>
</resources>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_name">Gadgetbridge (Nightly, No Pebble provider)</string>
</resources>

View File

@ -9,7 +9,7 @@ buildscript {
}
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.4'
classpath 'com.android.tools.build:gradle:7.1.3'
classpath 'gradle.plugin.com.github.spotbugs:spotbugs-gradle-plugin:2.0.0'
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.17'

View File

@ -1,4 +1,5 @@
Use your Pebble/Mi Band/Amazfit Bip/Hplus device without the vendor's closed source application and without the need to create an account and transmit any of your data to the vendor's servers.
Use your smart watch, fitness tracker, and other bluetooth devices without the vendor's closed source application and without the need to create an account and transmit any of your data to the vendor's servers.
For a full list of supported device, please refer to our Homepage or README.md in our git repository.
You can get notifications on your wrist and (depending on the device):

View File

@ -1 +1 @@
Use your Pebble/Bip/Miband/Hplus/[more] and keep your data private!
Use your smart watch and other bluetooth devices and keep your data private!

View File

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip