Garagenmodus

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.

Garagenmodus

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>
  1. 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
    
  2. 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
    
  3. Zur Ermittlung der Logcat-Ausgabe, die anzeigt, dass der Garagenmodus beendet ist (abgebrochen oder abgeschlossen):
    [GarageMode]: GarageMode was canceled
    
    oder
    [GarageMode]: GarageMode completed normally
    

    Der Garagenmodus hängt vom Energiestatus des Fahrzeugs ab (siehe Beschreibung). .

  4. Ü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