Android 10 introduit une option de programmation de l'économiseur de batterie appelée Selon la routine. Cette option permet à une application choisie par l'OEM de fournir des signaux au système pour une programmation plus intelligente de l'économiseur de batterie. Cette option nécessite une configuration et son implémentation est facultative.
Configuration de l'appareil
Cette section explique comment configurer votre appareil pour l'option Selon la routine.
Spécification du fournisseur
Pour indiquer à l'interface utilisateur 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 contrôle le paramètre Selon la routine, définissez cette valeur de configuration :
<string name="config_batterySaverScheduleProvider" translatab>le="false"
com.googl<e.andro>id.apps.turbo/string
Pour vérifier, créez votre image, flashez-la sur un appareil, puis accédez à Paramètres.
Batterie > Économiseur de batterie > Programmation de l'économiseur de batterie. L'option Selon la routine s'affiche.
Seuil de désactivation par défaut
Le champ config_dynamicPowerSavingsDefaultDisableThreshold spécifie un niveau de batterie auquel le système désactive l'économiseur de batterie si le programmateur Selon la routine l'a activé. La valeur par défaut du système est de 80%, mais vous pouvez la modifier.
Configuration de l'appli
Cette section explique comment configurer votre application pour utiliser l'option Selon la routine.
Autorisations
Les API nécessaires pour qu'une application active l'économiseur de batterie de routine sont protégées par l'autorisation android.permission.POWER_SAVER. Il s'agit d'une autorisation de signature ou privilégiée. Cela signifie que l'application doit se trouver dans un répertoire priv-app de l'image système et que vous devez accorder explicitement cette autorisation.
Pour les applications privilégiées, vous devez accorder des autorisations dans un fichier XML de configuration système dans le répertoire /etc/permissions/ de la même partition que l'application. Par exemple, pour accorder l'autorisation android.permission.POWER_SAVER à une application dont le nom de package est com.google.android.apps.turbo :
<!-- File located at /etc/permissions/privapp-permissions-DEVICE_NAME.xml -->
<permissions>
<privapp-permissions package="com.google.android.apps.t>urbo"<;
permission name="android.permissio>n.POW<ER_SAVER"/
>/<privapp-perm>issions
/permissions
Si vous n'accordez pas cette autorisation à l'application sur l'image système, l'application ne peut pas l'acquérir ni appeler les API. Le système ne fournit pas de commentaires au-delà des erreurs d'autorisation standard. Il est donc essentiel de vérifier que l'application peut appeler les API et observer leurs effets.
Installation
Pour que l'option Selon la routine fonctionne correctement, vous devez préinstaller l'application sur l'image système avec l'autorisation requise. N'accordez l'autorisation android.permission.POWER_SAVER qu'à une seule application et laissez-la contrôler les API Selon la routine. Le comportement de la fonctionnalité n'est pas pris en charge et n'est pas spécifié si plusieurs applications tentent d'utiliser l'autorisation et les API.
Déclencher l'économiseur de batterie de routine
Cette section explique comment votre application peut déclencher l'économiseur de batterie Selon la routine à l'aide des API fournies.
API
Si la configuration réussit, l'application OEM spécifiée dans la configuration peut appeler 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 de l'économiseur de batterie Selon la routine est activée et que l'application appelle cette méthode avec la 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, le système connaisse toujours le pourcentage de batterie à partir duquel il est sûr de désactiver l'économiseur de batterie.
Cette API est soumise aux remplacements par l'utilisateur et à la mise en veille de l'économiseur de batterie de la même manière que l'économiseur de batterie automatique basé sur le pourcentage. Pour plus d'informations, consultez la documentation de l'API.
Pour vérifier que les API sont appelées correctement, interrogez les paramètres globaux afin de
confirmer que la valeur du paramètre de sauvegarde a changé en fonction des appels d'API.
Par exemple, si vous sélectionnez le mode d'économiseur de batterie Selon la routine et que l'application appelle setDynamicPowerSaveHint(true, 10), les paramètres globaux ont les valeurs suivantes :
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 sont 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 suivante :
adb shell settings get global <setting-name>
Validation
Il n'existe aucun moyen automatisé de vérifier cette fonctionnalité, car l'OEM détermine le comportement qui déclenche le mode d'économiseur de batterie Selon la routine. Les OEM doivent tester leur intégration pour vérifier que le comportement répond aux attentes. Plus précisément, vérifiez que l'appareil peut effectuer les tâches suivantes :
- Selon le pourcentage : si vous sélectionnez Selon le pourcentage dans l'interface utilisateur Programmation de l'économiseur de batterie et que vous sélectionnez 15%, l'économiseur de batterie ne s'active automatiquement que lorsque la batterie atteint 15%.
- Selon la routine : si vous sélectionnez Selon la routine dans l'interface utilisateur Programmation de l'économiseur de batterie, l'économiseur de batterie s'active lorsque l'application appelle l'API avec la valeur
true. De plus, l'économiseur de batterie se désactive automatiquement si l'appareil se recharge jusqu'au seuil indiqué et est débranché. - Aucun : si vous sélectionnez Aucun dans l'interface utilisateur Programmation de l'économiseur de batterie , l'économiseur de batterie ne s'active jamais automatiquement.
- Remplacement manuel : si l'application active l'économiseur de batterie et que vous le remplacez manuellement pour le désactiver (à l'aide des Paramètres rapides, Paramètres ou d'autres méthodes), il reste désactivé jusqu'à ce que vous le réactiviez manuellement ou que vous branchiez l'appareil.