Android 10 incluye una opción para programar el ahorro de batería que se llama según la rutina. Esta opción permite que una app elegida por el OEM proporcione señales al sistema para lograr una programación más inteligente del ahorro de batería. Esta opción requiere configuración y su implementación es opcional.
Configuración del dispositivo
Especificación del proveedor
Para notificar a la IU de Configuración que el dispositivo se configuró correctamente, usa tu
superposición de configuración para anular el valor config_batterySaverScheduleProvider
con
el nombre del paquete de tu app.
Por ejemplo, si quieres que el paquete de app com.google.android.apps.turbo
controlar la configuración según la rutina, deberías establecer este valor de configuración:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
Ahora, el teléfono debería mostrar la opción en función de la rutina. Para verificar, crea tu en la memoria flash de un teléfono y ve a Configuración > Batería > Batería Reducir > Programa de Ahorro de batería Debería aparecer la opción Basado en una rutina.
Umbral de desactivación predeterminado
El nuevo campo config_dynamicPowerSavingsDefaultDisableThreshold
especifica un
Nivel de batería en el que el sistema desactiva el ahorro de batería (si estaba activado)
por el programador según una rutina. El valor predeterminado del sistema es 80%, pero puedes
cambiarlo.
Configuración de la app
Permisos
Las APIs necesarias para que la app active el ahorro de batería están protegidas
por el permiso android.permission.POWER_SAVER
. Este es un
firma/privilegio, así que debes conceder a la aplicación que deseas que pueda activar
este permiso en tu privapp-whitelist
.
Ejemplo de cómo otorgar el permiso privapp
a una app:
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
Si no otorgas previamente este permiso a la versión de la app en el sistema de la imagen, la app no puede obtener el permiso ni llamar correctamente a las APIs. El el sistema no proporciona comentarios más allá de los errores de permiso habituales, por lo que verificar que puedes llamar a las APIs y observar sus efectos.
Instalación
Para que según la rutina funcione correctamente, debes preinstalar la app en la
una imagen del sistema con el permiso necesario. Otórgale el permiso POWER_SAVER
a una sola app y permítele controlar las APIs basadas en rutinas. El comportamiento de la función cuando más de una app intenta usar el permiso y las APIs no se admite ni especifica.
Activa el ahorro de batería
APIs
Si la configuración es exitosa hasta el momento, la app del OEM especificada en la configuración debe llamar correctamente al método asociado en PowerManager para activar Ahorro de batería:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
Si la opción de programación de ahorro de batería basada en rutina está habilitada y la app
llama a este método con un valor true
para powerSaveHint
y, luego, el ahorro de batería.
se enciende. Especifica disableThreshold
para que, si la app no pueda comunicarse,
el sistema, este sabe en qué porcentaje de batería es seguro encender
Ahorro de batería desactivado.
Esta API está sujeta a anulaciones del usuario y a posponer el ahorro de batería de la misma manera que el ahorro de batería automático basado en porcentajes. Consulta la Documentación de la API para obtener más información.
Para verificar que las APIs se llamen correctamente, consulta la configuración de consultas global para verificar lo siguiente: cambió el valor de la configuración de copia de seguridad según las llamadas a la API.
Por ejemplo, si el usuario seleccionó el modo de ahorro de batería de rutina y la app está
llamando a setDynamicPowerSaveHint(true, 10)
, la configuración global debería tener
estos valores:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1
Si, luego, llamas a setDynamicPowerSaveHint(false, 25)
, los valores deberían ser los siguientes:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
Puedes verificar estos valores con este comando adb
:
adb shell settings get global <setting-name>
Verificación
No existe una forma automática de verificar esta función el comportamiento que tendrá un OEM para decidir cuándo activar el ahorro de batería de rutina . Por lo tanto, los OEM son responsables de probar su integración para asegurarse de lo siguiente: de que el comportamiento cumpla con las expectativas. En particular, verifica que el dispositivo pueda cumplir con las siguientes tareas:
- El usuario selecciona En función del porcentaje en la IU de la programación del Ahorro de batería. y selecciona 15%. El ahorro de batería debería activarse automáticamente SOLO cuando hasta el 15% de la batería.
- El usuario selecciona En función de la rutina en la IU de la programación del Ahorro de batería. Cuándo
la app llama a la API con
true
y se activa el ahorro de batería. Además: el ahorro de batería se desactiva automáticamente si el dispositivo se carga en el nivel de umbral indicado y desenchufado. - El usuario selecciona ninguno en la IU de programación del ahorro de batería. Ahorro de batería NUNCA deben activarse automáticamente.
- Si la app activa el ahorro de batería y el usuario anula la batería manualmente Ahorro para volver a desactivarse (mediante Configuración rápida, Configuración, etc.), debería QUE SE PERMITIRA DESACTIVADA hasta que el usuario vuelva a encenderla manualmente o enchufa el entrada del dispositivo.