Zepp OS: Fix AGPS section not available on some devices

This commit is contained in:
José Rebelo
2025-03-24 22:33:15 +00:00
parent 03aefddc0f
commit 820a4d5426
4 changed files with 20 additions and 7 deletions
@@ -47,6 +47,7 @@ public class DeviceSettingsPreferenceConst {
public static final String PREF_SCREEN_SLEEP_MODE = "pref_screen_sleep_mode";
public static final String PREF_SCREEN_LIFT_WRIST = "pref_screen_lift_wrist";
public static final String PREF_SCREEN_PASSWORD = "pref_screen_password";
public static final String PREF_SCREEN_GPS = "pref_screen_gps";
public static final String PREF_SCREEN_ALWAYS_ON_DISPLAY = "pref_screen_always_on_display";
public static final String PREF_SCREEN_HEARTRATE_MONITORING = "pref_screen_heartrate_monitoring";
public static final String PREF_SCREEN_INACTIVITY_EXTENDED = "pref_screen_inactivity_extended";
@@ -577,7 +577,7 @@ public abstract class ZeppOsCoordinator extends HuamiCoordinator {
}
public boolean hasGps(final GBDevice device) {
return supportsConfig(device, ZeppOsConfigService.ConfigArg.WORKOUT_GPS_PRESET);
return supportsConfig(device, ZeppOsConfigService.ConfigArg.AGPS_UPDATE_TIME);
}
public boolean supportsAutoBrightness(final GBDevice device) {
@@ -25,6 +25,7 @@ import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -229,12 +230,18 @@ public class ZeppOsSettingsCustomizer extends HuamiSettingsCustomizer {
DeviceSettingsPreferenceConst.PREF_USER_FITNESS_GOAL_NOTIFICATION
));
hidePrefIfNoneVisible(handler, DeviceSettingsPreferenceConst.PREF_HEADER_WORKOUT, Arrays.asList(
DeviceSettingsPreferenceConst.PREF_HEADER_GPS,
DeviceSettingsPreferenceConst.PREF_SCREEN_GPS,
DeviceSettingsPreferenceConst.PREF_WORKOUT_START_ON_PHONE,
DeviceSettingsPreferenceConst.PREF_WORKOUT_SEND_GPS_TO_BAND,
DeviceSettingsPreferenceConst.PREF_HEADER_WORKOUT_DETECTION,
DeviceSettingsPreferenceConst.PREF_WORKOUT_KEEP_SCREEN_ON
));
hidePrefIfNoneVisible(handler, DeviceSettingsPreferenceConst.PREF_HEADER_GPS, Arrays.asList(
DeviceSettingsPreferenceConst.PREF_GPS_MODE_PRESET,
DeviceSettingsPreferenceConst.PREF_GPS_BAND,
DeviceSettingsPreferenceConst.PREF_GPS_COMBINATION,
DeviceSettingsPreferenceConst.PREF_GPS_SATELLITE_SEARCH
));
hidePrefIfNoneVisible(handler, DeviceSettingsPreferenceConst.PREF_HEADER_AGPS, Arrays.asList(
DeviceSettingsPreferenceConst.PREF_AGPS_EXPIRY_REMINDER_ENABLED,
DeviceSettingsPreferenceConst.PREF_AGPS_EXPIRY_REMINDER_TIME,
@@ -327,7 +334,9 @@ public class ZeppOsSettingsCustomizer extends HuamiSettingsCustomizer {
};
handler.addPreferenceHandlerFor(DeviceSettingsPreferenceConst.PREF_GPS_MODE_PRESET, onGpsPresetUpdated);
onGpsPresetUpdated.onPreferenceChange(prefGpsPreset, prefGpsPreset.getValue());
if (!StringUtils.isBlank(prefGpsPreset.getValue())) {
onGpsPresetUpdated.onPreferenceChange(prefGpsPreset, prefGpsPreset.getValue());
}
}
// The gps combination can only be chosen if the gps band is single band
@@ -408,8 +417,7 @@ public class ZeppOsSettingsCustomizer extends HuamiSettingsCustomizer {
}
for (final String prefKey : supportedPref) {
final boolean deviceHasConfig = prefs.getBoolean(DeviceSettingsUtils.getPrefKnownConfig(prefKey), false);
if (deviceHasConfig) {
if (supportsConfig(prefs, prefKey)) {
// This preference is supported, don't hide
return;
}
@@ -419,6 +427,10 @@ public class ZeppOsSettingsCustomizer extends HuamiSettingsCustomizer {
pref.setVisible(false);
}
private boolean supportsConfig(final Prefs prefs, final String prefKey) {
return prefs.getBoolean(DeviceSettingsUtils.getPrefKnownConfig(prefKey), false);
}
private void enforceMinMax(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final ZeppOsConfigService.ConfigArg config) {
final String prefKey = config.getPrefKey();
final Preference pref = handler.findPreference(prefKey);
@@ -2,12 +2,12 @@
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
android:icon="@drawable/ic_gps_location"
android:key="pref_header_gps"
android:key="pref_screen_gps"
android:persistent="false"
android:title="@string/pref_gps_header">
<PreferenceCategory
android:key="pref_gps_header_category"
android:key="pref_header_gps"
android:title="@string/pref_gps_header">
<ListPreference