Les appareils Android peuvent être insérés dans différents types de stations d'accueil. Il s'agit, par exemple, de stations d'accueil pour voitures, stations d'accueil pour la maison, et stations numériques ou analogiques. L'état de la station d'accueil est généralement étroitement lié à l'état de charge, car de nombreuses stations alimentent les appareils sur la station d'accueil.
L'application a une incidence sur la fréquence de mise à jour du téléphone lorsqu'il est sur la station d'accueil. Vous pouvez augmenter la fréquence des mises à jour d'une application d'actualités sportives lorsqu'elle se trouve sur la station d'accueil pour ordinateur, ou désactiver complètement vos mises à jour si l'appareil est sur sa station d'accueil. À l'inverse, vous pouvez maximiser vos mises à jour lorsque la voiture est sur sa station d'accueil si votre service d'arrière-plan met à jour les conditions de trafic.
L'état de la station d'accueil est également diffusé sous forme de Intent
persistante, ce qui vous permet de demander si l'appareil est sur la station d'accueil et dans quel type de station, le cas échéant.
Déterminer l'état actuel de la station d'accueil
Les détails de l'état de la station d'accueil sont inclus en tant que paramètres supplémentaires dans une annonce persistante de l'action ACTION_DOCK_EVENT
. Comme il est persistant, vous pouvez appeler registerReceiver()
en transmettant null
en tant que broadcast receiver. L'extrait de code suivant montre comment effectuer ce processus:
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);
Vous pouvez extraire l'état actuel de la station d'accueil à partir de l'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;
Déterminer le type de station d'accueil actuel
Si un appareil est sur sa station d'accueil, vous pouvez le placer dans l'un des quatre types de stations suivants:
- Voiture
- Bureau
- Bureau analogique d'entrée de gamme
- Bureau (numérique) haut de gamme
Les deux dernières options ne sont introduites que dans le niveau d'API Android 11. Il est donc recommandé de vérifier les trois types de bureaux uniquement lorsque vous vous intéressez uniquement au type de station plutôt qu'à son format numérique ou analogique spécifiquement:
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;