Déterminer et surveiller l'état et le type de la station d'accueil
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Les appareils Android peuvent être placés sur différents types de stations d'accueil. Ces
qu'il s'agisse de stations d'accueil pour voitures, de stations d'accueil et de stations d'accueil numériques ou analogiques. L'état de la station d'accueil est
En général, elle est étroitement liée à l'état de charge. En effet, de nombreuses stations fournissent l'alimentation
appareils sur la station d'accueil.
Votre application a une incidence sur la fréquence de mise à jour du téléphone dans l'état de la 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 de l'ordinateur ; ou
désactiver complètement les mises à jour
si l'appareil est sur sa station d'accueil. À l'inverse, vous pouvez
maximiser les mises à jour lorsque la voiture est sur sa station d'accueil si votre service d'arrière-plan est en cours de mise à jour
les conditions de circulation.
L'état de la station d'accueil est également diffusé
Intent
,
vous permettant de demander si l'appareil est sur la station d'accueil et dans quel type de station d'accueil
donc.
Déterminer l'état actuel de la station d'accueil
Les détails concernant l'état de la station d'accueil sont inclus en supplément dans un
diffusion persistante du
ACTION_DOCK_EVENT
action. Comme il est collant, vous pouvez appeler
registerReceiver()
,
en transmettant null
en tant que broadcast receiver. L'extrait 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 du
EXTRA_DOCK_STATE
supplément:
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 sur l'un des quatre
types de stations d'accueil différents:
- Voiture
- Bureau
- Bureau bas de gamme (analogique)
- Bureau (numérique) haut de gamme
Les deux dernières options ne sont introduites que dans le niveau d'API Android 11.
une bonne pratique pour vérifier les trois types de bureaux lorsque vous n'êtes intéressé que par
le type de station d'accueil plutôt que d'être
numérique ou analogique en particulier:
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;
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Determine and monitor the docking state and type\n\nAndroid-powered devices can be docked into different kinds of docks. These\ninclude car docks, home docks, and digital or analog docks. The dock state is\ntypically closely linked to the charging state, as many docks provide power to\ndocked devices.\n\nYour app affects the phone's update rate in the dock state. You can increase\nthe update frequency of a sports news app when it's in the desktop dock, or\ndisable your updates completely if the device is car docked. Conversely, you can\nmaximize your updates while car docked if your background service is updating\ntraffic conditions.\n\nThe dock state is also broadcast as a sticky\n[Intent](/reference/android/content/Intent),\nletting you query whether the device is docked and in which kind of dock if\nso.\n\nDetermine the current docking state\n-----------------------------------\n\nThe dock state details are included as an extra in a\n[sticky broadcast](/topic/security/risks/sticky-broadcast) of the\n[ACTION_DOCK_EVENT](/reference/android/content/Intent#ACTION_DOCK_EVENT)\naction. Because it's sticky, you can call\n[registerReceiver()](/reference/android/content/Context#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter)),\npassing in `null` as the broadcast receiver. The following snippet\nshows how to complete this process: \n\n### Kotlin\n\n```kotlin\nval dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter -\u003e\n context.registerReceiver(null, ifilter)\n}\n```\n\n### Java\n\n```java\nIntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);\nIntent dockStatus = context.registerReceiver(null, ifilter);\n```\n\nYou can extract the current docking status from the\n`EXTRA_DOCK_STATE` extra:\n\n\n### Kotlin\n\n```kotlin\nval dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1\nval isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED\n```\n\n### Java\n\n```java\nint dockState -1;\nif (dockStatus != null) {\n dockState = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);\n}\nboolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;\n```\n\nDetermine the current dock type\n-------------------------------\n\nIf a device is docked, it can be docked in any of the following four\ndifferent dock types:\n\n- Car\n- Desk\n- Low-End (Analog) desk\n- High-End (Digital) desk\n\nThe latter two options are only introduced in Android API level 11, so it's\ngood practice to check for all three desk types when you are only interested in\nthe type of dock rather than it being digital or analog specifically: \n\n### Kotlin\n\n```kotlin\nval isCar: Boolean = dockState == EXTRA_DOCK_STATE_CAR\nval isDesk: Boolean = dockState == EXTRA_DOCK_STATE_DESK\n || dockState == EXTRA_DOCK_STATE_LE_DESK\n || dockState == EXTRA_DOCK_STATE_HE_DESK\n```\n\n### Java\n\n```java\nboolean isCar = dockState == EXTRA_DOCK_STATE_CAR;\nboolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||\n dockState == EXTRA_DOCK_STATE_LE_DESK ||\n dockState == EXTRA_DOCK_STATE_HE_DESK;\n```"]]