Skip to content
Vehicle properties
Time & clocksnot in the public Car API

EXTERNAL_CAR_TIME

What it is

Current date and time suggestion for the Car, encoded as Epoch time (in milliseconds). This value denotes the number of milliseconds seconds that have elapsed since 1/1/1970 UTC.

This property signals a change in CarTime to Android. If the property is supported, VHAL must report the most accurate current CarTime when this property is read, and publish a change to this property when the CarTime value has changed. An on-change event for this property must be published when CarTime changes for any reason other than the natural elapse of time (time delta smaller than 500ms should not trigger an on change event). Android will read and subscribe to this property to fetch time from VHAL. This can be useful to synchronize Android's time with other vehicle systems (dash clock etc). int64Values[0] = provided Epoch time (in milliseconds)

Whenever a new Value for the property is received, AAOS will create and send an "ExternalTimeSuggestion" to the "TimeDetectorService". If other sources do not have a higher priority, Android will use this to set the system time. For information on how to adjust time source priorities and how time suggestions are handled (including how Android handles gitter, drift, and minimum resolution) see Time Detector Service documentation.

Note that the property may take >0 ms to get propagated through the stack and, having a timestamped property helps reduce any time drift. So, for all reads to the property, the timestamp can be used to negate this drift: drift = elapsedTime - PropValue.timestamp effectiveTime = PropValue.value.int64Values[0] + drift

It is strongly recommended that this property must not be used to retrieve time from ECUs using protocols (GNSS, NTP, Telephony etc). Since these protocols are already supported by Android, it is recommended to use Android’s own systems for them instead of wiring those through the VHAL using this property.

WARNING: The value available through this property should not be dependent on value written by Android to ANDROID_EPOCH_TIME property in any way.

How the ID is built

A property ID is a 32-bit value packing four fields. Reading 0x11500608 apart:

FieldMaskValueMeans
Group0xf00000000x10000000SYSTEM
Area0x0f0000000x01000000GLOBAL
Type0x00ff00000x00500000INT64
Ordinal0x0000ffff0x000006080x608

Reading it from an app

This property is defined in the HAL but is not exposed as a constant in android.car.VehiclePropertyIds, so it is not reachable through CarPropertyManager from an ordinary app. It is used by the platform, or by vendor code running with system privileges.