Docking-Status und -Typ ermitteln und überwachen

Android-Geräte können an verschiedenen Arten von Docks angedockt werden. Dazu gehören Autodocks, Heimdocks sowie digitale oder analoge Docks. Der Dock-Status ist typischerweise eng mit dem Ladestatus verknüpft, da viele Docks Strom für angedockte Geräte liefern.

Ihre App wirkt sich auf die Aktualisierungsrate des Smartphones im angedockten Zustand aus. Sie können die Aktualisierungshäufigkeit einer App mit Sportnachrichten erhöhen, wenn das Gerät im Desktop-Dock ist, oder die Updates vollständig deaktivieren, wenn das Gerät im Autodock ist. Umgekehrt können Sie die Anzahl der Updates maximieren, während das Auto angedockt ist, wenn Ihr Hintergrunddienst die Verkehrslage aktualisiert.

Der Dock-Status wird auch als fixiertes Intent übertragen, sodass Sie abfragen können, ob das Gerät angedockt ist und in welcher Art von Dock.

Aktuellen Docking-Status ermitteln

Die Details zum Dockstatus sind als Extra in einer Sticky-Übertragung der Aktion ACTION_DOCK_EVENT enthalten. Da die Datei fixiert ist, können Sie registerReceiver() aufrufen und null als Übertragungsempfänger übergeben. Das folgende Snippet zeigt, wie Sie diesen Vorgang ausführen:

Kotlin

val dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter ->
    context.registerReceiver(null, ifilter)
}

Java

IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);

Sie können den aktuellen Andockstatus aus dem EXTRA_DOCK_STATE extrahieren:

Kotlin

val dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1
val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED

Java

int dockState -1;
if (dockStatus != null) {
  dockState = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);
}
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

Aktuellen Docking-Typ ermitteln

Wenn ein Gerät angedockt ist, kann es in einem der folgenden vier Docktypen angedockt werden:

  • Auto
  • Schreibtisch
  • Low-End-(analoger) Schreibtisch
  • Digitale High-End-Desktops

Die letzten beiden Optionen werden nur in Android API-Level 11 eingeführt. Daher empfiehlt es sich, alle drei Desktoptypen zu prüfen, wenn Sie nur an der Art des Docks interessiert sind, und nicht speziell an digitalen oder analogen Ladestationen:

Kotlin

val isCar: Boolean = dockState == EXTRA_DOCK_STATE_CAR
val isDesk: Boolean = dockState == EXTRA_DOCK_STATE_DESK
        || dockState == EXTRA_DOCK_STATE_LE_DESK
        || dockState == EXTRA_DOCK_STATE_HE_DESK

Java

boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
                 dockState == EXTRA_DOCK_STATE_LE_DESK ||
                 dockState == EXTRA_DOCK_STATE_HE_DESK;