Der Garagemodus sorgt dafür, dass das System
damit Jobs in
JobScheduler
eingeschränkt durch
Inaktivität möglich.
Was ist der Garagenmodus?
Auf verbundenen Geräten wie Smartphones ist das System stabil, aktuell und optimiert sind. Um diesen Zustand zu erreichen, hat die Android-Plattform bietet eine inaktiv Zeit Fenster, in dem Apps Aufgaben ausführen können, wenn der Nutzer dies nicht tut mit dem Gerät interagieren können. Ein Smartphone gilt als inaktiv, wenn der Nutzer nicht tippt für einen längeren Zeitraum (60 Minuten oder länger) und das Display wird dann ausgeschaltet. Anders als bei einem Smartphone wird das Auto ausgeschaltet, wenn es gerade nicht verwendet wird. enthält keine Inaktivitätszeit . Mit dem Garagenmodus wird die Leerlaufzeit im Auto sichergestellt.
Wenn der Nutzer ein Auto ausgeschaltet hat, wechselt das System in den Garagenmodus. Während ein
sich im Garagenmodus befindet, das System eingeschaltet ist, das Display ausgeschaltet ist und
Inaktive Jobs in der Warteschlange JobScheduler
werden ausgeführt. Informationen zum Implementieren des Garagenmodus finden Sie unter
Richtlinien für die Geräteimplementierung
Richtlinien für die Geräteimplementierung
Zum Aktivieren des Garagenmodus fährt der Fahrzeug-HAL (VHAL) ab, wenn das Fahrzeug abfährt.
muss gesendet werden
AP_POWER_STATE_REQ
mit dem Status SHUTDOWN_PREPARE
wobei der Parameter auf SHUTDOWN_ONLY
oder CAN_SLEEP
eingestellt ist.
Damit der Status SHUTDOWN_PREPARE
wirksam wird, muss die VHAL die beiden
Parameter (der Status und der zusätzliche Parameter) für den Befehl AP_POWER_STATE_REQ
. Dadurch kann das Gerät in den Garagenmodus wechseln,
die geplante Aufträge in
JobScheduler
und verhindert, dass das System in den Ruhemodus versetzt oder heruntergefahren wird, bis die Jobs
abgeschlossen sind.
Wie stellen Geräteimplementierungen eine Verbindung zum Android-Framework her?
Im Garagenmodus fordert das Framework die VHAL an, die Zeit für das Herunterfahren zu verlängern bis entweder die erforderliche Dauer überschritten oder alle Jobs ausgeführt wurden, in dem das System heruntergefahren wird. Unter bestimmten Umständen im CDD können Geräteimplementierungen das System früher herunterfahren. Weitere Informationen zu Kompatibilitätsanforderungen für Android finden Sie in der Kompatibilitätsdefinitionsdokument (CDD).
Wenn die VHAL das System herunterfahren muss, bevor der Garagenmodus abgeschlossen ist, kann die VHAL
SHUTDOWN_PREPARE
mit dem Parameter auf
SHUTDOWN_IMMEDIATELY
oder SLEEP_IMMEDIATELY
. Gerät
Implementierungen können dies nur unter bestimmten Umständen verwenden, in der Regel
wenn die Ressourcen, die zum Aufrechterhalten des Systems erforderlich sind, nicht verfügbar sind. Für
wenn die Akkukapazität nicht ausreicht.
Abbildung 1: Garagenmodus
Wie arbeiten App-Entwickler mit dem Garage-Modus zusammen?
Apps und Dienste interagieren nicht direkt mit dem Garagenmodus. Stattdessen
Apps planen Jobs in
JobScheduler
Diese Jobs eingeschränkt durch
inaktivität werden im Garagenmodus ausgeführt.
Der folgende Code zeigt, wie Sie einen Job zur Ausführung im Garage-Modus planen:
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());
Fehlerbehebung im Garage-Modus
So beheben Sie Fehler im Garage-Modus: <ph type="x-smartling-placeholder">- </ph>
- So aktivieren Sie Protokollierungskategorien, die für den Garage-Modus relevant sind:
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
- So überprüfen Sie die Logcat-Ausgabe, um anzugeben, dass der Garagenmodus gestartet wird:
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
- Zur Ermittlung der Logcat-Ausgabe, die anzeigt, dass der Garagenmodus beendet ist (abgebrochen oder
abgeschlossen):
oder[GarageMode]: GarageMode was canceled
[GarageMode]: GarageMode completed normally
Der Garagenmodus hängt vom Energiestatus des Fahrzeugs ab (siehe Beschreibung). .
- Überprüfen Sie die Logcat-Ausgabe, um anzugeben, ob der richtige Energiestatus eingegeben wurde:
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