La vibración y el GPS se consideran servicios del sistema, no aplicaciones. Por lo tanto, no pueden excluirse en la configuración habitual cuando el Ahorro de batería está habilitado. Sin embargo, desde Android 8.0 Oreo, es posible ajustar algunas configuraciones para el Ahorro de batería.
Esto está relacionado con la configuración global de BATTERY_SAVER_CONSTANTS
que se puede modificar a través de ADB.
/**
* Ajustes específicos del Ahorro de batería
* Esto se codifica como una lista de clave=valor, separada por comas. Ej:
*
* "vibration_disabled=true,adjust_brightness_factor=0.5"
*
* Las siguientes claves son compatibles:
*
* * 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)
*
* @hide
* @see com.android.server.power.batterysaver.BatterySaverPolicy
*/
@UnsupportedAppUsage
@TestApi
public static final String BATTERY_SAVER_CONSTANTS = "battery_saver_constants";
Para los posibles valores enteros de gps_mode
:
/**
* Ya sea que los proveedores de ubicación no deben verse afectados por el ahorro de batería,
* o el ahorro de batería está desactivado.
*/
public static final int LOCATION_MODE_NO_CHANGE = 0;
/**
* En este modo, el proveedor de ubicación basado en GPS debe estar desactivado cuando el ahorro de batería está activado y
* el dispositivo no es interactivo.
*/
public static final int LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF = 1;
/**
* Todos los proveedores de ubicación deben estar desactivados cuando el ahorro de batería está activado y
* el dispositivo no es interactivo.
*/
public static final int LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF = 2;
/**
* En este modo, todos los proveedores de ubicación estarán disponibles, pero las correcciones de ubicación
* solo se proporcionarán a aplicaciones en primer plano.
*/
public static final int LOCATION_MODE_FOREGROUND_ONLY = 3;
/**
* En este modo, la ubicación no se apagará, pero el LocationManager reducirá todas las
* solicitudes a proveedores cuando el dispositivo no esté interactivo.
*/
public static final int LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF = 4;
Como se indica en XDA Developers, Cómo personalizar el modo Ahorro de batería en Android 8.0 Oreo:
- Instalar ADB y controladores USB si es necesario.
- Conectar el dispositivo Android a la PC con USB y esperar hasta que el dispositivo sea detectado
- Abrir una terminal y escribir
adb devices
para asegurarse de que ADB lo detecta.
- Escribir
adb shell
- Decidir qué valores se quieren cambiar. Se admiten múltiples claves de entrada con separación por comas. Para esta pregunta específica:
vibration_disabled=false,gps_mode=0
- Escribir
settings put global battery_saver_constants
. Tenga en cuenta que el cambio es permanente, por lo que para deshacerlo, el usuario debe ingresar manualmente los valores opuestos.
En dispositivos con root, también es posible ejecutar el comando settings
directamente desde el dispositivo utilizando aplicaciones de terminal como Termux.