Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Ahorro de batería de rutina

Android 10 presenta una opción de programación de ahorro de batería denominada basada en la rutina . Esta opción permite que una aplicación elegida por el OEM proporcione señales al sistema para una programación de ahorro de batería más inteligente. Esta opción requiere configuración y es opcional de implementar.

Configuración del dispositivo

Especificación del proveedor

Para notificar a la IU de Configuración que el dispositivo está configurado correctamente, use su superposición de configuración para anular el valor config_batterySaverScheduleProvider con el nombre del paquete de su aplicación.

Por ejemplo, si desea que el paquete de la aplicación com.google.android.apps.turbo controle la configuración de rutina basada en , entonces debe 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 basada en la rutina . Para verificar, cree su imagen, transfiérala a un teléfono y vaya a Configuración> Batería> Ahorro de batería> Programa de ahorro de batería . Debería aparecer la opción basada en la 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 lo activó el programador de rutina basado en . El sistema predeterminado es 80%, pero puede cambiarlo.

Configuración de la aplicación

Permisos

Las API necesarias para que la aplicación active el ahorro de batería desde la aplicación están protegidas por el permiso android.permission.POWER_SAVER . Este es un permiso de firma / privilegiado, así que conceda a la aplicación que desea que pueda activar el ahorro de batería este permiso en su privapp-whitelist .

Un ejemplo de privapp otorgar el permiso de una aplicación privapp a una aplicación:

<privapp-permissions package="com.google.android.apps.turbo">
   <permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>

Si no concede previamente este permiso a la versión de la aplicación en la imagen del sistema, la aplicación no podrá adquirir el permiso ni llamar correctamente a las API. El sistema no proporciona ningún comentario más allá de los errores de permiso habituales, así que verifique que puede llamar a las API y observar sus efectos.

Instalación

Para que la rutina funcione correctamente, debe preinstalar la aplicación en la imagen del sistema con el permiso requerido. POWER_SAVER solo a una aplicación el permiso POWER_SAVER y permítale controlar las API de rutina . El comportamiento de la función cuando más de una aplicación intenta utilizar el permiso y las API no es compatible ni está especificado.

Activación del ahorro de batería

API

Suponiendo que la configuración se haya realizado correctamente hasta ahora, la aplicación OEM especificada en la configuración debería poder llamar correctamente al método asociado en PowerManager para activar el 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 la rutina está habilitada y la aplicación llama a este método con un valor true para powerSaveHint , entonces se activa el ahorro de batería. Especifique disableThreshold para que si la aplicación no puede comunicarse con el sistema, el sistema aún sepa en qué porcentaje de batería es seguro desactivar el ahorro de batería.

Esta API está sujeta a anulaciones por parte del usuario y a que el ahorro de batería se posponga de la misma manera que el ahorro de batería automático basado en porcentajes. Consulte la documentación de la API para obtener más información.

Para verificar que las API se hayan llamado correctamente, consulte la configuración global para verificar que la configuración de respaldo cambió el valor de acuerdo con las llamadas a la API .

Por ejemplo, si el usuario seleccionó el modo de ahorro de batería de rutina y la aplicación llama a setDynamicPowerSaveHint(true, 10) , la configuración global debe tener estos valores:

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1

Si luego llama a setDynamicPowerSaveHint(false, 25) , los valores deben ser:

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0

Puede verificar estos valores usando este comando adb :

adb shell settings get global <setting-name>

Verificación

No hay una forma automatizada de verificar esta función porque no hay forma de saber qué comportamiento utilizará un OEM para decidir cuándo activar el modo de ahorro de batería de rutina. Por lo tanto, los OEM son responsables de probar su integración para asegurarse de que el comportamiento cumpla con las expectativas. En particular, verifique que el dispositivo pueda realizar las siguientes tareas:

  • El usuario selecciona según el porcentaje en la interfaz de usuario del programa de ahorro de batería y selecciona 15%. El ahorro de batería debe activarse automáticamente SOLO cuando se alcanza el 15% de batería.
  • El usuario selecciona según la rutina en la interfaz de usuario del programa de ahorro de batería. Cuando la aplicación llama a la API con true , se activa el ahorro de batería. Además, el ahorro de batería se apaga automáticamente si el dispositivo se carga al nivel de umbral indicado y se desconecta.
  • El usuario selecciona ninguno en la interfaz de usuario del programa de ahorro de batería. El ahorro de batería NUNCA debe activarse automáticamente.
  • Si la aplicación activa el ahorro de batería y el usuario anula manualmente el ahorro de batería para que se apague nuevamente (usando Configuración rápida, Configuración, etc.), debe PERMANECER APAGADA hasta que el usuario lo vuelva a encender manualmente o conecte el dispositivo.