I dispositivi Android possono essere agganciati a diversi tipi di basi. Sono inclusi quelli per auto, per uso domestico e digitali o analogici. Lo stato del dock è in genere strettamente collegato allo stato di ricarica, dato che molte basi forniscono l'alimentazione ai dispositivi agganciati alla base.
L'app influisce sulla frequenza di aggiornamento dello smartphone nello stato del dock. Puoi aumentare la frequenza di aggiornamento di un'app di notizie sportive quando è nel dock per desktop oppure disattivare completamente gli aggiornamenti se il dispositivo è agganciato al dock dell'auto. Al contrario, puoi massimizzare gli aggiornamenti quando l'auto è agganciata alla base se il servizio in background aggiorna le condizioni del traffico.
Lo stato della base viene trasmesso anche come valore staticoIntent
,
perché tu possa eseguire query per sapere se il dispositivo è agganciato alla base e a quale tipo di base.
Determina lo stato attuale di docking
I dettagli dello stato del dock sono inclusi come extra in una
trasmissione fissa dell'azione
ACTION_DOCK_EVENT
. Poiché è permanente, puoi chiamare
registerReceiver()
,
passando null
come ricevitore di trasmissione. Il seguente snippet mostra come completare questa procedura:
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);
Puoi estrarre lo stato corrente dell'aggancio dall'extra 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;
Determina il tipo di dock attuale
Se un dispositivo è agganciato alla base, può essere agganciato a uno dei seguenti quattro diversi tipi di basi:
- Auto
- Scrivania
- Low-End (analogico)
- Scrivania di fascia alta (digitale)
Le ultime due opzioni vengono introdotte solo nel livello API Android 11, perciò è buona norma controllare tutti e tre i tipi di scrivanie se ti interessa solo il tipo di dock, anziché essere digitale o analogico specificamente:
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;