I dispositivi Android possono essere agganciati a diversi tipi di dock. tra cui dock per auto, dock per casa e dock digitali o analogici. In genere, lo stato del dock è strettamente collegato allo stato di ricarica, poiché molti dock forniscono alimentazione ai dispositivi agganciati alla base.
L'app influisce sulla frequenza di aggiornamento del telefono quando il telefono è inserito nel dock. Puoi aumentare la frequenza di aggiornamento di un'app di notizie sportive quando è nel dock della scrivania o disattivare completamente gli aggiornamenti se il dispositivo è agganciato al dock in auto. Al contrario, puoi massimizzare gli aggiornamenti quando l'auto è agganciata al dock se il servizio in background aggiorna le condizioni del traffico.
Lo stato del dock viene anche trasmesso come fisso
Intent
,
che ti consente di chiedere se il dispositivo è inserito nel dock e in quale tipo
di dock.
Determinare lo stato di docking attuale
I dettagli sullo stato del dock sono inclusi come extra in una trasmissione persistente dell'azione ACTION_DOCK_EVENT
. Poiché è fisso, puoi chiamare
registerReceiver()
,
trasmettendo null
come ricevitore della trasmissione. Lo snippet seguente
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 di collegamento attuale dal
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;
Determina il tipo di dock attuale
Se un dispositivo è inserito nel dock, può essere inserito in uno dei seguenti quattro diversi tipi di dock:
- Auto
- Scrivania
- Scrivania di fascia bassa (analogica)
- Scrivania di fascia alta (digitale)
Le ultime due opzioni sono introdotte solo nel livello API Android 11, quindi è buona norma controllare tutti e tre i tipi di scrivanie quando ti interessa solo il tipo di dock, anziché essere digitale o analogico in particolare:
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;