Docking-Status und -Typ ermitteln und überwachen

Android-Geräte können an verschiedene Docks angeschlossen werden. Dazu gehören Docks für Autos, Docks für zu Hause sowie digitale oder analoge Docks. Der Ladezustand des Docks ist in der Regel eng mit dem Ladestatus verknüpft, da viele Docks die angedockten Geräte mit Strom versorgen.

Deine App beeinflusst die Updaterate des Smartphones im Dock-Status. Sie können die Aktualisierungshäufigkeit einer Sportnachrichten-App erhöhen, wenn sie sich im Desktop-Dock befindet, oder Ihre Updates vollständig deaktivieren, wenn das Gerät angedockt ist. Umgekehrt können Sie die Anzahl der Updates maximieren, während das Auto angedockt ist, wenn Ihr Hintergrunddienst die Verkehrslage aktualisiert.

Der Dockstatus wird auch als fixiertes Intent übertragen. So können Sie abfragen, ob das Gerät angedockt ist, falls ja, in welcher Art.

Aktuellen Docking-Status ermitteln

Die Details zum Dockstatus sind zusätzlich in einem Sticky Broadcast der Aktion ACTION_DOCK_EVENT enthalten. Da sie fixiert ist, können Sie registerReceiver() aufrufen und null als Übertragungsempfänger übergeben. Das folgende Snippet zeigt, wie dieser Vorgang abgeschlossen wird:

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 Docking-Status aus dem Zusatz 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 Dock-Typ ermitteln

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

  • Auto
  • Desk (Schreibtisch)
  • Analoger (niedriger) Desktop
  • Digitaler High-End-Desktop

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 dem Docktyp interessiert sind und nicht an dem Typ des Docks.

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;