Esse recurso permite que os parceiros escolham como sincronizar o tempo, seja do Android Automotive Operating System (AAOS) ou de sistemas veiculares para o Android. Para garantir implementações de qualidade, você pode configurar o AAOS para usar uma das duas novas propriedades VHAL descritas abaixo para propagar os valores de forma eficaz. Usar:
-
ANDROID_EPOCH_TIME
para usar o Android como fonte de verdade para o tempo. O VHAL suporta essa propriedade somente de gravação , que comunica as mudanças de tempo do Android para outros sistemas veiculares, como as Unidades de Controle Eletrônico (ECU) e o Módulo de Controle do Corpo (BCM). -
EXTERNAL_CAR_TIME
para não usar o Android como fonte de verdade para o tempo. Nesse caso, o VHAL suporta a propriedadeEXTERNAL_CAR_TIME
somente leitura , que comunica as mudanças de horário de outros sistemas veiculares (como ECUs e BCM) para o Android.
O AAOS também fornece um TimeDetectorStrategy
configurável para ajudá-lo a priorizar diferentes fontes de tempo no Android.
Android é a fonte da verdade para o tempo
Quando o Android é usado como fonte de tempo, os OEMs podem sincronizar outros sistemas do carro (incluindo ECUs e um BCM) com o tempo do Android.
Para isso, a implementação do VHAL deve suportar a propriedade ANDROID_EPOCH_TIME
da propriedade somente gravação . O Android publica uma atualização para a propriedade lendo a hora do sistema, tanto no momento da inicialização quanto sempre que a fonte de tempo no Android for alterada.
Android não é a fonte da verdade para o tempo
Quando o Android não é usado como fonte de tempo, você pode sincronizar o tempo do Android para ser a fonte de verdade para o tempo (por exemplo, com uma ECU ou BCM). Nesse caso, a implementação do VHAL deve suportar a propriedade somente leitura EXTERNAL_CAR_TIME
e publicar atualizações nesta propriedade sempre que a fonte de tempo mudar ou recalibrar o relógio.
Os OEMs também devem garantir que:
- os valores
config_autoTimeSourcesPriority
estão contidos emcore/res/res/values/config.xml
. - a propriedade
config_enableExternalCarTimeToExternalTimeSuggestion
na sobreposição CarServices configspackages/services/Car/service/res/values/config.xml
) é definida comotrue
. - a hora externa tem a prioridade apropriada na configuração
TimeDetectorStrategy
. Para saber mais, consulte Detecção de tempo GNSS . Por exemplo:<!-- 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>
Detalhes da implementação interna do Android
O fluxo a seguir ocorre quando a propriedade ANDROID_EPOCH_TIME
VHAL é suportada:
-
TimeHalService
(em CarServices) recebe uma transmissão do sistema Android paraIntent.ACTION_TIME_CHANGED
. -
TimeHalService
publica uma atualização para a propriedade VHALANDROID_EPOCH_TIME
. - O VHAL pode propagar o valor de tempo recebido para várias ECUs e/ou unidades BCM.
O fluxo a seguir ocorre quando a propriedade EXTERNAL_CAR_TIME
VHAL é suportada:
- VHAL atualiza a propriedade
EXTERNAL_CAR_TIME
. -
TimeHalService
(em CarServices) lê a propriedade através de uma assinatura. -
TimeHalService
cria e envia umExternalTimeSuggestion
paraTimeManager
. -
TimeManager
encaminha a sugestão paraTimeDetectorService
. -
TimeDetectorService
usaTimeDetectorStrategy
para escolher uma nova hora do sistema.