Les appareils Android peuvent être connectés à différents types de stations d'accueil. Il s'agit, par exemple, de stations d'accueil pour voitures, de stations d'accueil domestiques et de stations d'accueil 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 d'accueil alimentent des appareils sur la station d'accueil.
Votre application affecte la fréquence de mise à jour du téléphone en mode station d'accueil. Vous pouvez augmenter la fréquence de mise à jour d'une application d'actualités sportives lorsqu'elle se trouve dans la station d'accueil du bureau, 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 votre voiture est à l'arrêt si votre service en arrière-plan met à jour les conditions de circulation.
L'état de la station d'accueil est également diffusé en tant que Intent
persistant, ce qui vous permet de vérifier si l'appareil est sur sa station d'accueil et dans quel type de station d'accueil, 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 qu'extra 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 cette procédure:
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 l'ancrage à 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, il peut être installé dans l'un des quatre types de stations suivants:
- Voiture
- Bureau
- Bureau bas de gamme (analogique)
- Bureau (numérique) haut de gamme
Les deux dernières options ne sont introduites que dans l'API Android de niveau 11. Il est donc recommandé de vérifier les trois types de stations de recharge lorsque vous ne vous intéressez qu'au type de station de recharge plutôt qu'à son caractère numérique ou analogique spécifique :
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;