Android 10 introduit une option de programmation pour l'économiseur de batterie appelée basée sur une routine. Cette option permet à une application choisie par l'OEM fournissent des signaux au système pour une planification plus intelligente de l'économiseur de batterie. Cette option nécessite une configuration et est facultative.
Configuration de l'appareil
Spécification du fournisseur
Pour avertir l'interface utilisateur des paramètres que l'appareil est correctement configuré, utilisez votre
superposition de configuration pour remplacer la valeur config_batterySaverScheduleProvider
par
le nom de package de votre application.
Par exemple, si vous souhaitez que le package d'application com.google.android.apps.turbo
le paramètre basé sur la routine, vous devez définir la valeur de configuration suivante:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
L'option basée sur une routine devrait maintenant s'afficher sur le téléphone. Pour vérifier, créez votre sur un téléphone, puis accédez à Paramètres > Batterie > Piles ou batterie Économique > Programmation de l'économiseur de batterie. L'option basée sur une routine doit s'afficher.
Seuil de désactivation par défaut
Le nouveau champ config_dynamicPowerSavingsDefaultDisableThreshold
spécifie
niveau de batterie auquel le système désactive l'économiseur de batterie, s'il était activé
par le planificateur basé sur une routine. La valeur par défaut du système est de 80%, mais vous pouvez
le modifier.
Configuration de l'application
Autorisations
Les API nécessaires à l'application pour activer l'économiseur de batterie sont protégées
par l'autorisation android.permission.POWER_SAVER
. Il s'agit d'un
de signature ou d'autorisation privilégiée, accordez-lui donc
économiseur de batterie cette autorisation dans votre privapp-whitelist
.
Voici un exemple d'attribution 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 ce niveau d'autorisation à la version de l'appli installée sur le système l'application ne peut pas obtenir l'autorisation ni appeler correctement les API. La système ne fournit aucun commentaire au-delà des erreurs d'autorisation habituelles. vérifier que vous pouvez appeler les API et observer leurs effets.
Installation
Pour que l'option basée sur une routine fonctionne correctement, vous devez préinstaller l'application sur l'
l'image système avec l'autorisation requise. N'attribuer l'POWER_SAVER
qu'à une seule application
et lui permettre de contrôler les API basées sur une routine. Comportement de
la fonctionnalité lorsque plusieurs applications tentent d'utiliser l'autorisation et que les API sont
non pris en charge et non spécifié.
Activer l'économiseur de batterie
API
En supposant que la configuration ait déjà été effectuée, l'application OEM spécifiée dans la configuration doit pouvoir appeler la méthode associée dans PowerManager pour déclencher économiseur de batterie:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
Si l'option de programmation basée sur la routine est activée et que l'application
appelle cette méthode avec une valeur true
pour powerSaveHint
, puis l'économiseur de batterie.
s'allume. Spécifiez disableThreshold
afin que si l'application ne peut pas communiquer avec
le système sait quand même le pourcentage de charge de la batterie.
désactiver l'économiseur de batterie.
Cette API est soumise aux forçages par l'utilisateur et à la répétition de l'économiseur de batterie. comme économiseur de batterie automatique basé sur un pourcentage. Consultez le Documentation de l'API pour en savoir plus.
Pour vérifier que les API sont bien appelées, interrogez les paramètres globaux pour vérifier que la valeur du paramètre de support a changé selon les appels d'API.
Par exemple, si l'utilisateur a sélectionné le mode Économiseur de batterie de routine et que l'application est
appelant setDynamicPowerSaveHint(true, 10)
, les paramètres globaux doivent indiquer
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 les suivantes:
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 la commande adb
:
adb shell settings get global <setting-name>
Validation
Il n'existe aucun moyen automatisé de valider cette fonctionnalité, car nous n'avons aucun moyen de savoir Quel comportement un OEM utilisera-t-il pour décider quand déclencher l'économiseur de batterie de routine ? . Les OEM doivent donc tester leur intégration pour s'assurer le comportement répond aux attentes. Vérifiez en particulier que l'appareil effectuer les tâches suivantes:
- L'utilisateur sélectionne en fonction du pourcentage dans l'interface utilisateur de programmation de l'économiseur de batterie. et sélectionne 15%. L'économiseur de batterie doit s'activer automatiquement UNIQUEMENT lorsque atteignant 15% de batterie.
- L'utilisateur sélectionne en fonction de la routine dans l'interface utilisateur de programmation de l'économiseur de batterie. Quand ?
l'application appelle l'API avec
true
, l'économiseur de batterie s'active. En outre, l'économiseur de batterie s'éteint automatiquement si l'appareil est chargé du seuil indiqué et débranché. - L'utilisateur sélectionne none dans l'interface utilisateur de programmation de l'économiseur de batterie. Économiseur de batterie ne doivent JAMAIS s'activer automatiquement.
- Si l'application active l'économiseur de batterie et que l'utilisateur remplace manuellement le paramètre de batterie l'économiseur de batterie se désactive de nouveau (dans les Réglages rapides, les réglages, etc.), mais il devrait RESTER. Éteint jusqu'à ce que l'utilisateur le rallume manuellement ou qu'il branche l'appareil l'appareil.