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>
Telefon powinien teraz 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 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 o błędach poza zwykłymi błędami dotyczącymi uprawnień, więc sprawdź, czy możesz wywoływać interfejsy API i obserwować ich działanie.
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 tej funkcji, gdy więcej niż 1 aplikacja próbuje użyć uprawnienia i interfejsów API, nie jest obsługiwane ani określone.
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
dla parametru powerSaveHint
, 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 na podstawie procentu w interfejsie harmonogramu oszczędzania baterii i wybiera 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 wyłącza się automatycznie, jeśli urządzenie jest naładowane do wskazanego progu i jest odłączone od zasilania. - 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 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.