Économiseur de batterie de routine

Android 10 introduit une option de planification d'économie de batterie appelée basée sur la routine . Cette option permet à une application choisie par le constructeur OEM de fournir des signaux au système pour une planification plus intelligente des économies de batterie. Cette option nécessite une configuration et est facultative à mettre en œuvre.

Configuration de l'appareil

Spécification du fournisseur

Pour informer l'interface utilisateur des paramètres que l'appareil est configuré correctement, utilisez votre superposition de configuration pour remplacer la valeur config_batterySaverScheduleProvider par le nom du package de votre application.

Par exemple, si vous souhaitez que le package d'application com.google.android.apps.turbo contrôle le paramètre de routine , vous devez définir cette valeur de configuration :

<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>

Le téléphone devrait maintenant afficher l'option basée sur la routine . Pour vérifier, créez votre image, flashez-la sur un téléphone et accédez à Paramètres > Batterie > Économiseur de batterie > Programme d'économie de batterie . L’option basée sur la routine devrait apparaître.

Seuil de désactivation par défaut

Le nouveau champ config_dynamicPowerSavingsDefaultDisableThreshold spécifie un niveau de batterie auquel le système désactive l'économiseur de batterie, s'il a été activé par le planificateur de routine basé sur une routine . La valeur par défaut du système est de 80 %, mais vous pouvez la modifier.

Configuration de l'application

Autorisations

Les API nécessaires à l'activation de l'économiseur de batterie à partir de l'application sont protégées par l'autorisation android.permission.POWER_SAVER . Il s'agit d'une autorisation de signature/privilégiée, accordez donc à l'application pour laquelle vous souhaitez pouvoir déclencher l'économiseur de batterie cette autorisation dans votre privapp-whitelist .

Un exemple d'octroi de l'autorisation privapp à une application :

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

Si vous n'accordez pas au préalable cette autorisation à la version de l'application sur l'image système, l'application ne peut pas acquérir l'autorisation ni appeler correctement les API. Le système ne fournit aucun retour au-delà des erreurs d'autorisation habituelles, alors vérifiez que vous pouvez appeler les API et observer leurs effets.

Installation

Pour que la routine fonctionne correctement, vous devez préinstaller l'application sur l'image système avec l'autorisation requise. Donnez à une seule application l'autorisation POWER_SAVER et autorisez-la à contrôler les API basées sur la routine . Le comportement de la fonctionnalité lorsque plusieurs applications tentent d'utiliser l'autorisation et les API n'est ni pris en charge ni spécifié.

Déclenchement de l'économiseur de batterie

Apis

En supposant que la configuration ait réussi jusqu'à présent, l'application OEM spécifiée dans la configuration devrait pouvoir appeler avec succès la méthode associée dans PowerManager pour déclencher l'économiseur de batterie :

public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)

Si l’option de programmation basée sur une routine d’économie de batterie est activée et que l’application appelle cette méthode avec une valeur true pour powerSaveHint , l’économiseur de batterie s’active. Spécifiez disableThreshold afin que si l'application ne peut pas communiquer avec le système, celui-ci sache toujours à quel pourcentage de batterie il est possible de désactiver l'économiseur de batterie en toute sécurité.

Cette API est soumise aux remplacements de l'utilisateur et à la répétition de l'économiseur de batterie de la même manière que l'économiseur de batterie automatique basé sur un pourcentage. Consultez la documentation de l'API pour plus d'informations.

Pour vérifier que les API sont appelées avec succès, interrogez les paramètres globaux pour vérifier que le paramètre de sauvegarde a changé de valeur en fonction des appels d'API .

Par exemple, si l'utilisateur a sélectionné le mode d'économie de batterie de routine et que l'application appelle setDynamicPowerSaveHint(true, 10) , les paramètres globaux doivent avoir ces valeurs :

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1

Si vous appelez ensuite setDynamicPowerSaveHint(false, 25) , les valeurs doivent être :

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0

Vous pouvez vérifier ces valeurs à l'aide de cette commande adb :

adb shell settings get global <setting-name>

Vérification

Il n'existe aucun moyen automatisé de vérifier cette fonctionnalité, car il n'existe aucun moyen de savoir quel comportement un OEM utilisera pour décider quand déclencher le mode d'économie de batterie de routine. Les OEM ont ainsi la responsabilité de tester leur intégration pour s'assurer que le comportement est conforme aux attentes. Vérifiez en particulier que l'appareil peut remplir les tâches suivantes :

  • L'utilisateur sélectionne en fonction du pourcentage dans l'interface utilisateur de planification de l'économiseur de batterie et sélectionne 15 %. L'économiseur de batterie devrait s'allumer automatiquement UNIQUEMENT lorsque la batterie atteint 15 %.
  • L'utilisateur sélectionne en fonction de la routine dans l'interface utilisateur de planification de l'économiseur de batterie. Lorsque l'application appelle l'API avec true , l'économiseur de batterie s'active. De plus, l'économiseur de batterie s'éteint automatiquement si l'appareil est chargé jusqu'au niveau seuil indiqué et débranché.
  • L’utilisateur n’en sélectionne aucun dans l’interface utilisateur de planification de l’économiseur de batterie. L'économiseur de batterie ne devrait JAMAIS s'activer automatiquement.
  • Si l'application active l'économiseur de batterie et que l'utilisateur désactive manuellement l'économiseur de batterie (à l'aide des paramètres rapides, des paramètres, etc.), il doit RESTER ÉTEINT jusqu'à ce que l'utilisateur le rallume manuellement ou branche l'appareil.