Detecção de horário externo

No Android 12 e versões mais recentes, o Android tem a opção de usar uma fonte de tempo externa para sugerir tempos de época Unix para o serviço time_detector. Isso não é ativado por padrão no AOSP.

A origem de tempo externa permite que os fabricantes de dispositivos forneçam sugestões de tempo personalizadas para o Android. Depois de receber sugestões da origem de tempo externa, o serviço time_detector determina se vai atualizar o relógio do sistema usando as regras de priorização configuradas.

Implementação

Para oferecer suporte à detecção de horário externo, os fabricantes de dispositivos precisam implementar um componente que envie sugestões de horário externo para o serviço time_detector por uma chamada de API do sistema.

Para configurar a origem externa, use o arquivo de configuração do servidor do sistema core/res/res/values/config.xml. Adicione o valor external a config_autoTimeSourcesPriority.

O exemplo abaixo instrui o Android a dar a prioridade mais alta a sugestões de horário externo ao configurar o relógio do sistema. Se não houver uma sugestão de horário externo válida disponível, a próxima origem, gnss neste caso, será usada.

<string-array name="config_autoTimeSourcesPriority">
        <item>external</item>
        <item>gnss</item>
</string-array>

Para fornecer ao sistema uma sugestão de horário externo, use o método suggestExternalTime() em TimeManager. Se a origem externa for configurada usando config_autoTimeSourcesPriority no arquivo de configuração e nenhuma sugestão de horário de prioridade mais alta estiver disponível, o Android usará o carimbo de data/hora transmitido a esse método para definir o horário da época Unix atual.