Określanie i monitorowanie stanu i typu dokowania

Urządzenia z Androidem można zadokować w różnych rodzajach stacji dokujących. Te obejmują samochodowe i domowe stacje dokujące oraz cyfrowe i analogowe. Stan dokowania to jest ściśle powiązany ze stanem ładowania, ponieważ wiele stacji dokujących urządzeń zadokowanych.

Aplikacja wpływa na szybkość aktualizacji telefonu w stanie dokowania. Możesz zwiększyć częstotliwość aktualizacji aplikacji z wiadomościami sportowymi, gdy znajduje się ona w Docku na komputerze; całkowicie wyłączyć aktualizacje, jeśli urządzenie jest zadokowane w samochodzie. Możesz też maksymalizuj aktualizacje, gdy samochód jest zadokowany, gdy aktualizuje się usługa w tle warunki na drodze.

Stan dokowania również jest transmitowany jako przyklejony. Intent, pozwalając sprawdzić, czy urządzenie jest zadokowane i w jakiej stacji dokującej tak.

Określanie bieżącego stanu zadokowania

Informacje o stanie dokowania są dostępne jako dodatek w transmisja przyklejona ACTION_DOCK_EVENT działania. Jest przyklejony, więc możesz zadzwonić registerReceiver(), podając null jako odbiornik. Ten fragment kodu jak to zrobić:

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);

Bieżący stan dokowania można wyodrębnić z Dodatkowo EXTRA_DOCK_STATE:

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;

Określ bieżący typ stacji dokującej

Jeśli urządzenie jest zadokowane, może być zadokowane w dowolnym z tych 4 miejsc różne typy stacji dokujących:

  • Samochód
  • Biurko
  • Niskobudżetowe (analogowe) biurko
  • Biurko wysokiej klasy (cyfrowe)

Dwie ostatnie opcje zostały wprowadzone tylko w interfejsie API Androida na poziomie 11, więc warto sprawdzić wszystkie trzy typy biurek, jeśli interesują Cię tylko typu stacji dokującej, a nie cyfrowej czy analogowej:

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;