Merge remote-tracking branch 'github/pr/1292'

This commit is contained in:
cpfeiffer 2019-03-04 22:10:23 +01:00
commit c9f1c110b0
42 changed files with 2264 additions and 29 deletions

View File

@ -41,7 +41,7 @@ vendor's servers.
* Teclast H10, H30 (WIP)
* XWatch (Affordable Chinese Casio-like smartwatches)
* Vibratissimo (experimental)
* ZeTime (WIP)
* ZeTime (WIP) [Wiki](https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/MyKronoz-ZeTime)
## Features

View File

@ -62,6 +62,10 @@
android:name=".devices.miband.MiBandPreferencesActivity"
android:label="@string/preferences_miband_settings"
android:parentActivityName=".activities.SettingsActivity" />
<activity
android:name=".devices.zetime.ZeTimePreferenceActivity"
android:label="@string/zetime_title_settings"
android:parentActivityName=".activities.SettingsActivity" />
<activity
android:name=".activities.ActivitySummariesActivity"
android:label="@string/activity_summaries"

View File

@ -55,6 +55,7 @@ import nodomain.freeyourgadget.gadgetbridge.database.PeriodicExporter;
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandPreferencesActivity;
import nodomain.freeyourgadget.gadgetbridge.devices.zetime.ZeTimePreferenceActivity;
import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec;
import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
@ -121,6 +122,15 @@ public class SettingsActivity extends AbstractSettingsActivity {
}
});
pref = findPreference("pref_key_zetime");
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
Intent enableIntent = new Intent(SettingsActivity.this, ZeTimePreferenceActivity.class);
startActivity(enableIntent);
return true;
}
});
pref = findPreference("pref_key_blacklist");
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {

View File

@ -96,6 +96,13 @@ public interface EventHandler {
*/
void onSendConfiguration(String config);
/**
* Gets the given option from the device, sets the values in the preferences.
* The config name is device specific.
* @param config the device specific option to get from the device
*/
void onReadConfiguration(String config);
void onTestNewFunction();
void onSendWeather(WeatherSpec weatherSpec);

View File

@ -55,6 +55,9 @@ public class ZeTimeConstants {
public static final byte CMD_SCREEN_ON_TIME = (byte) 0x13;
public static final byte CMD_SNOOZE = (byte) 0x14;
public static final byte CMD_DO_NOT_DISTURB = (byte) 0x15;
public static final byte CMD_ANALOG_MODE = (byte) 0x17;
public static final byte CMD_CONTROL_DEVICE = (byte) 0x1A;
public static final byte CMD_DISPLAY_TIMEOUT = (byte) 0x25;
public static final byte CMD_USER_INFO = (byte) 0x30;
public static final byte CMD_USAGE_HABITS = (byte) 0x31;
public static final byte CMD_USER_NAME = (byte) 0x32;
@ -73,8 +76,11 @@ public class ZeTimeConstants {
public static final byte CMD_GET_HEARTRATE_EXDATA = (byte) 0x61;
public static final byte CMD_PUSH_EX_MSG = (byte) 0x76;
public static final byte CMD_PUSH_WEATHER_DATA = (byte) 0x77;
public static final byte CMD_SWITCH_SETTINGS = (byte) 0x90;
public static final byte CMD_REMINDERS = (byte) 0x97;
public static final byte CMD_PUSH_CALENDAR_DAY = (byte) 0x99;
public static final byte CMD_MUSIC_CONTROL = (byte) 0xD0;
public static final byte CMD_TEST_SIGNALING = (byte) 0xFA;
// here are the action commands
public static final byte CMD_REQUEST = (byte) 0x70;
public static final byte CMD_SEND = (byte) 0x71;
@ -105,4 +111,75 @@ public class ZeTimeConstants {
public static final byte NOTIFICATION_UBER = (byte) 0x13;
public static final byte NOTIFICATION_LINE = (byte) 0x14;
public static final byte NOTIFICATION_SKYPE = (byte) 0x15;
// reminders types
public static final byte REMINDER_ALARM = (byte) 0x04;
// signaling types
public static final byte ANTI_LOSS_TYPE = (byte) 0x00;
public static final byte CALL_TYPE = (byte) 0x02;
public static final byte MISSED_CALL_TYPE = (byte) 0x03;
public static final byte SMS_TYPE = (byte) 0x04;
public static final byte SOCIAL_TYPE = (byte) 0x05;
public static final byte EMAIL_TYPE = (byte) 0x06;
public static final byte CALENDAR_TYPE = (byte) 0x07;
public static final byte INACTIVITY_TYPE = (byte) 0x08;
public static final byte LOW_POWER_TYPE = (byte) 0x09;
// watch settings
public static final String PREF_WRIST = "zetime_wrist";
public static final byte WEAR_ON_LEFT_WRIST = (byte) 0x00;
public static final byte WEAR_ON_RIGHT_WRIST = (byte) 0x01;
public static final String PREF_SCREENTIME = "zetime_screentime";
public static final int MAX_SCREEN_ON_TIME = 0xffff;
public static final int MIN_SCREEN_ON_TIME = 0x000a;
public static final String PREF_ZETIME_DONT_DEL_ACTDATA = "zetime_dont_del_actdata";
public static final String PREF_ZETIME_HEARTRATE_ALARM = "zetime_heartrate_alarm_enable";
public static final String PREF_ZETIME_MAX_HEARTRATE = "alarm_max_heart_rate";
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";
public static final String PREF_CALORIES_TYPE = "zetime_calories_type";
public static final String PREF_TIME_FORMAT = "zetime_time_format";
public static final String PREF_DATE_FORMAT = "zetime_date_format";
public static final String PREF_ALARM_SIGNALING = "zetime_alarm_signaling";
public static final String PREF_SMS_SIGNALING = "zetime_vibration_profile_sms";
public static final String PREF_CALL_SIGNALING = "zetime_vibration_profile_incoming_call";
public static final String PREF_MISSED_CALL_SIGNALING = "zetime_vibration_profile_missed_call";
public static final String PREF_EMAIL_SIGNALING = "zetime_vibration_profile_generic_email";
public static final String PREF_SOCIAL_SIGNALING = "zetime_vibration_profile_generic_social";
public static final String PREF_CALENDAR_SIGNALING = "zetime_vibration_profile_calendar";
public static final String PREF_INACTIVITY_SIGNALING = "zetime_vibration_profile_inactivity";
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";
public static final String PREF_USER_ACTIVETIME_GOAL = "activity_user_activetime_minutes";
public static final String PREF_SHOCK_STRENGTH = "zetime_shock_strength";
}

View File

@ -146,7 +146,7 @@ public class ZeTimeCoordinator extends AbstractDeviceCoordinator {
@Override
public boolean supportsRealtimeData() {
return false;
return true;
}
@Override

View File

@ -0,0 +1,133 @@
package nodomain.freeyourgadget.gadgetbridge.devices.zetime;
import android.os.Bundle;
import android.preference.Preference;
import android.widget.Toast;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity;
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
import nodomain.freeyourgadget.gadgetbridge.model.NotificationType;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
public class ZeTimePreferenceActivity extends AbstractSettingsActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.zetime_preferences);
addPreferencesFromResource(R.xml.preferences);
GBApplication.deviceService().onReadConfiguration("do_it");
//addTryListeners();
Prefs prefs = GBApplication.getPrefs();
final Preference heartrateMeasurementInterval = findPreference(ZeTimeConstants.PREF_ZETIME_HEARTRATE_INTERVAL);
heartrateMeasurementInterval.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newVal) {
GBApplication.deviceService().onSetHeartRateMeasurementInterval(Integer.parseInt((String) newVal));
return true;
}
});
addPreferenceHandlerFor(ZeTimeConstants.PREF_SCREENTIME);
addPreferenceHandlerFor(ZeTimeConstants.PREF_WRIST);
addPreferenceHandlerFor(ZeTimeConstants.PREF_ANALOG_MODE);
addPreferenceHandlerFor(ZeTimeConstants.PREF_ACTIVITY_TRACKING);
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_TIME_FORMAT);
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);
addPreferenceHandlerFor(ZeTimeConstants.PREF_CALL_SIGNALING);
addPreferenceHandlerFor(ZeTimeConstants.PREF_MISSED_CALL_SIGNALING);
addPreferenceHandlerFor(ZeTimeConstants.PREF_EMAIL_SIGNALING);
addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_SIGNALING);
addPreferenceHandlerFor(ZeTimeConstants.PREF_LOW_POWER_SIGNALING);
addPreferenceHandlerFor(ZeTimeConstants.PREF_SOCIAL_SIGNALING);
addPreferenceHandlerFor(ZeTimeConstants.PREF_ZETIME_HEARTRATE_ALARM);
addPreferenceHandlerFor(ZeTimeConstants.PREF_ZETIME_MAX_HEARTRATE);
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);
addPreferenceHandlerFor(ZeTimeConstants.PREF_USER_ACTIVETIME_GOAL);
}
private void addPreferenceHandlerFor(final String preferenceKey) {
Preference pref = findPreference(preferenceKey);
pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override public boolean onPreferenceChange(Preference preference, Object newVal) {
GBApplication.deviceService().onSendConfiguration(preferenceKey);
return true;
}
});
}
/**
* delayed execution so that the preferences are applied first
*/
// private void invokeLater(Runnable runnable) {
// getListView().post(runnable);
// }
// private void addTryListeners() {
// for (final NotificationType type : NotificationType.values()) {
// String prefKey = "zetime_try_" + type.getGenericType();
// final Preference tryPref = findPreference(prefKey);
// if (tryPref != null) {
// tryPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
// @Override
// public boolean onPreferenceClick(Preference preference) {
// tryVibration(type);
// return true;
// }
// });
// } else {
// GB.toast(getBaseContext(), "Unable to find preference key: " + prefKey + ", trying the vibration won't work", Toast.LENGTH_LONG, GB.WARN);
// }
// }
// }
//
// private void tryVibration(NotificationType type) {
// NotificationSpec spec = new NotificationSpec();
// spec.type = type;
// GBApplication.deviceService().onNotification(spec);
// }
}

View File

@ -379,6 +379,13 @@ public class GBDeviceService implements DeviceService {
invokeService(intent);
}
@Override
public void onReadConfiguration(String config) {
Intent intent = createIntent().setAction(ACTION_READ_CONFIGURATION)
.putExtra(EXTRA_CONFIG, config);
invokeService(intent);
}
@Override
public void onTestNewFunction() {
Intent intent = createIntent().setAction(ACTION_TEST_NEW_FUNCTION);

View File

@ -41,6 +41,9 @@ public class ActivityUser {
private int activityUserWeightKg;
private int activityUserSleepDuration;
private int activityUserStepsGoal;
private int activityUserCaloriesBurnt;
private int activityUserDistanceMeters;
private int activityUserActiveTimeMinutes;
private static final String defaultUserName = "gadgetbridge-user";
public static final int defaultUserGender = GENDER_FEMALE;
@ -50,6 +53,9 @@ public class ActivityUser {
public static final int defaultUserWeightKg = 70;
public static final int defaultUserSleepDuration = 7;
public static final int defaultUserStepsGoal = 8000;
public static final int defaultUserCaloriesBurnt = 2000;
public static final int defaultUserDistanceMeters = 5000;
public static final int defaultUserActiveTimeMinutes = 60;
public static final String PREF_USER_NAME = "mi_user_alias";
public static final String PREF_USER_YEAR_OF_BIRTH = "activity_user_year_of_birth";
@ -58,6 +64,9 @@ public class ActivityUser {
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_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";
public ActivityUser() {
fetchPreferences();
@ -127,6 +136,9 @@ public class ActivityUser {
activityUserYearOfBirth = prefs.getInt(PREF_USER_YEAR_OF_BIRTH, defaultUserYearOfBirth);
activityUserSleepDuration = prefs.getInt(PREF_USER_SLEEP_DURATION, defaultUserSleepDuration);
activityUserStepsGoal = prefs.getInt(PREF_USER_STEPS_GOAL, defaultUserStepsGoal);
activityUserCaloriesBurnt = prefs.getInt(PREF_USER_CALORIES_BURNT, defaultUserCaloriesBurnt);
activityUserDistanceMeters = prefs.getInt(PREF_USER_DISTANCE_METERS, defaultUserDistanceMeters);
activityUserActiveTimeMinutes = prefs.getInt(PREF_USER_ACTIVETIME_MINUTES, defaultUserActiveTimeMinutes);
}
public Date getUserBirthday() {
@ -134,4 +146,28 @@ public class ActivityUser {
cal.set(GregorianCalendar.YEAR, getYearOfBirth());
return cal.getTime();
}
public int getCaloriesBurnt()
{
if (activityUserCaloriesBurnt < 0) {
activityUserCaloriesBurnt = defaultUserCaloriesBurnt;
}
return activityUserCaloriesBurnt;
}
public int getDistanceMeters()
{
if (activityUserDistanceMeters < 0) {
activityUserDistanceMeters = defaultUserDistanceMeters;
}
return activityUserDistanceMeters;
}
public int getActiveTimeMinutes()
{
if (activityUserActiveTimeMinutes < 0) {
activityUserActiveTimeMinutes = defaultUserActiveTimeMinutes;
}
return activityUserActiveTimeMinutes;
}
}

View File

@ -61,6 +61,7 @@ public interface DeviceService extends EventHandler {
String ACTION_ADD_CALENDAREVENT = PREFIX + ".action.add_calendarevent";
String ACTION_DELETE_CALENDAREVENT = PREFIX + ".action.delete_calendarevent";
String ACTION_SEND_CONFIGURATION = PREFIX + ".action.send_configuration";
String ACTION_READ_CONFIGURATION = PREFIX + ".action.read_configuration";
String ACTION_SEND_WEATHER = PREFIX + ".action.send_weather";
String ACTION_TEST_NEW_FUNCTION = PREFIX + ".action.test_new_function";
String ACTION_SET_FM_FREQUENCY = PREFIX + ".action.set_fm_frequency";

View File

@ -46,7 +46,7 @@ public enum DeviceType {
NO1F1(50, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_no1_f1),
TECLASTH30(60, R.drawable.ic_device_h30_h10, R.drawable.ic_device_h30_h10_disabled, R.string.devicetype_teclast_h30),
XWATCH(70, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled, R.string.devicetype_xwatch),
ZETIME(80, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled, R.string.devicetype_mykronoz_zetime),
ZETIME(80, R.drawable.ic_device_zetime, R.drawable.ic_device_zetime_disabled, R.string.devicetype_mykronoz_zetime),
ID115(90, R.drawable.ic_device_h30_h10, R.drawable.ic_device_h30_h10_disabled, R.string.devicetype_id115),
WATCH9(100, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled, R.string.devicetype_watch9),
ROIDMI(110, R.drawable.ic_device_roidmi, R.drawable.ic_device_roidmi_disabled, R.string.devicetype_roidmi),

View File

@ -601,7 +601,7 @@ public class Weather {
}
}
public static byte mapToZeTimeCondition(int openWeatherMapCondition) {
public static byte mapToZeTimeConditionOld(int openWeatherMapCondition) {
/* deducted values:
0 = partly cloudy
1 = cloudy
@ -710,4 +710,174 @@ public class Weather {
return 3;
}
}
public static byte mapToZeTimeCondition(int openWeatherMapCondition) {
/* deducted values:
0 = tornado
1 = typhoon
2 = hurricane
3 = thunderstorm
4 = rain and snow
5 = unavailable
6 = freezing rain
7 = drizzle
8 = showers
9 = snow flurries
10 = blowing snow
11 = snow
12 = sleet
13 = foggy
14 = windy
15 = cloudy
16 = partly cloudy (night)
17 = partly cloudy (day)
18 = clear night
19 = sunny
20 = thundershower
21 = hot
22 = scattered thunders
23 = snow showers
24 = heavy snow
*/
switch (openWeatherMapCondition) {
//Group 2xx: Thunderstorm
case 210: //light thunderstorm:: //11d
return 22;
//Group 2xx: Thunderstorm
case 200: //thunderstorm with light rain: //11d
case 201: //thunderstorm with rain: //11d
case 202: //thunderstorm with heavy rain: //11d
case 230: //thunderstorm with light drizzle: //11d
case 231: //thunderstorm with drizzle: //11d
case 232: //thunderstorm with heavy drizzle: //11d
return 20;
//Group 2xx: Thunderstorm
case 211: //thunderstorm: //11d
case 212: //heavy thunderstorm: //11d
case 221: //ragged thunderstorm: //11d
return 3;
//Group 7xx: Atmosphere
case 781: //tornado: //[[file:50d.png]]
//Group 90x: Extreme
case 900: //tornado
return 0;
//Group 90x: Extreme
case 901: //tropical storm
return 1;
// Group 7xx: Atmosphere
case 771: //squalls: //[[file:50d.png]]
//Group 9xx: Additional
case 960: //storm
case 961: //violent storm
case 902: //hurricane
case 962: //hurricane
return 2;
//Group 3xx: Drizzle
case 300: //light intensity drizzle: //09d
case 301: //drizzle: //09d
case 302: //heavy intensity drizzle: //09d
case 310: //light intensity drizzle rain: //09d
case 311: //drizzle rain: //09d
case 312: //heavy intensity drizzle rain: //09d
case 313: //shower rain and drizzle: //09d
case 314: //heavy shower rain and drizzle: //09d
case 321: //shower drizzle: //09d
return 7;
//Group 5xx: Rain
case 500: //light rain: //10d
case 501: //moderate rain: //10d
case 502: //heavy intensity rain: //10d
case 503: //very heavy rain: //10d
case 504: //extreme rain: //10d
case 520: //light intensity shower rain: //09d
case 521: //shower rain: //09d
case 522: //heavy intensity shower rain: //09d
case 531: //ragged shower rain: //09d
//Group 90x: Extreme
case 906: //hail
return 8;
//Group 5xx: Rain
case 511: //freezing rain: //13d
return 6;
//Group 6xx: Snow
case 620: //light shower snow: //[[file:13d.png]]
case 621: //shower snow: //[[file:13d.png]]
case 622: //heavy shower snow: //[[file:13d.png]]
return 23;
//Group 6xx: Snow
case 615: //light rain and snow: //[[file:13d.png]]
case 616: //rain and snow: //[[file:13d.png]]
return 4;
//Group 6xx: Snow
case 611: //sleet: //[[file:13d.png]]
case 612: //shower sleet: //[[file:13d.png]]
return 12;
//Group 6xx: Snow
case 600: //light snow: //[[file:13d.png]]
case 601: //snow: //[[file:13d.png]]
return 11;
//Group 6xx: Snow
case 602: //heavy snow: //[[file:13d.png]]
return 24;
//Group 7xx: Atmosphere
case 701: //mist: //[[file:50d.png]]
case 711: //smoke: //[[file:50d.png]]
case 721: //haze: //[[file:50d.png]]
case 731: //sandcase dust whirls: //[[file:50d.png]]
case 741: //fog: //[[file:50d.png]]
case 751: //sand: //[[file:50d.png]]
case 761: //dust: //[[file:50d.png]]
case 762: //volcanic ash: //[[file:50d.png]]
return 13;
//Group 800: Clear
case 800: //clear sky: //[[file:01d.png]] [[file:01n.png]]
return 19;
//Group 90x: Extreme
case 904: //hot
return 21;
//Group 80x: Clouds
case 801: //few clouds: //[[file:02d.png]] [[file:02n.png]]
case 802: //scattered clouds: //[[file:03d.png]] [[file:03d.png]]
case 803: //broken clouds: //[[file:04d.png]] [[file:03d.png]]
return 17;
//Group 80x: Clouds
case 804: //overcast clouds: //[[file:04d.png]] [[file:04d.png]]
return 15;
//Group 9xx: Additional
case 905: //windy
case 951: //calm
case 952: //light breeze
case 953: //gentle breeze
case 954: //moderate breeze
case 955: //fresh breeze
case 956: //strong breeze
case 957: //high windcase near gale
case 958: //gale
case 959: //severe gale
return 14;
default:
//Group 90x: Extreme
case 903: //cold
return 5;
}
}
}

View File

@ -100,6 +100,7 @@ import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_RE
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_REQUEST_SCREENSHOT;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_RESET;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_SEND_CONFIGURATION;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_READ_CONFIGURATION;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_SEND_WEATHER;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_SETCANNEDMESSAGES;
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_SETMUSICINFO;
@ -576,6 +577,11 @@ public class DeviceCommunicationService extends Service implements SharedPrefere
mDeviceSupport.onSendConfiguration(config);
break;
}
case ACTION_READ_CONFIGURATION: {
String config = intent.getStringExtra(EXTRA_CONFIG);
mDeviceSupport.onReadConfiguration(config);
break;
}
case ACTION_TEST_NEW_FUNCTION: {
mDeviceSupport.onTestNewFunction();
break;

View File

@ -359,6 +359,14 @@ public class ServiceDeviceSupport implements DeviceSupport {
delegate.onSendConfiguration(config);
}
@Override
public void onReadConfiguration(String config) {
if (checkBusy("read configuration: " + config)) {
return;
}
delegate.onReadConfiguration(config);
}
@Override
public void onTestNewFunction() {
if (checkBusy("test new function event")) {

View File

@ -767,6 +767,11 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {

View File

@ -643,6 +643,11 @@ public class HPlusSupport extends AbstractBTLEDeviceSupport {
}
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {
LOG.info("Test New Function");

View File

@ -1550,6 +1550,11 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
}
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {
try {

View File

@ -248,6 +248,11 @@ public class ID115Support extends AbstractBTLEDeviceSupport {
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {

View File

@ -450,6 +450,11 @@ public class TeclastH30Support extends AbstractBTLEDeviceSupport {
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {

View File

@ -124,4 +124,9 @@ public class LiveviewSupport extends AbstractSerialDeviceSupport {
public void onTestNewFunction() {
//nothing to do ATM
}
@Override
public void onReadConfiguration(String config) {
}
}

View File

@ -1255,6 +1255,11 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport {
// nothing yet
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {
try {

View File

@ -374,6 +374,11 @@ public class No1F1Support extends AbstractBTLEDeviceSupport {
}
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {

View File

@ -238,6 +238,11 @@ public class PebbleSupport extends AbstractSerialDeviceSupport {
}
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {
if (reconnect()) {

View File

@ -124,6 +124,11 @@ public class RoidmiSupport extends AbstractSerialDeviceSupport {
}
}
@Override
public void onReadConfiguration(String config) {
}
@Override
protected GBDeviceIoThread createDeviceIOThread() {
return new RoidmiIoThread(getDevice(), getContext(), (RoidmiProtocol) getDeviceProtocol(), RoidmiSupport.this, getBluetoothAdapter());

View File

@ -284,6 +284,11 @@ public class VibratissimoSupport extends AbstractBTLEDeviceSupport {
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {

View File

@ -507,6 +507,11 @@ public class Watch9DeviceSupport extends AbstractBTLEDeviceSupport {
}
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {

View File

@ -371,6 +371,11 @@ public class XWatchSupport extends AbstractBTLEDeviceSupport {
// nothing yet
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {
//Not supported

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -645,4 +645,14 @@
<string name="save_configuration">Konfiguration speichern</string>
<string name="appwidget_not_connected">Nicht verbunden, Alarm nicht eingestellt.</string>
<string name="prefs_disconnect_notification">Benachichtigung beim Verbindung trennen</string>
</resources>
<string name="activity_prefs_calories_burnt">Tägliches Ziel: verbrannte Kalorien</string>
<string name="activity_prefs_distance_meters">Tägliches Ziel: zurückgelegte Strecke in Meter</string>
<string name="activity_prefs_activetime_minutes">Tägliches Ziel: aktive Zeit in Minuten</string>
<!-- ZeTime Preferences -->
<string name="zetime_title_settings">ZeTime Einstellungen</string>
<string name="zetime_title_screentime">Bildschirm-An-Dauer in Sekunden</string>
<string name="activity_prefs_alarm_max_heart_rate">Max Puls Alarm</string>
<string name="activity_prefs_alarm_min_heart_rate">Min Puls Alarm</string>
</resources>

View File

@ -159,6 +159,15 @@
<item>@string/p_scheduled</item>
</string-array>
<string-array name="zetime_do_not_disturb">
<item>@string/mi2_dnd_off</item>
<item>@string/mi2_dnd_scheduled</item>
</string-array>
<string-array name="zetime_do_not_disturb_values">
<item>@string/p_off</item>
<item>@string/p_scheduled</item>
</string-array>
<string-array name="activate_display_on_lift">
<item>@string/off</item>
<item>@string/on</item>
@ -406,6 +415,26 @@
<item>3600</item>
</string-array>
<string-array name="prefs_zetime_heartrate_measurement_interval">
<item name="0">@string/off</item>
<item name="300">@string/interval_five_minutes</item>
<item name="600">@string/interval_ten_minutes</item>
<item name="900">@string/interval_fifteen_minutes</item>
<item name="1800">@string/interval_thirty_minutes</item>
<item name="2700">@string/interval_forty_five_minutes</item>
<item name="3600">@string/interval_one_hour</item>
</string-array>
<string-array name="prefs_zetime_heartrate_measurement_interval_values">
<item>0</item>
<item>300</item>
<item>600</item>
<item>900</item>
<item>1800</item>
<item>2700</item>
<item>3600</item>
</string-array>
<string-array name="notifications_timeout">
<item>@string/no_limit</item>
<item>@string/seconds_5</item>
@ -440,4 +469,62 @@
<item>@string/filter_submode_all</item>
</string-array>
<!-- Note: ZeTime preferences -->
<string-array name="zetime_analog_mode">
<item name="0">@string/zetime_analog_mode_hands</item>
<item name="1">@string/zetime_analog_mode_handsandsteps</item>
</string-array>
<string-array name="zetime_analog_mode_values">
<item>0</item>
<item>1</item>
</string-array>
<string-array name="zetime_calories_type">
<item name="0">@string/zetime_calories_type_active</item>
<item name="1">@string/zetime_calories_type_all</item>
</string-array>
<string-array name="zetime_calories_type_values">
<item>0</item>
<item>1</item>
</string-array>
<string-array name="zetime_time_format">
<item name="1">@string/zetime_time_format_24h</item>
<item name="2">@string/zetime_time_format_12h</item>
</string-array>
<string-array name="zetime_time_format_values">
<item>1</item>
<item>2</item>
</string-array>
<string-array name="zetime_date_format">
<item name="1">@string/zetime_date_format_1</item>
<item name="2">@string/zetime_date_format_2</item>
<item name="3">@string/zetime_date_format_3</item>
</string-array>
<string-array name="zetime_date_format_values">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="zetime_signaling_types">
<item name="2">@string/zetime_signaling_vibrate_once</item>
<item name="4">@string/zetime_signaling_vibrate_twice</item>
<item name="7">@string/zetime_signaling_vibrate</item>
<item name="9">@string/zetime_signaling_beep_once</item>
<item name="10">@string/zetime_signaling_beep_twice</item>
<item name="11">@string/zetime_signaling_beep</item>
<item name="12">@string/zetime_signaling_vibrate_beep_once</item>
<item name="13">@string/zetime_signaling_vibrate_beep</item>
<item name="14">@string/zetime_signaling_none</item>
</string-array>
<string-array name="zetime_signaling_types_values">
<item>2</item>
<item>4</item>
<item>7</item>
<item>9</item>
<item>10</item>
<item>11</item>
<item>12</item>
<item>13</item>
<item>14</item>
</string-array>
</resources>

View File

@ -172,6 +172,52 @@
<!-- ID115 Preferences -->
<string name="preferences_id115_settings">ID115 settings</string>
<string name="prefs_screen_orientation">Screen orientation</string>
<!-- ZeTime Preferences -->
<string name="zetime_title_settings">ZeTime settings</string>
<string name="zetime_title_heartrate">Heart rate settings</string>
<string name="zetime_title_screentime">Screen on duration in seconds</string>
<string name="zetime_title_heart_rate_alarm">Heart rate alarm</string>
<string name="zetime_title_heart_rate_alarm_summary">The watch will warn you when your heart rate exceeds the limits.</string>
<string name="zetime_heart_rate_alarm_enable">Enable the heart rate alarm</string>
<string name="activity_prefs_alarm_max_heart_rate">Max heart rate</string>
<string name="activity_prefs_alarm_min_heart_rate">Min heart rate</string>
<string name="zetime_analog_mode">Analog mode</string>
<string name="zetime_analog_mode_hands">Only hands</string>
<string name="zetime_analog_mode_handsandsteps">Hands and steps</string>
<string name="zetime_activity_tracking">Activity tracking</string>
<string name="zetime_activity_tracking_summary">Switching the activity tracking on, will count your steps and so on.</string>
<string name="zetime_handmove_display">Hand movement</string>
<string name="zetime_handmove_display_summary">Rotate your wrist to activate or deactivate the display.</string>
<string name="zetime_calories_type">Calories type</string>
<string name="zetime_calories_type_active">Only active burnt calories</string>
<string name="zetime_calories_type_all">Active and inactive burnt calories</string>
<string name="zetime_time_format">Time format</string>
<string name="zetime_time_format_24h">24h</string>
<string name="zetime_time_format_12h">12h</string>
<string name="zetime_date_format">Date format</string>
<string name="zetime_date_format_1">YY/MM/DD</string>
<string name="zetime_date_format_2">DD/MM/YY</string>
<string name="zetime_date_format_3">MM/DD/YY</string>
<string name="zetime_prefs_inactivity_repetitions">Repetitions</string>
<string name="zetime_prefs_inactivity_mo">Monday</string>
<string name="zetime_prefs_inactivity_tu">Tuesday</string>
<string name="zetime_prefs_inactivity_we">Wednesday</string>
<string name="zetime_prefs_inactivity_th">Thursday</string>
<string name="zetime_prefs_inactivity_fr">Friday</string>
<string name="zetime_prefs_inactivity_sa">Saturday</string>
<string name="zetime_prefs_inactivity_su">Sunday</string>
<string name="zetime_title_alarm_signaling">Set type of signaling for the alarm</string>
<string name="zetime_signaling_none">Silent</string>
<string name="zetime_signaling_vibrate">Continuous vibration</string>
<string name="zetime_signaling_beep">Continuous beeping</string>
<string name="zetime_signaling_vibrate_beep">Continuous vibration and beeping</string>
<string name="zetime_signaling_vibrate_once">Vibrate once</string>
<string name="zetime_signaling_vibrate_twice">Vibrate twice</string>
<string name="zetime_signaling_beep_once">Beep once</string>
<string name="zetime_signaling_beep_twice">Beep twice</string>
<string name="zetime_signaling_vibrate_beep_once">Vibrate and beep once</string>
<!-- Auto export preferences -->
<string name="pref_header_auto_export">Auto export</string>
<string name="pref_title_auto_export_enabled">Auto export enabled</string>
@ -264,14 +310,22 @@
<string name="pref_screen_notification_profile_generic">Generic notification</string>
<string name="pref_screen_notification_profile_email">E-mail notification</string>
<string name="pref_screen_notification_profile_incoming_call">Incoming call notification</string>
<string name="pref_screen_notification_profile_missed_call">Missed call notification</string>
<string name="pref_screen_notification_profile_generic_chat">Chat</string>
<string name="pref_screen_notification_profile_generic_navigation">Navigation</string>
<string name="pref_screen_notification_profile_generic_social">Social network</string>
<string name="pref_screen_notification_profile_calendar">Calendar notification</string>
<string name="pref_screen_notification_profile_inactivity">Inactivity notification</string>
<string name="pref_screen_notification_profile_low_power">Low power warning</string>
<string name="pref_screen_notification_profile_anti_loss">Anti-loss warning</string>
<string name="prefs_title_heartrate_measurement_interval">Whole day HR measurement</string>
<string name="interval_one_minute">once a minute</string>
<string name="interval_five_minutes">every 5 minutes</string>
<string name="interval_ten_minutes">every 10 minutes</string>
<string name="interval_fifteen_minutes">every 15 minutes</string>
<string name="interval_thirty_minutes">every 30 minutes</string>
<string name="interval_forty_five_minutes">every 45 minutes</string>
<string name="interval_one_hour">once an hour</string>
<string name="stats_title">Speed zones</string>
<string name="stats_x_axis_label">Total minutes</string>
@ -449,6 +503,11 @@
<string name="updatefirmwareoperation_firmware_not_sent">Firmware not sent</string>
<string name="charts_legend_heartrate">Heart rate</string>
<string name="live_activity_heart_rate">Heart rate</string>
<string name="activity_prefs_calories_burnt">Daily target: calories burnt</string>
<string name="activity_prefs_distance_meters">Daily target: distance in meters</string>
<string name="activity_prefs_activetime_minutes">Daily target: active time in minutes</string>
<string name="pref_title_pebble_health_store_raw">Store raw record in the database</string>
<string name="pref_summary_pebble_health_store_raw">Stores the data \"as is\", increasing the database usage to allow for later interpretation.</string>
<string name="action_db_management">Database management</string>
@ -616,4 +675,4 @@
<string name="mode_configuration">Mode Configuration</string>
<string name="save_configuration">Save Configuration</string>
<string name="appwidget_not_connected">Not connected, alarm not set.</string>
</resources>
</resources>

View File

@ -135,6 +135,27 @@
android:key="activity_user_sleep_duration"
android:maxLength="2"
android:title="@string/activity_prefs_sleep_duration" />
<EditTextPreference
android:defaultValue="2000"
android:inputType="number"
android:key="activity_user_calories_burnt"
android:maxLength="4"
android:title="@string/activity_prefs_calories_burnt" />
<EditTextPreference
android:defaultValue="5"
android:inputType="number"
android:key="activity_user_distance_meters"
android:maxLength="5"
android:title="@string/activity_prefs_distance_meters" />
<EditTextPreference
android:defaultValue="60"
android:inputType="number"
android:key="activity_user_activetime_minutes"
android:maxLength="3"
android:title="@string/activity_prefs_activetime_minutes" />
</PreferenceScreen>
<PreferenceScreen
android:key="pref_charts"
@ -732,6 +753,10 @@
android:summary="%s" />
</PreferenceCategory>
</PreferenceScreen>
<Preference
android:icon="@drawable/ic_device_zetime"
android:key="pref_key_zetime"
android:title="@string/zetime_title_settings"/>
</PreferenceCategory>
<PreferenceCategory

View File

@ -0,0 +1,453 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:key="pref_category_zetime_general"
android:title="@string/pref_header_general">
<ListPreference
android:defaultValue="left"
android:entries="@array/wearside"
android:entryValues="@array/wearside_values"
android:key="zetime_wrist"
android:title="@string/miband_prefs_wearside"
android:summary="%s" />
<EditTextPreference
android:inputType="number"
android:maxLength="5"
android:defaultValue="30"
android:key="zetime_screentime"
android:title="@string/zetime_title_screentime"/>
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_activity_tracking"
android:title="@string/zetime_activity_tracking"
android:summary="@string/zetime_activity_tracking_summary" />
<PreferenceScreen
android:key="zetime_inactivity_warning_key"
android:summary="@string/mi2_prefs_inactivity_warnings_summary"
android:title="@string/mi2_prefs_inactivity_warnings"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/mi2_prefs_inactivity_warnings"
/>
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_inactivity_warnings"
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:inputType="numberSigned"
android:key="zetime_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: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: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">
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_mo"
android:title="@string/zetime_prefs_inactivity_mo" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_tu"
android:title="@string/zetime_prefs_inactivity_tu" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_we"
android:title="@string/zetime_prefs_inactivity_we" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_th"
android:title="@string/zetime_prefs_inactivity_th" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_fr"
android:title="@string/zetime_prefs_inactivity_fr" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_sa"
android:title="@string/zetime_prefs_inactivity_sa" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_prefs_inactivity_repetitions_su"
android:title="@string/zetime_prefs_inactivity_su" />
</PreferenceCategory>
</PreferenceScreen>
<ListPreference
android:defaultValue="0"
android:entries="@array/zetime_calories_type"
android:entryValues="@array/zetime_calories_type_values"
android:key="zetime_calories_type"
android:title="@string/zetime_calories_type"
android:summary="%s" />
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_handmove_display"
android:title="@string/zetime_handmove_display"
android:summary="@string/zetime_handmove_display_summary" />
<ListPreference
android:defaultValue="0"
android:entries="@array/zetime_analog_mode"
android:entryValues="@array/zetime_analog_mode_values"
android:key="zetime_analog_mode"
android:title="@string/zetime_analog_mode"
android:summary="%s" />
<ListPreference
android:defaultValue="1"
android:entries="@array/zetime_time_format"
android:entryValues="@array/zetime_time_format_values"
android:key="zetime_time_format"
android:title="@string/zetime_time_format"
android:summary="%s" />
<ListPreference
android:defaultValue="2"
android:entries="@array/zetime_date_format"
android:entryValues="@array/zetime_date_format_values"
android:key="zetime_date_format"
android:title="@string/zetime_date_format"
android:summary="%s" />
<CheckBoxPreference
android:key="zetime_dont_del_actdata"
android:title="@string/pref_title_keep_data_on_device"
android:summary="@string/pref_summary_keep_data_on_device"
android:defaultValue="true" />
<PreferenceScreen
android:key="zetime_do_not_disturb_key"
android:title="@string/mi2_prefs_do_not_disturb"
android:persistent="false"
android:summary="@string/mi2_prefs_do_not_disturb_summary">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/mi2_prefs_do_not_disturb"
/>
<ListPreference
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: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: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:title="@string/mi2_prefs_do_not_disturb_end" />
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory
android:key="pref_category_zetime_heartrate"
android:title="@string/zetime_title_heartrate">
<ListPreference
android:defaultValue="0"
android:entries="@array/prefs_zetime_heartrate_measurement_interval"
android:entryValues="@array/prefs_zetime_heartrate_measurement_interval_values"
android:key="heartrate_measurement_interval"
android:summary="%s"
android:title="@string/prefs_title_heartrate_measurement_interval" />
<PreferenceScreen
android:key="zetime_heartrate_alarm_key"
android:summary="@string/zetime_title_heart_rate_alarm_summary"
android:title="@string/zetime_title_heart_rate_alarm"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/zetime_title_heart_rate_alarm"
/>
<CheckBoxPreference
android:defaultValue="false"
android:key="zetime_heartrate_alarm_enable"
android:summary="@string/zetime_title_heart_rate_alarm_summary"
android:title="@string/zetime_heart_rate_alarm_enable" />
<EditTextPreference
android:inputType="number"
android:dependency="zetime_heartrate_alarm_enable"
android:key="alarm_max_heart_rate"
android:maxLength="3"
android:defaultValue="180"
android:title="@string/activity_prefs_alarm_max_heart_rate" />
<EditTextPreference
android:inputType="number"
android:dependency="zetime_heartrate_alarm_enable"
android:key="alarm_min_heart_rate"
android:maxLength="3"
android:defaultValue="60"
android:title="@string/activity_prefs_alarm_min_heart_rate" />
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory
android:key="pref_category_miband_notification"
android:title="@string/pref_header_vibration_settings">
<PreferenceScreen
android:key="vibration_profile_key"
android:title="@string/pref_screen_notification_profile_sms"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/pref_screen_notification_profile_sms"
/>
<ListPreference
android:defaultValue="2"
android:entries="@array/zetime_signaling_types"
android:entryValues="@array/zetime_signaling_types_values"
android:key="zetime_vibration_profile_sms"
android:title="@string/miband_prefs_vibration"
android:summary="%s" />
<Preference
android:key="zetime_try_generic_sms"
android:persistent="false"
android:title="@string/vibration_try"/>
</PreferenceScreen>
<PreferenceScreen
android:key="vibration_profile_key"
android:title="@string/pref_screen_notification_profile_incoming_call"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/pref_screen_notification_profile_incoming_call"
/>
<ListPreference
android:defaultValue="13"
android:entries="@array/zetime_signaling_types"
android:entryValues="@array/zetime_signaling_types_values"
android:key="zetime_vibration_profile_incoming_call"
android:title="@string/miband_prefs_vibration"
android:summary="%s" />
</PreferenceScreen>
<PreferenceScreen
android:key="vibration_profile_key"
android:title="@string/pref_screen_notification_profile_missed_call"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/pref_screen_notification_profile_missed_call"
/>
<ListPreference
android:defaultValue="12"
android:entries="@array/zetime_signaling_types"
android:entryValues="@array/zetime_signaling_types_values"
android:key="zetime_vibration_profile_missed_call"
android:title="@string/miband_prefs_vibration"
android:summary="%s" />
</PreferenceScreen>
<PreferenceScreen
android:key="vibration_profile_key"
android:title="@string/pref_screen_notification_profile_email"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/pref_screen_notification_profile_email"
/>
<ListPreference
android:defaultValue="12"
android:entries="@array/zetime_signaling_types"
android:entryValues="@array/zetime_signaling_types_values"
android:key="zetime_vibration_profile_generic_email"
android:title="@string/miband_prefs_vibration"
android:summary="%s" />
<Preference
android:key="zetime_try_generic_email"
android:persistent="false"
android:title="@string/vibration_try"/>
</PreferenceScreen>
<PreferenceScreen
android:key="vibration_profile_key"
android:title="@string/pref_screen_notification_profile_generic_social"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/pref_screen_notification_profile_generic_social"
/>
<ListPreference
android:defaultValue="12"
android:entries="@array/zetime_signaling_types"
android:entryValues="@array/zetime_signaling_types_values"
android:key="zetime_vibration_profile_generic_social"
android:title="@string/miband_prefs_vibration"
android:summary="%s" />
<Preference
android:key="zetime_try_generic_social"
android:persistent="false"
android:title="@string/vibration_try"/>
</PreferenceScreen>
<PreferenceScreen
android:key="vibration_profile_key"
android:title="@string/pref_screen_notification_profile_alarm_clock"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/pref_screen_notification_profile_alarm_clock"
/>
<ListPreference
android:defaultValue="11"
android:entries="@array/zetime_signaling_types"
android:entryValues="@array/zetime_signaling_types_values"
android:key="zetime_alarm_signaling"
android:title="@string/miband_prefs_vibration"
android:summary="%s" />
<Preference
android:key="zetime_try_generic_alarm_clock"
android:persistent="false"
android:title="@string/vibration_try"/>
</PreferenceScreen>
<PreferenceScreen
android:key="vibration_profile_key"
android:title="@string/pref_screen_notification_profile_calendar"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/pref_screen_notification_profile_calendar"
/>
<ListPreference
android:defaultValue="12"
android:entries="@array/zetime_signaling_types"
android:entryValues="@array/zetime_signaling_types_values"
android:key="zetime_vibration_profile_calendar"
android:title="@string/miband_prefs_vibration"
android:summary="%s" />
<Preference
android:key="zetime_try_calendar"
android:persistent="false"
android:title="@string/vibration_try"/>
</PreferenceScreen>
<PreferenceScreen
android:key="vibration_profile_key"
android:title="@string/pref_screen_notification_profile_inactivity"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/pref_screen_notification_profile_inactivity"
/>
<ListPreference
android:defaultValue="12"
android:entries="@array/zetime_signaling_types"
android:entryValues="@array/zetime_signaling_types_values"
android:key="zetime_vibration_profile_inactivity"
android:title="@string/miband_prefs_vibration"
android:summary="%s" />
<Preference
android:key="zetime_try_inactivity"
android:persistent="false"
android:title="@string/vibration_try"/>
</PreferenceScreen>
<PreferenceScreen
android:key="vibration_profile_key"
android:title="@string/pref_screen_notification_profile_low_power"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/pref_screen_notification_profile_low_power"
/>
<ListPreference
android:defaultValue="4"
android:entries="@array/zetime_signaling_types"
android:entryValues="@array/zetime_signaling_types_values"
android:key="zetime_vibration_profile_lowpower"
android:title="@string/miband_prefs_vibration"
android:summary="%s" />
<Preference
android:key="zetime_try_lowpower"
android:persistent="false"
android:title="@string/vibration_try"/>
</PreferenceScreen>
<PreferenceScreen
android:key="vibration_profile_key"
android:title="@string/pref_screen_notification_profile_anti_loss"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/pref_screen_notification_profile_anti_loss"
/>
<ListPreference
android:defaultValue="13"
android:entries="@array/zetime_signaling_types"
android:entryValues="@array/zetime_signaling_types_values"
android:key="zetime_vibration_profile_antiloss"
android:title="@string/miband_prefs_vibration"
android:summary="%s" />
<Preference
android:key="zetime_try_antiloss"
android:persistent="false"
android:title="@string/vibration_try"/>
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>

View File

@ -179,6 +179,11 @@ class TestDeviceSupport extends AbstractDeviceSupport {
}
@Override
public void onReadConfiguration(String config) {
}
@Override
public void onTestNewFunction() {