W Androidzie 10 wprowadzamy opcję harmonogramu oszczędzania baterii o nazwie na podstawie rutyny. Ta opcja umożliwia aplikacji wybranej przez producenta sprzętu przesyłanie sygnałów do systemu w celu inteligentniejszego planowania oszczędzania baterii. Ta opcja wymaga skonfigurowania i jest opcjonalna.
Konfiguracja urządzenia
Specyfikacja dostawcy
Aby powiadomić interfejs Ustawienia, że urządzenie jest prawidłowo skonfigurowane, użyj nakładki konfiguracji, aby zastąpić wartość config_batterySaverScheduleProvider
nazwą pakietu aplikacji.
Jeśli na przykład chcesz, aby pakiet aplikacji com.google.android.apps.turbo
kontrolował ustawienie na podstawie rutyny, użyj tej wartości konfiguracji:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
Teraz telefon powinien wyświetlić opcję Na podstawie rutyny. Aby to sprawdzić, utwórz obraz, Flash go w telefonie i wybierz kolejno Ustawienia > Bateria > Akumulatorowe Oszczędzanie > Harmonogram oszczędzania baterii. Powinna się wyświetlić opcja na podstawie procedury.
Domyślny próg wyłączenia
Nowe pole config_dynamicPowerSavingsDefaultDisableThreshold
określa poziom naładowania baterii, przy którym system wyłącza oszczędzanie baterii, jeśli zostało ono włączone przez harmonogram oparty na rutynie. Domyślne ustawienie systemu to 80%, ale możesz je zmienić.
Konfiguracja aplikacji
Uprawnienia
Interfejsy API potrzebne do włączenia trybu oszczędzania baterii przez aplikację są chronione uprawnieniem android.permission.POWER_SAVER
. To jest
uprawnienia do podpisu/uprawnień, przyznaj więc aplikację, którą chcesz aktywować
oszczędzanie baterii w aplikacji privapp-whitelist
.
Przykład przyznawania aplikacji uprawnienia privapp
:
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
Jeśli nie przyznasz wstępnie tych uprawnień wersji aplikacji w systemie aplikacja nie może uzyskać tych uprawnień ani prawidłowo wywoływać interfejsów API. system nie przekazuje żadnych informacji poza normalnymi błędami dotyczącymi uprawnień, sprawdź, czy możesz wywoływać interfejsy API i obserwować ich efekty.
Instalacja
Aby funkcja Na podstawie rutyny działała prawidłowo, musisz wstępnie zainstalować aplikację
i obraz systemu z wymaganymi uprawnieniami. Przyznaj uprawnienia POWER_SAVER
tylko jednej aplikacji i pozwalaj jej na sterowanie interfejsami API na podstawie rutynowych działań. Zachowanie
gdy więcej niż 1 aplikacja próbuje użyć tego uprawnienia, a interfejsy API są
nieobsługiwany i nieokreślony.
Włączanie oszczędzania baterii
Interfejsy API
Zakładając, że konfiguracja się udała, aplikacja OEM określona w konfiguracji powinna możliwość wywołania powiązanej metody w usłudze PowerManager w celu aktywowania oszczędzanie baterii:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
Jeśli włączona jest opcja harmonogramu oszczędzania baterii na podstawie rutyny, a aplikacja
wywołuje tę metodę z wartością true
przez powerSaveHint
, a następnie oszczędzanie baterii
włącza się. Określ disableThreshold
, tak aby aplikacja nie mogła się komunikować z:
system nadal będzie znał poziom naładowania baterii, który można bezpiecznie włączyć
wyłączyć oszczędzanie baterii.
Ten interfejs API może w taki sam sposób stosować ustawienia oszczędzania baterii przez użytkowników jako automatycznego oszczędzania baterii procentowo. Więcej informacji znajdziesz w dokumentacji interfejsu API.
Aby sprawdzić, czy interfejsy API są wywoływane, wykonaj globalne zapytanie, aby sprawdzić, czy wartość ustawienia bazowego zmienia się według wywołań interfejsu API.
Na przykład: jeśli użytkownik wybrał rutynowy tryb oszczędzania baterii, a aplikacja jest
wywołującego setDynamicPowerSaveHint(true, 10)
, ustawienia globalne powinny mieć
te wartości:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1
Jeśli następnie wywołasz funkcję setDynamicPowerSaveHint(false, 25)
, wartości powinny być takie:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
Możesz sprawdzić te wartości za pomocą tego polecenia adb
:
adb shell settings get global <setting-name>
Weryfikacja
Nie można zweryfikować tej funkcji automatycznie, ponieważ nie można się o tym dowiedzieć Jakiego zachowania zastosuje producent OEM, aby zdecydować, kiedy włączyć rutynowe oszczędzanie baterii? i trybu uzyskiwania zgody. Producenci OEM są więc odpowiedzialni za przetestowanie integracji, aby upewnić się, że jej działanie spełnia oczekiwania. W szczególności sprawdź, czy urządzenie może wykonaj następujące zadania:
- Użytkownik wybiera opcję na podstawie wartości procentowej w interfejsie harmonogramu oszczędzania baterii i 15%. Oszczędzanie baterii powinno włączyć się automatycznie TYLKO wtedy, gdy jak bateria jest naładowana do 15%.
- Użytkownik wybiera na podstawie rutyny w interfejsie oszczędzania baterii. Gdy aplikacja wywołuje interfejs API z parametrem
true
, włącza się tryb oszczędzania baterii. Dodatkowo: oszczędzanie baterii automatycznie wyłącza się, gdy urządzenie jest naładowane określony próg i odłączony. - Użytkownik wybiera Brak w interfejsie harmonogramu oszczędzania baterii. Oszczędzanie baterii NIGDY nie powinno włączać się automatycznie.
- Jeśli aplikacja włączy tryb oszczędzania baterii, a użytkownik ręcznie wyłączy go ponownie (za pomocą Szybkich ustawień, Ustawień itp.), tryb ten powinien pozostać wyłączony, dopóki użytkownik nie włączy go ponownie ręcznie lub nie podłączy urządzenia do ładowania.