O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Visão geral do tempo

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Esta página descreve como a detecção de hora e fuso horário funciona no Android. Isso inclui como o Android detecta automaticamente horários e fusos horários, opções de configuração para fabricantes de dispositivos e informações de teste.

Visão geral de horários e fusos horários

Para determinar a hora local de um usuário para exibição em locais como a barra de status, o Android acompanha dois estados relacionados, mas independentes:

  • O tempo atual da época do Unix
  • O fuso horário atual

A hora de época atual do Unix e o fuso horário atual são estados de todo o dispositivo, o que significa que são compartilhados por todos os usuários de um dispositivo.

O tempo de época atual do Unix não é um valor fixo. Ele é atualizado automaticamente para refletir a passagem do tempo. Além da passagem normal do tempo, o tempo de época do Unix atual de um dispositivo é ajustado se for considerado incorreto, por exemplo, após um dispositivo perder energia.

O fuso horário atual determina o ajuste a ser feito para converter a hora de época do Unix atual em uma hora local. Por exemplo, durante o verão em Los Angeles, o dispositivo subtrai 7 horas do tempo atual da época do Unix e no inverno subtrai 8 horas.

Para dar suporte a esses cálculos de hora local, todos os dispositivos Android têm um banco de dados de todas as regras de fuso horário global . Para obter mais informações sobre regras de fuso horário, consulte Regras de fuso horário .

Quando um usuário viaja para um novo local que usa um fuso horário diferente, o horário da época do Unix atual não precisa ser ajustado, mas o usuário normalmente deseja ver a hora local em vez da hora em seu local anterior. Alterar o fuso horário atual garante que o deslocamento correto seja aplicado ao horário de época do Unix atual para exibir a hora local correta para o novo local.

O AOSP permite que os usuários controlem independentemente se a hora e o fuso horário são definidos automaticamente para eles por meio dos seguintes mecanismos.

  • Detecção automática de tempo: Garante que o dispositivo tenha o tempo de época Unix atual correto.
  • Detecção automática de fuso horário: Garante que o dispositivo tenha o fuso horário atual correto.

Detecção automática de tempo

Esta seção fornece uma visão geral do serviço time_detector que gerencia a detecção automática de tempo, controles de usuário, opções de configuração e detalhes de teste.

O serviço time_detector

O serviço time_detector , presente em dispositivos com Android 10 ou superior, gerencia a detecção automática de tempo. Ele ajusta o tempo de época Unix atual do dispositivo conforme necessário quando a detecção automática de tempo está habilitada.

O serviço time_detector está sempre em um dos dois estados: incerto ou certo . O estado certo ou incerto do serviço é determinado por sugestões de tempo que ele recebe de várias fontes.

Quando o serviço time_detector é certo, o que significa que ele recebeu uma sugestão com informações de tempo de época do Unix, ele substitui o tempo de época do Unix atual se a sugestão de tempo for diferente do tempo de época do Unix atual.

Quando time_detector é incerto, ele não substitui a hora atual. O estado incerto geralmente significa que o serviço time_detector não recebeu sugestões de tempo. O serviço time_detector também se torna incerto se as sugestões recebidas forem consideradas muito antigas para serem usadas. A idade das sugestões é considerada porque os ajustes usando sugestões antigas de tempo de época do Unix dependem do relógio de tempo real decorrido no dispositivo, que é considerado impreciso por longos períodos.

Para estabelecer automaticamente o tempo de época atual do Unix, um dispositivo tem várias fontes que podem ser usadas. Estes são chamados de origens neste documento. O serviço time_detector trata sequências de sugestões como distintas com base em sua origem.

O serviço time_detector é stateful, o que significa que mantém um registro da sugestão mais recente feita por cada origem. Novas sugestões são feitas para time_detector se uma origem tiver informações de tempo de época Unix mais recentes disponíveis. O serviço time_detector reavalia sugestões novas e existentes e atualiza o estado do dispositivo quando as sugestões são recebidas.

Embora o horário UTC seja acordado internacionalmente, existem várias razões pelas quais estabelecer o horário atual da época do Unix nem sempre é simples para um dispositivo Android:

  • O horário de época do Unix é um sistema de cronometragem sutilmente diferente do horário UTC. A conversão entre os dois requer conhecimento de quando ocorrem os segundos bissextos e como eles são tratados pelas origens.
  • As origens podem estar disponíveis apenas em determinados momentos ou em determinadas circunstâncias. Por exemplo, se a origem exigir conectividade de rede, ela poderá estar disponível apenas enquanto o dispositivo estiver conectado à Internet.
  • As origens podem ser imprecisas ou imprecisas, ou ter erros. Por exemplo, se uma torre de telefonia celular não estiver rastreando o "tempo universal" corretamente, a origem da telefonia poderá fornecer sugestões de tempo imprecisas.
  • Pode haver imprecisões introduzidas ao obter o tempo da época do Unix. Por exemplo, um atraso de rede, armazenamento em buffer ou agendamento de processo pode fazer com que o tempo de época do Unix seja impreciso.
  • O relógio de referência usado para ajustar uma sugestão para o tempo decorrido desde que a sugestão foi recebida pode ser impreciso.

Existem duas origens principais de detecção de tempo configuradas para uso por padrão no AOSP:

  • Telefonia: Usa sinais de telefonia de Identidade de Rede e Fuso Horário (NITZ).
  • Rede: usa servidores de horário NTP (Network Time Protocol).

As origens de telefonia e rede exigem conectividade com redes externas, que nem sempre estão disponíveis.

A partir do Android 12, o Android também é compatível com as seguintes origens, que não estão configuradas para uso por padrão:

  • GNSS : Usa o provedor de localização GPS para obter uma hora de uma fonte GNSS.
  • Externo : Origem genérica que permite aos fabricantes de dispositivos integrar sua própria fonte de Unix epoch time.

Configurações de tempo

Os usuários podem ativar a detecção automática de hora em Sistema > Data e hora no aplicativo Configurações do AOSP.

Detecção automática de tempo em Configurações

Figura 1. Detecção automática de tempo em Configurações.

A tabela a seguir descreve os controles do usuário para detecção de tempo no aplicativo Configurações de AOSP.

*No Android 11 e versões anteriores, essa configuração é rotulada Usar tempo fornecido pela rede

Localização das configurações de AOSP Nome das configurações AOSP Alcance Comportamento
Sistema > Data e Hora Defina a hora automaticamente* Todos os usuários

Uma alternância.

Quando ativado , o dispositivo é responsável por detectar o tempo de época atual do Unix. Quando desativado , os usuários recebem controles para definir a hora do dispositivo manualmente.

Quando o usuário insere a hora manualmente, ele insere a hora local, não a hora da época do Unix. O horário de época do Unix atual é calculado usando o fuso horário atual para derivar um horário de época do Unix.

Configuração

Os fabricantes de dispositivos podem configurar o serviço time_detector de várias maneiras, como quais origens usar e como priorizar os sinais deles.

Priorização de origem

A partir do Android 12, os fabricantes de dispositivos podem alterar o arquivo de configuração core/res/res/values/config.xml para especificar quais origens de tempo incluir na detecção automática de tempo e a prioridade na qual o time_detector considera essas origens.

Para dispositivos com Android 11 ou inferior, a prioridade de origem é codificada para ["telephony", "network"] , o que significa que as sugestões de telefonia são priorizadas acima das sugestões de rede.

A configuração padrão do AOSP é a seguinte:

<!-- 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>network</item>
    <item>telephony</item>
</string-array>

No Android 12, as sugestões de rede e telefonia são configuradas como origens a serem usadas por padrão. As sugestões de horário de rede são priorizadas em relação às sugestões de horário de telefonia. Os fabricantes de dispositivos podem alterar a ordem das origens para reverter para o comportamento no Android 11 ou inferior, onde a telefonia recebe uma prioridade mais alta.

Por padrão, se a sugestão válida de prioridade mais alta corresponder à hora atual do relógio do sistema do dispositivo em alguns segundos, a hora do dispositivo não será alterada. Isso evita a criação de trabalho para aplicativos instalados que escutam o ACTION_TIME_CHANGED .

Os valores de origem permitidos são:

Limite de tempo inferior

O Android 12 apresenta um limite de tempo menor que é usado para validar sugestões de tempo recebidas pelo serviço time_detector . O valor de limite de tempo inferior é definido a partir do carimbo de data/hora da compilação. Isso funciona com base no princípio de que um tempo válido não pode ser anterior à criação da imagem do sistema do dispositivo. Se uma sugestão de tempo for anterior ao limite de tempo inferior, o serviço time_detector descartará a sugestão porque ela não poderá ser válida se o carimbo de data/hora da compilação estiver correto.

Para dispositivos que executam o Android 11 ou inferior, o serviço time_detector não valida as sugestões de tempo de época do Unix recebidas.

O Android não impõe um limite de tempo superior.

Depuração e teste de tempo

Esta seção fornece informações sobre como depurar e testar o comportamento do serviço time_detector e outros componentes que são compartilhados por todas as origens.

Interagindo com o serviço time_detector

Para visualizar a configuração do serviço time_detector e o estado do serviço time_detector , use:

adb shell cmd time_detector dump

Para ver comandos adicionais para depurar e testar a detecção de fuso horário, use:

adb shell cmd time_detector help

A saída de ajuda também descreve as propriedades do serviço device_config que podem ser usadas para afetar o comportamento do time_detector para teste ou em produção. Para obter detalhes, consulte Configurando um dispositivo usando o serviço device_config .

Para validar a detecção automática de tempo, os testadores devem estar cientes de quais origens o serviço time_detector está usando. Veja a seguir um exemplo da saída do comando adb shell cmd time_zone_detector dump , com as informações sobre a origem atual e o estado do serviço em negrito:

$ adb shell cmd time_detector dump

TimeDetectorStrategy:
  mLastAutoSystemClockTimeSet=null
  mEnvironment.isAutoTimeDetectionEnabled()=true
  mEnvironment.elapsedRealtimeMillis()=23717241
  mEnvironment.systemClockMillis()=1626707861336
  mEnvironment.systemClockUpdateThresholdMillis()=2000
  mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
  mEnvironment.autoOriginPriorities()=[network,telephony]
  Time change log:
    ...
  Telephony suggestion history:
    ...
  Network suggestion history:
    ...
  Gnss suggestion history:
    ...
  External suggestion history:
    ...

As informações podem ser interpretadas da seguinte forma:

Chave Valor
mEnvironment.isAutoTimeDetectionEnabled() Se a detecção automática de tempo está habilitada.
mEnvironment.autoTimeLowerBound() O limite inferior atual usado para validar sugestões de tempo.
mEnvironment.autoOriginPriorities() As origens em uso e a ordem de prioridade.

O registro de alteração de tempo indica ocasiões em que o serviço time_detector alterou o tempo de época atual do Unix do dispositivo.

As informações do histórico de sugestões indicam quais sugestões foram feitas por cada origem.

Detecção automática de fuso horário

Esta seção fornece uma visão geral do serviço time_zone_detector que gerencia a detecção automática de fuso horário, controles do usuário nas configurações, detecção de fuso horário de telefonia e localização e detalhes de teste.

O serviço time_zone_detector

O serviço time_zone_detector , presente em dispositivos com Android 11 ou superior, gerencia a detecção automática de fuso horário. Ele ajusta o fuso horário atual do dispositivo conforme necessário quando a detecção automática de fuso horário está habilitada.

Quando a detecção automática de fuso horário está habilitada, time_zone_detector pode estar em um dos dois estados: incerto e certo .

Quando o serviço time_zone_detector está em determinado estado, isso significa que o serviço time_zone_detector recebeu informações de fuso horário fortes, o que pode fazer com que ele substitua o fuso horário atual. Quando é incerto, isso significa que não recebeu informações ou apenas informações de baixa confiança, o que significa que não substituirá o fuso horário atual.

Certos estados do serviço time_zone_detector podem incluir aqueles em que time_zone_detector não tem informações de fuso horário para usar ou onde tem vários fusos horários para escolher. Esses estados são os seguintes:

  • Um determinado estado com zero fuso horário é inserido quando o dispositivo está em algum lugar sem fuso horário, como em águas internacionais ou em uma área disputada. Esse estado é semelhante a um estado incerto, mas indica que time_zone_detector não precisa tomar outras medidas para tentar determinar o fuso horário.
  • Um determinado estado com vários fusos horários é inserido onde há ambiguidade ou condições de fronteira. Nesse estado, se o fuso horário atual for um dos fusos horários sobre os quais o time_zone_detector tem certeza, o fuso horário atual será deixado como está. Caso contrário, um dos fusos horários disponíveis é usado. Isso dá time_zone_detector um elemento de aderência se o usuário tiver selecionado manualmente seu fuso horário anteriormente ou quando o dispositivo se aproximar de uma borda.

O estado certo ou incerto do serviço time_zone_detector é determinado por sugestões de fuso horário enviadas por uma origem .

Geralmente, as sugestões vêm em dois tipos que correspondem aos possíveis estados de time_zone_detector : certos e incertos . Veja a seguir exemplos de tipos de sugestões:

  • type = "incerto", zoneIds = []

    • A origem não sabe qual é o fuso horário.
  • type = "certo", zoneIds = ["Europa/Londres"]

    • A origem é certa a zona é "Europa/Londres".
  • type = "certo", zoneIds = []

    • A origem é certa, mas não há ID de zona associado ao local atual.
  • type = "certo", zoneIds = ["América/Denver", "América/Phoenix"]

    • A origem é certa de que a resposta é uma das duas zonas, mas não pode escolher entre "América/Denver" e "América/Phoenix".

O serviço time_zone_detector trata sequências de sugestões como distintas com base em sua origem. Dependendo da origem, as sugestões também podem conter metadados que indicam a certeza da origem.

O serviço time_zone_detector é stateful, o que significa que mantém um registro da sugestão mais recente feita por cada origem. Novas sugestões são enviadas ao serviço time_zone_detector se uma sugestão anterior não estiver mais correta; ou seja, se uma origem agora tiver uma sugestão diferente ou se perdeu a capacidade de detectar o fuso horário. O serviço time_zone_detector reavalia sugestões novas e existentes e atualiza o estado do dispositivo quando as sugestões são recebidas.

O Android oferece suporte a duas origens para detecção de fuso horário:

  • Telefonia
  • Localização

O serviço time_zone_detector usa apenas uma única origem para determinar o fuso horário. Quando a origem do local é compatível com um dispositivo, a origem atual a ser usada é determinada com base nas configurações de fuso horário definidas pelo usuário. Quando a origem atual se torna incerta quanto ao fuso horário, time_zone_detector não usa sugestões de uma origem diferente. Sugestões associadas a origens além da origem atual podem ser mantidas na memória por time_zone_detector , mas não são usadas a menos que a origem atual seja alterada. Quando o usuário altera as configurações para detecção automática de fuso horário e a origem atual muda, a sugestão mais recente disponível para a nova origem é usada.

Em dispositivos com Android 13 e superior, o serviço time_zone_detector é compatível com o modo de fallback de telefonia . Esse modo permite que o Android use sugestões de detecção de telefonia temporariamente em situações em que a detecção de localização não consegue detectar o fuso horário ou onde a detecção de localização leva mais tempo para detectar o fuso horário do que a detecção de telefonia.

O modo de fallback de telefonia se aplica a dispositivos em que há suporte para detecção de telefonia e localização e onde o usuário habilitou Usar local para definir o fuso horário nas configurações de fuso horário . O modo é ativado automaticamente quando um dispositivo é reinicializado e quando o modo avião é desativado. Quando no modo de fallback de telefonia, o serviço time_zone_detector usa sugestões de telefonia como se a detecção de local estivesse desabilitada até que a origem do local faça uma determinada sugestão. Após receber uma determinada sugestão, o modo de fallback de telefonia é desabilitado e as sugestões de localização são utilizadas exclusivamente.

Para obter detalhes de configuração do modo de fallback de telefonia, consulte Configuração de detecção de fuso horário .

Configurações de fuso horário

Os usuários podem ativar e definir as configurações para detecção automática de fuso horário no aplicativo Configurações de AOSP.

Detecção automática de fuso horário em Configurações

Figura 2. Detecção automática de fuso horário em Configurações.

A tabela a seguir descreve os controles do usuário para detecção de fuso horário no aplicativo Configurações de AOSP.

*No Android 11 e inferior, essa configuração é rotulada Usar fuso horário fornecido pela rede

Localização das configurações de AOSP Nome das configurações AOSP Alcance Comportamento
Sistema > Data e Hora Definir fuso horário automaticamente* Todos os usuários

Uma alternância.

Quando ativado , o dispositivo é responsável por detectar o fuso horário atual. Quando desativado , os usuários recebem controles para definir manualmente o fuso horário do dispositivo.

Sistema > Data e Hora Use o local para definir o fuso horário Usuário atual

Uma alternância.

Disponível no Android 12. Essa alternância é exibida apenas quando a detecção de fuso horário de local é compatível com o dispositivo.

Localização Usar local Usuário atual

Uma alternância.

Permite ou impede o uso da localização do dispositivo em geral. O valor é relevante se a detecção de fuso horário do local for compatível com o dispositivo.

Veja a seguir uma visão geral do comportamento do dispositivo para detecção de fuso horário de acordo com as configurações escolhidas pelo usuário:

  • [Data e hora] Definir fuso horário automaticamente: OFF

    • O usuário deve selecionar manualmente o fuso horário.
  • [Data e hora] Definir fuso horário automaticamente: ATIVADO

    • [Localização] Usar local: DESATIVADO

      • Os sinais de telefonia são usados ​​para detectar o fuso horário. (Ver nota abaixo.)
    • [Local] Usar local: ATIVADO

      • [Data e hora] Use o local para definir o fuso horário: ATIVADO

        • A localização é usada para detectar o fuso horário.
      • [Data e hora] Use o local para definir o fuso horário: OFF

        • Os sinais de telefonia são usados ​​para detectar o fuso horário. (Ver nota abaixo.)

Dispositivos de vários usuários

Como várias das configurações envolvidas estão no escopo do usuário atual, o comportamento de detecção de fuso horário de um dispositivo pode mudar quando o usuário atual muda em um dispositivo Android multiusuário.

A alternância Usar local para definir o fuso horário tem como escopo o usuário atual e não é restrita pela política do dispositivo, o que significa que os usuários sempre podem alterar seu valor, mesmo quando a alternância Definir fuso horário automaticamente estiver desativada ou se outros controles de horário ou fuso horário são restritos pelo Device Policy Controller.

Comportamento ao mudar de e para detecção automática

Quando o usuário alterna a detecção de fuso horário de manual para automático , time_zone_detector pode já ter certeza do fuso horário atual. Nesse caso, como o usuário habilita a detecção automática, o fuso horário do dispositivo pode ser alterado ao mesmo tempo para corresponder à opinião do serviço time_zone_detector .

Da mesma forma, quando o usuário faz uma alteração nas configurações que resulta em uma alteração na origem atual do serviço time_zone_detector , time_zone_detector pode já ter recebido sugestões para a nova origem e, portanto, a hora do dispositivo pode ser alterada para corresponder à opinião do serviço time_zone_detector imediatamente.

Detecção de fuso horário de telefonia

A detecção de fuso horário de telefonia usa sinais de telefonia para determinar o fuso horário atual. Para obter mais informações, consulte Detecção de fuso horário de telefonia .

Detecção de fuso horário local

A detecção de fuso horário de localização está disponível no Android 12 ou superior. É um recurso opcional de detecção automática de fuso horário que permite que os dispositivos usem sua localização para determinar o fuso horário atual.

O serviço location_time_zone_manager , introduzido no Android 12, é executado no servidor do sistema e contém o código responsável por enviar sugestões de origem de localização ao serviço time_zone_detector . Para obter mais informações, consulte Detecção de fuso horário de local .

Considerações sobre a adoção de recursos

Esta seção descreve aspectos do recurso de detecção de fuso horário de localização para ajudar um fabricante de dispositivo a determinar se deve adotar o recurso em um dispositivo.

Comparando telefonia e detecção de localização

A tabela a seguir fornece uma comparação das vantagens e desvantagens de usar sinais de localização em vez de telefonia para detecção de fuso horário.

Detecção de telefonia Detecção de localização
Correção Varia de acordo com o país.

Depende da exatidão e disponibilidade do MCC, NITZ.
Depende da configuração do recurso ou dos componentes do plug-in.

A correção geralmente varia por:
  • Precisão e regularidade do provedor de localização.
  • A qualidade dos dados do mapa de fuso horário.
Capacidade de atualização A detecção de telefonia depende de arquivos contidos no módulo de dados de fuso horário atualizável (com.android.tzdata APEX). Depende da configuração do recurso ou dos componentes do plug-in.

A capacidade de atualização geralmente depende se o dispositivo usa dados de mapa de fuso horário do servidor ou do cliente.

Observação: os dados do mapa de fuso horário não estão contidos no módulo Time Zone Data usado para atualizar a cópia do TZDB do Android e outras informações de fuso horário.

Os fabricantes de dispositivos também devem considerar a consistência da versão entre as regras de fuso horário e os dados do mapa de fuso horário.
Uso de energia Nenhum ou baixo consumo de energia Depende das configurações de localização do usuário, dos plug-ins que estão sendo usados ​​e, normalmente, de quais outros aplicativos solicitam a localização.
Disponibilidade Apenas dispositivos de telefonia. Geralmente requer um SIM em funcionamento. A detecção de localização depende dos provedores de localização disponíveis.
Privacidade do usuário

O fuso horário preferencial de um usuário geralmente é determinado por sua localização geográfica. Localização são dados confidenciais. Os usuários podem estar preocupados com o conhecimento de sua localização sendo compartilhada como parte da detecção de fuso horário. Não relacionado à detecção de fuso horário, todos os aplicativos executados em um dispositivo podem ler o fuso horário atual do dispositivo sem exigir uma permissão do Android, e os aplicativos podem inferir uma ideia imprecisa da localização do dispositivo a partir dessas informações.

Mais especificamente, a detecção de fuso horário pode funcionar por meios passivos ou ativos:

  • Passivo: algo no ambiente do dispositivo informa ao dispositivo o fuso horário a ser usado nesse ambiente.
  • Ativo: O dispositivo precisa descobrir o fuso horário por si mesmo e, dependendo das configurações de privacidade dos usuários e de seu consentimento, obtém a localização do dispositivo para fazê-lo. Ele pode então compartilhar sua localização com serviços externos. Consulte a discussão abaixo para obter detalhes sobre privacidade e consentimento do usuário.

A detecção passiva, como na origem da telefonia, não tem implicações adicionais de privacidade para os usuários.

A detecção ativa, como a origem do local, envolve determinar a localização do dispositivo, com a qual os usuários podem não concordar, e a localização pode ser enviada por uma rede para determinar o ID do fuso horário.

A abordagem do Android à privacidade do usuário para detecção de fuso horário oferece ao usuário a capacidade de desabilitar individualmente as origens que devem estar ativas. Além disso, o código da plataforma AOSP não lida diretamente com a localização em si: a detecção de localização e o mapeamento de localização para IDs de fuso horário são deixados para componentes de plug-in configurados pelos fabricantes de dispositivos.

Para obter mais detalhes sobre os recursos de privacidade do usuário, consulte Detecção de fuso horário de localização .

Configuração

Os fabricantes de dispositivos podem configurar o serviço time_zone_detector para alterar seu comportamento. Esta seção descreve as opções de configuração para o comportamento geral do serviço time_zone_detector . Para obter detalhes de configuração para as origens de detecção de telefonia e fuso horário, consulte Detecção de fuso horário de telefonia e Detecção de fuso horário de localização .

A configuração básica do AOSP está em frameworks/base/core/res/res/values/config.xml .

Chave de configuração Valor AOSP Descrição
config_supportTelephonyTimeZoneFallback true Quando true , o `time_zone_detector` usará o modo de fallback de telefonia. Isso está presente no Android 13 em diante.

Depuração e teste de fuso horário

Esta seção fornece informações sobre como depurar e testar o comportamento do serviço time_zone_detector e outros componentes que são compartilhados por todas as origens.

Configurando um dispositivo usando o serviço device_config

O serviço device_config é um mecanismo usado no Android para configurar o comportamento modificável usando valores que normalmente são extraídos de um servidor remoto por código proprietário (não AOSP). Ao usar valores device_config para teste, especialmente durante testes manuais de longa execução, o dispositivo pode sincronizar os sinalizadores, o que redefiniria os sinalizadores e limparia os valores definidos para teste.

No Android 12 ou superior, para impedir temporariamente a sincronização de sinalizadores, use:

adb shell cmd device_config set_sync_disabled_for_tests persistent

Para restaurar a sincronização do sinalizador após os testes, use:

adb shell cmd device_config set_sync_disabled_for_tests none

Após restaurar a sincronização do sinalizador, reinicie o dispositivo.

Para obter mais informações, use $ adb shell cmd device_config help .

Interagindo com o serviço time_zone_detector

Para visualizar a configuração do time_zone_detector e o estado do serviço time_zone_detector , use:

adb shell cmd time_zone_detector dump

Para ver comandos adicionais para depurar e testar a detecção de fuso horário, use:

adb shell cmd time_zone_detector help

A saída de ajuda também descreve as propriedades do serviço device_config que podem ser usadas para afetar o comportamento do serviço time_zone_detector para teste ou em produção. Para obter detalhes, consulte Configurando um dispositivo usando o serviço device_config .

Para validar a detecção de fuso horário, os testadores devem estar cientes de qual origem o time_zone_detector está usando. Para entender e influenciar a origem atual do time_zone_detector , use uma das seguintes opções:

  • Verifique visualmente através da interface do usuário de configurações. Para obter mais informações, consulte Configurações de fuso horário .
  • Use a linha de comando através do adb:

    • Para despejar o estado time_zone_detector , use adb shell cmd time_zone_detector dump
    • Para alterar a configuração do dispositivo, use outros comandos time_zone_detector . Para obter mais informações, use adb shell cmd time_zone_detector help .

Veja a seguir um exemplo da saída do comando adb shell cmd time_zone_detector dump , com as informações sobre a origem atual e o estado do serviço em negrito:

$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
  mEnvironment.getCurrentUserId()=0
  mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
  [Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
  mEnvironment.isDeviceTimeZoneInitialized()=true
  mEnvironment.getDeviceTimeZone()=Europe/London
  Time zone change log:
  Manual suggestion history:
...
  Geolocation suggestion history:
...
  Telephony suggestion history:
...

As informações podem ser interpretadas da seguinte forma:

Chave Valor
mUserConfigAllowed Se o usuário é impedido de controlar as configurações de data e hora pelo Device Policy Controller .
mTelephonyDetectionSupported Se o dispositivo tem detecção de fuso horário de telefonia.
mGeoDetectionSupported Se o dispositivo tem detecção de fuso horário de localização. Este é o estado efetivo baseado na configuração e na presença de pelo menos um LTZP.
mAutoDetectionEnabled Se a detecção automática de fuso horário está ativada.
mLocationEnabled A alternância de localização principal.
mGeoDetectionEnabled A opção de origem: `false` indica a origem da telefonia e `true` indica a origem do local.

As informações do histórico de sugestões indicam quais sugestões foram feitas por meio de Configurações (manual) e pelas origens de telefonia e localização.