Urządzenia z Androidem można zadokować w różnych stacjach dokujących. Mogą to być samochodowe stacje dokujące, domowe stacje dokujące oraz stacje dokujące cyfrowe lub analogowe. Stan stacji dokującej jest zazwyczaj ściśle powiązany ze stanem ładowania, ponieważ wiele stacji dokujących zasila urządzenia zadokowane.
W stanie zadokowania aplikacja ma wpływ na szybkość aktualizacji telefonu. Możesz zwiększyć częstotliwość aktualizacji aplikacji z wiadomościami sportowymi, gdy znajduje się w stacji dokującej na komputerze, lub całkowicie wyłączyć aktualizacje, jeśli urządzenie jest zadokowane w samochodzie. Możesz też zmaksymalizować aktualizacje, gdy samochód jest zadokowany, jeśli usługa w tle aktualizuje informacje o natężeniu ruchu.
Stan stacji dokującej jest też transmitowany jako przyklejony Intent
, co pozwala sprawdzić, czy urządzenie jest zadokowane, a jeśli tak, to w jaki sposób.
Określanie bieżącego stanu dokowania
Szczegóły stanu zadokowania są dodatkowe w transmisji przyklejonej działania ACTION_DOCK_EVENT
. Ponieważ jest to element przyklejony, możesz wywołać registerReceiver()
, przekazując w parametrze null
jako odbiornik. Ten fragment kodu pokazuje, jak wykonać ten proces:
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żesz wyodrębnić z dodatkowego elementu 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ślanie bieżącego typu stacji dokującej
Jeśli urządzenie jest zadokowane, można je zadokować w jednym z 4 różnych typów stacji dokujących:
- Samochód
- Biurko
- Niskopoziomowe biurko (analogowe)
- Wysokiej klasy (cyfrowe) biurko
Dwie ostatnie opcje zostały wprowadzone tylko w interfejsie Android API na poziomie 11, dlatego jeśli interesuje Cię tylko typ stacji dokującej, a nie cyfrowy czy analogowy, dobrze jest sprawdzić wszystkie 3 typy biurek:
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;