I dispositivi Android possono essere agganciati a diversi tipi di dock. Questi sono inclusi quelli per auto, per l'uso domestico e digitali o analogici. Lo stato del dock è generalmente strettamente collegato allo stato di ricarica, in quanto molte basi di ricarica forniscono sui 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 del desktop oppure disattivare completamente gli aggiornamenti se il dispositivo è agganciato al dock dell'auto. Al contrario, puoi massimizza gli aggiornamenti quando l'auto è agganciata al dock se il servizio in background è in fase di aggiornamento condizioni del traffico.
Lo stato del dock viene inoltre trasmesso come
Intent
,
che ti consente di chiedere se il dispositivo è agganciato alla base e
in quale tipo di base è agganciata
Ecco.
Determina lo stato attuale di docking
I dettagli dello stato del dock sono inclusi come extra in
trasmissione permanente
ACTION_DOCK_EVENT
un'azione. Poiché è fisso, puoi chiamare
registerReceiver()
,
passando null
come broadcast receiver. 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 di docking corrente dal
Extra di 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 in uno dei seguenti quattro dispositivi: diversi tipi di basi:
- Auto
- Scrivania
- Scrivania di fascia bassa (analogica)
- Scrivania di fascia alta (digitale)
Le ultime due opzioni vengono introdotte soltanto con il livello API Android 11, quindi è buona norma controllare tutti e tre i tipi di scrivanie quando ti interessano solo il tipo di base invece di essere digitale o analogica nello specifico:
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;