Les vibrations et le GPS sont considérés comme des services système, et non des applications. Ainsi, ils ne peuvent pas être exemptés sur le paramètre habituel lorsque l'économiseur de batterie est activé. Cependant, depuis Android 8.0 Oreo il est possible de modifier certains paramètres de l'économiseur de batterie.
Ceci est lié à la BATTERY_SAVER_CONSTANTS
les paramètres globaux qui peuvent être modifiés par ADB.
/**
* Battery Saver specific settings
* This is encoded as a key=value list, separated by commas. Ex:
*
* "vibration_disabled=true,adjust_brightness_factor=0.5"
*
* The following keys are supported:
*
* <pre>
* advertise_is_enabled (boolean)
* datasaver_disabled (boolean)
* enable_night_mode (boolean)
* launch_boost_disabled (boolean)
* vibration_disabled (boolean)
* animation_disabled (boolean)
* soundtrigger_disabled (boolean)
* fullbackup_deferred (boolean)
* keyvaluebackup_deferred (boolean)
* firewall_disabled (boolean)
* gps_mode (int)
* adjust_brightness_disabled (boolean)
* adjust_brightness_factor (float)
* force_all_apps_standby (boolean)
* force_background_check (boolean)
* optional_sensors_disabled (boolean)
* aod_disabled (boolean)
* quick_doze_enabled (boolean)
* </pre>
* @hide
* @see com.android.server.power.batterysaver.BatterySaverPolicy
*/
@UnsupportedAppUsage
@TestApi
public static final String BATTERY_SAVER_CONSTANTS = "battery_saver_constants";
Pour les valeurs entières possibles de gps_mode
:
/**
* Either the location providers shouldn't be affected by battery saver,
* or battery saver is off.
*/
public static final int LOCATION_MODE_NO_CHANGE = 0;
/**
* In this mode, the GPS based location provider should be disabled when battery saver is on and
* the device is non-interactive.
*/
public static final int LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF = 1;
/**
* All location providers should be disabled when battery saver is on and
* the device is non-interactive.
*/
public static final int LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF = 2;
/**
* In this mode, all the location providers will be kept available, but location fixes
* should only be provided to foreground apps.
*/
public static final int LOCATION_MODE_FOREGROUND_ONLY = 3;
/**
* In this mode, location will not be turned off, but LocationManager will throttle all
* requests to providers when the device is non-interactive.
*/
public static final int LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF = 4;
Comme indiqué sur XDA Developers, Comment personnaliser le mode économie de batterie dans Android 8.0 Oreo ? :
- Installer ADB y Pilotes USB si nécessaire.
- Connectez l'appareil Android au PC par USB et attendez que l'appareil soit détecté.
- Ouvrez une invite de commande et tapez
adb devices
pour être sûr que l'ADB le détecte.
- Type
adb shell
- Décider quelles valeurs devaient être modifiées. La saisie de plusieurs clés est prise en charge avec une séparation par des virgules. Pour cette question spécifique :
vibration_disabled=false,gps_mode=0
- Type
settings put global battery_saver_constants <new_value>
. Notez que le changement est permanent, donc pour l'annuler, l'utilisateur doit saisir manuellement les valeurs opposées à la place.
Sur les appareils enracinés, il est également possible d'exécuter la commande settings
directement depuis l'appareil en utilisant des applications de terminal comme Termux.