W Androidzie 10 wprowadzamy opcję harmonogramu oszczędzania baterii o nazwie na podstawie rutyny. Dzięki tej opcji aplikacja wybrana przez producenta OEM dostarcza sygnały do systemu, co pozwala na bardziej inteligentne planowanie oszczędzania baterii. Ta opcja wymaga skonfigurowania i jest opcjonalna.
Konfiguracja urządzenia
Specyfikacja dostawcy
Aby powiadomić interfejs ustawień, że urządzenie jest skonfigurowane prawidłowo, użyj
config w celu zastąpienia wartości config_batterySaverScheduleProvider
na
nazwa pakietu Twojej aplikacji.
Jeśli na przykład chcesz, aby pakiet aplikacji com.google.android.apps.turbo
użyj ustawienia na podstawie rutyny, ustaw tę wartość 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ę pojawić opcja Na podstawie rutyny.
Domyślny próg wyłączenia
Nowe pole config_dynamicPowerSavingsDefaultDisableThreshold
określa parametr
poziom naładowania baterii, przy którym system wyłącza oszczędzanie baterii (jeśli było włączone)
przez algorytm szeregowania na podstawie rutyny. Domyślne ustawienie systemu to 80%, ale możesz
i ją zmienić.
Konfiguracja aplikacji
Uprawnienia
Interfejsy API potrzebne aplikacji do włączania oszczędzania baterii są chronione
dzięki uprawnieniom 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 przyznania 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. Daj POWER_SAVER
tylko jednej aplikacji
i zezwolić mu na kontrolowanie interfejsów API opartych na rutynie. 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. Zobacz Dokumentacja 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)
, powinny one wyglądać tak:
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. OEM jest więc odpowiedzialny za testowanie integracji, aby mieć pewność, sposób działania jest zgodny z oczekiwaniami. 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 opcję na podstawie rutyny w interfejsie harmonogramu oszczędzania baterii. Kiedy
aplikacja wywołuje interfejs API, używając funkcji
true
, włącza się oszczędzanie 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 powinien włączać się automatycznie.
- Jeśli aplikacja włączy oszczędzanie baterii, a użytkownik ręcznie zastąpi ją innymi wygaszacza, aby wyłączyć go ponownie (za pomocą Szybkich ustawień, Ustawień itp.), powinien NASTĘPNIE WYŁĄCZONE, dopóki użytkownik nie włączy go ponownie ręcznie albo nie podłączy urządzenia.