À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release au lieu de aosp-main pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Cette fonctionnalité permet aux partenaires de choisir comment synchroniser l'heure, que ce soit à partir du système d'exploitation Android Automotive OS (AAOS) ou des systèmes automobiles vers Android.
Pour garantir des implémentations de qualité, vous pouvez configurer AAOS pour qu'il utilise l'une des deux nouvelles propriétés VHAL décrites ci-dessous afin de propager efficacement les valeurs. Utilisez :
ANDROID_EPOCH_TIME pour utiliser Android comme source de référence pour l'heure. Le VHAL prend en charge cette propriété en écriture uniquement, qui communique les changements de temps d'Android à d'autres systèmes automobiles, tels que les unités de contrôle électronique (ECU) et le module de contrôle de la carrosserie (BCM).
EXTERNAL_CAR_TIME pour ne pas utiliser Android comme source de référence pour l'heure. Dans ce cas, le VHAL est compatible avec la propriété en lecture seuleEXTERNAL_CAR_TIME, qui communique les changements de temps d'autres systèmes automobiles (tels que les ECU et les BCM) à Android.
AAOS fournit également un TimeDetectorStrategy configurable pour vous aider à hiérarchiser les différentes sources de temps dans Android.
Android est la source de référence pour l'heure
Lorsque Android est utilisé comme source de temps, les OEM peuvent synchroniser d'autres systèmes automobiles (y compris les ECU et un BCM) avec l'heure Android.
Pour ce faire, l'implémentation de VHAL doit prendre en charge la propriété ANDROID_EPOCH_TIMEen écriture seule. Android publie une mise à jour de la propriété en lisant l'heure système, à la fois au démarrage et chaque fois que la source d'heure dans Android est modifiée.
Android n'est pas la source de référence pour l'heure
Lorsque Android n'est pas utilisé comme source de temps, vous pouvez synchroniser l'heure Android pour qu'elle soit la source de vérité pour l'heure (par exemple, avec un ECU ou le BCM). Dans ce cas, l'implémentation de VHAL doit prendre en charge la propriété en lecture seule EXTERNAL_CAR_TIME et publier des mises à jour de cette propriété chaque fois que la source de l'heure change ou recalibre l'horloge.
Les OEM doivent également s'assurer que:
Les valeurs config_autoTimeSourcesPriority sont contenues dans core/res/res/values/config.xml.
La propriété config_enableExternalCarTimeToExternalTimeSuggestion dans les configurations de superposition CarServices packages/services/Car/service/res/values/config.xml est définie sur true.
L'heure external a la priorité appropriée dans la configuration TimeDetectorStrategy. Pour en savoir plus, consultez la section Détection de l'heure GNSS.
Exemple :
<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list take precedence over lower ones.
See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
<item>external</item>
<item>gnss</item>
<item>network</item>
<item>telephony</item>
</string-array>
Détails de l'implémentation interne d'Android
Le flux suivant se produit lorsque la propriété VHAL ANDROID_EPOCH_TIME est prise en charge:
TimeHalService (dans CarServices) reçoit une diffusion du système Android pour Intent.ACTION_TIME_CHANGED.
TimeHalService publie une mise à jour de la propriété VHAL ANDROID_EPOCH_TIME.
Le VHAL peut propager la valeur temporelle reçue à différents ECU et/ou unités BCM.
Le flux suivant se produit lorsque la propriété VHAL EXTERNAL_CAR_TIME est prise en charge:
VHAL met à jour la propriété EXTERNAL_CAR_TIME.
TimeHalService (dans CarServices) lit la propriété via un abonnement.
TimeHalService crée et envoie un ExternalTimeSuggestion à TimeManager.
TimeManager transmet la suggestion à TimeDetectorService.
TimeDetectorService utilise TimeDetectorStrategy pour choisir une nouvelle heure système.
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,["# Configure AAOS time sources\n\nThis feature enables partners to choose how to synchronize time, whether from the Android\nAutomotive Operating System (AAOS) **or** from vehicular systems to Android.\nTo ensure quality implementations, you can configure AAOS to use one of the two new VHAL properties\ndescribed below to propagate the values effectively. Use:\n\n- `ANDROID_EPOCH_TIME` to **use** Android as the source of truth for time. The VHAL supports this *write-only* property, which communicates time changes from Android to other vehicular systems, such as the Electronic Control Units (ECU) and the Body Control Module (BCM).\n- `EXTERNAL_CAR_TIME` to **not use** Android as the source of truth for time. In this case, the VHAL supports the *read-only* `EXTERNAL_CAR_TIME` property, which communicates time changes from other vehicular systems (such as ECUs and BCM) to Android.\n\n| **Warning:** If you opt to support both properties (not recommended), the VHAL must **never** publish values to `EXTERNAL_CAR_TIME` that are dependent on `ANDROID_EPOCH_TIME`.\n\nAAOS also provides a configurable `TimeDetectorStrategy` to help you prioritize\ndifferent time sources within Android.\n\n### Android is the source of truth for time\n\nWhen Android is used as the source of time, OEMs can synchronize other car systems (including\nECUs and a BCM) with Android time.\n\nTo do so, the VHAL implementation must support the *write-only* property\n`ANDROID_EPOCH_TIME` property. Android publishes an update to the property by reading\nsystem time, both at boot time and whenever the time source in Android is changed.\n\n### Android is not the source of truth for time\n\nWhen Android is **not** used as the source of time, you can synchronize Android time\nto be the source of truth for time (for example, with an ECU or the BCM). In this case, the\nVHAL implementation must support the read-only property `EXTERNAL_CAR_TIME` and publish\nupdates to this property whenever the source of time changes or recalibrates the clock.\n\nOEMs must also ensure that:\n\n- The `config_autoTimeSourcesPriority` values are contained in `core/res/res/values/config.xml`.\n- The `config_enableExternalCarTimeToExternalTimeSuggestion` property in the CarServices overlay configs `packages/services/Car/service/res/values/config.xml` is set to `true`.\n- `external` time has the appropriate priority in the `TimeDetectorStrategy` configuration. To learn more, see [GNSS Time Detection](/devices/tech/connect/time/gnss-time-detection#implement). For example: \n\n ```scdoc\n \u003c!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list take precedence over lower ones.\n See com.android.server.timedetector.TimeDetectorStrategy for available sources. --\u003e\n \u003cstring-array name=\"config_autoTimeSourcesPriority\"\u003e\n \u003citem\u003eexternal\u003c/item\u003e\n \u003citem\u003egnss\u003c/item\u003e\n \u003citem\u003enetwork\u003c/item\u003e\n \u003citem\u003etelephony\u003c/item\u003e\n \u003c/string-array\u003e\n ```\n\n| The VHAL implementation must **not** publish updates for the natural progression of time.\n\nAndroid internal implementation details\n---------------------------------------\n\nThe following flow takes place when the `ANDROID_EPOCH_TIME` VHAL property is\nsupported:\n\n1. `TimeHalService` (in CarServices) receives a broadcast from the Android system for `Intent.ACTION_TIME_CHANGED`.\n2. `TimeHalService` publishes an update to the VHAL Property `ANDROID_EPOCH_TIME`.\n3. The VHAL can propagate the time value received to various ECUs and/or BCM units.\n\nThe following flow takes place when the `EXTERNAL_CAR_TIME` VHAL property is\nsupported:\n\n1. VHAL updates the `EXTERNAL_CAR_TIME` property.\n2. `TimeHalService` (in CarServices) reads the property through a subscription.\n3. `TimeHalService` creates and sends an `ExternalTimeSuggestion` to `TimeManager`.\n4. `TimeManager` forwards the suggestion to `TimeDetectorService`.\n5. `TimeDetectorService` uses `TimeDetectorStrategy` to choose a new system time."]]