Aby zapewnić okresy bezczynności w pojazdach, tryb garażu utrzymuje system
aby praca w
JobScheduler
z ograniczeniem
bezczynność może być wykonywana.
Co to jest Tryb garażowy?
Na połączonych urządzeniach, takich jak telefony, użytkownicy polegają na systemie są stabilne, aktualne i zoptymalizowane; Aby osiągnąć ten stan, platforma Android zapewnia bezczynny okno, w którym aplikacje mogą wykonywać zadania, gdy użytkownik nie do interakcji z urządzeniem. Telefon jest uznawany za nieaktywny, gdy użytkownik nie dotyka urządzenia. przez dłuższy czas (co najmniej 60 minut) i ekran jest wyłączony. W przeciwieństwie do telefonu, gdy samochód nie jest używany, jest wyłączony, co oznacza, że samochód nie ma czas bezczynności okno. Tryb garażowy zapewnia czas bezczynności w samochodzie.
Gdy użytkownik wyłączy samochód, system przejdzie w tryb garażu. Chociaż
samochód ma tryb garażowy, system jest włączony, wyświetlacz jest wyłączony,
nieaktywne zadania w kolejce JobScheduler
są wykonywane. Aby dowiedzieć się, jak włączyć tryb garażowy, przeczytaj artykuł
Wskazówki na temat implementacji urządzeń
Wytyczne dotyczące implementacji na urządzeniach
Aby włączyć tryb garażowy, po wyłączeniu pojazdu komunikat HAL (VHAL) pojazdu
musi wysłać
AP_POWER_STATE_REQ
ze stanem SHUTDOWN_PREPARE
z parametrem ustawionym na SHUTDOWN_ONLY
lub CAN_SLEEP
.
Aby stan SHUTDOWN_PREPARE
działał, kod VHAL musi zawierać 2 z nich:
(stan i dodatkowy parametr) w poleceniu AP_POWER_STATE_REQ
. Dzięki temu urządzenie przejdzie w tryb garażowy,
który wykrywa zaplanowane zadania w
JobScheduler
i zapobiega zawieszaniu lub wyłączeniu systemu do czasu, aż zadania
są już gotowe.
W jaki sposób implementacje urządzeń są powiązane ze strukturą Androida?
W przypadku trybu garażowego platforma prosi VHAL o przedłużenie czasu wyłączenia aż do przekroczenia wymaganego czasu trwania lub do wykonania wszystkich zadań, Kiedy system się wyłącza. W określonych okolicznościach opisane w CDD, implementacje urządzeń mogą spowodować wcześniejsze wyłączenie systemu. Więcej informacji zgodności z Androidem, zapoznaj się z artykułem na temat Dokument definicji zgodności (CDD).
Jeśli VHAL musi wyłączyć system przed zakończeniem trybu garażowego, VHAL może uruchomić
SHUTDOWN_PREPARE
z parametrem ustawionym na
SHUTDOWN_IMMEDIATELY
lub SLEEP_IMMEDIATELY
. Urządzenie
implementacje mogą korzystać z niej tylko w określonych okolicznościach.
gdy zasoby potrzebne do utrzymania działania systemu są niedostępne. Dla:
na przykład gdy bateria jest niewystarczająca.
Rysunek 1. Jak korzystać z Trybu garażowego
Jak deweloperzy aplikacji współpracują z Trybem garażowym?
Aplikacje i usługi nie współdziałają bezpośrednio z trybem garażowym. Zamiast tego:
aplikacje planują zadania w
JobScheduler
Te miejsca pracy są ograniczone
Bezczynność jest wykonywana w trybie garażowym.
Ten kod pokazuje, jak zaplanować uruchomienie zadania w trybie garażowym:
public class MyGarageModeJob extends JobService { ... } Context context = ...; int jobId = ...; ComponentName myGarageModeJobName = new componentName(context, MyGarageModeJob.class); JobInfo.Builder infoBuilder = new JobInfo.Builder(jobId, myGarageModeJobName) .setRequiresDeviceIdle(true); // Example of an optional constraint: infoBuilder.setRequiredNetworkType(NetworkType.NETWORK_TYPE_UNMETERED); JobScheduler jobScheduler = (JobScheduler) context .getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(infoBuilder.build());
Tryb debugowania garażu
Aby debugować tryb garażowy:- Aby włączyć kategorie logowania odpowiednie dla Trybu garażowego:
adb shell stop adb shell setprop log.tag.GarageMode VERBOSE adb shell setprop log.tag.Finsky VERBOSE adb shell setprop log.tag.CAR.POWER VERBOSE adb shell setprop log.tag.JobScheduler.Connectivity VERBOSE adb shell start
- Aby sprawdzić dane wyjściowe dziennika logcat, by pokazać, że uruchamia się tryb garażowy:
GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE GarageMode: [GarageMode]: Entering GarageMode GarageMode: [Controller]: Sending broadcast with action: com.android.server.jobscheduler.GARAGE_MODE_ON
- określić dane wyjściowe logcat, które wskazują, że tryb garażowy zakończył się (anulowano lub
gotowe):
lub[GarageMode]: GarageMode was canceled
[GarageMode]: GarageMode completed normally
Tryb garażowy zależy od stanu zasilania pojazdu, zgodnie z opisem powyżej.
- Sprawdź dane wyjściowe logcat, by sprawdzić, czy zostały wprowadzone prawidłowe stany zasilania:
CAR.POWER: starting shutdown prepare without Garage Mode GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE GarageMode: [GarageMode]: Entering GarageMode CAR.POWER: send shutdown prepare CAR.POWER: setPowerState=SHUTDOWN_PREPARE(7) param=0