Docking-Status und -Typ ermitteln und überwachen

Android-Geräte können an verschiedenen Arten von Docks angedockt werden. Diese wie Autodocks, Homedocks und digitale oder analoge Docks. Der Dock-Status ist in der Regel eng mit dem Ladestatus verbunden, da viele Docks Strom für angedockten Geräten.

Ihre App wirkt sich im Dock-Status auf die Aktualisierungsrate des Telefons aus. Sie können die Anzahl die Aktualisierungshäufigkeit einer Sportnachrichten-App, wenn sie sich im Desktop-Dock befindet Ihre Updates vollständig deaktiviert, wenn das Gerät angedockt ist. Umgekehrt können Sie Updates im angedockten Auto maximieren, wenn der Hintergrunddienst aktualisiert wird Verkehrslage.

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

Aktuellen Docking-Status ermitteln

Die Details zum Dock-Status sind in einem dauerhafte Übertragung der ACTION_DOCK_EVENT Aktion ausführen. Da es fixiert ist, können Sie registerReceiver(), null wird 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 der EXTRA_DOCK_STATE Extra:

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

Ein angedocktes Gerät kann in einem der folgenden vier Bereiche angedockt werden: verschiedene Dock-Typen:

  • Auto
  • Schreibtisch
  • Analoger Low-End-Desktop
  • Digitale High-End-Desktops

Die letzten beiden Optionen werden erst mit Android API Level 11 eingeführt. Es ist also wenn Sie nur an den Desktoptypen interessiert sind, und nicht speziell auf digitale oder analoge Ladedock,

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;