Określanie i monitorowanie stanu i typu dokowania

Urządzenia z Androidem można zadokować w różnych rodzajach stacji dokujących. Należą do nich stacje dokujące samochodowe, domowe stacje dokujące oraz cyfrowe i analogowe stacje dokujące. Stan stacji dokującej jest zazwyczaj ściśle powiązany ze stanem ładowania, ponieważ wiele stacji dokujących zasila podłączone urządzenia.

Aplikacja wpływa na częstotliwość aktualizacji telefonu w stanie dokowania. Możesz zwiększyć częstotliwość aktualizacji aplikacji z informacjami sportowymi, gdy jest ona umieszczona w docku na biurku, lub całkowicie wyłączyć aktualizacje, jeśli urządzenie jest w stacyjce samochodowej. Z drugiej strony, możesz zmaksymalizować aktualizacje podczas korzystania z samochodu, jeśli usługa działająca w tle aktualizuje informacje o warunkach na drodze.

Stan stacji dokującej jest też przesyłany jako element przypinany Intent, dzięki czemu możesz sprawdzić, czy urządzenie jest w stacji dokującej i jaki rodzaj stacji dokującej jest używany.

Określanie bieżącego stanu zadokowania

Szczegóły stanu dokowania są zawarte jako dodatkowy element w trwałym komunikacie o działaniu ACTION_DOCK_EVENT. Ponieważ jest on przyklejony, możesz wywołać registerReceiver(), podając null jako odbiornik. Ten fragment kodu ilustruje, jak to zrobić:

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

Bieżący stan dokowania możesz wyodrębnić z dodatkowego pola EXTRA_DOCK_STATE:

KotlinJava
val dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1
val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED
int dockState -1;
if (dockStatus != null) {
  dockState
= dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);
}
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

Określanie bieżącego typu dokowania

Urządzenie zadokowane może być zadokowane w jednej z tych 4 rodzajów stacji dokujących:

  • Samochód
  • Biurko
  • Biurko analogowe (niskobudżetowe)
  • Wysokiej klasy (cyfrowy)

Te 2 ostatnie opcje są dostępne tylko w interfejsie Android API w wersji 11, dlatego warto sprawdzić wszystkie 3 typy biurka, jeśli interesuje Cię tylko typ stacji dokującej, a nie to, czy jest ona cyfrowa czy analogowa:

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