Esta página descreve como a detecção de horário e fuso horário funciona no Android. Isso inclui como o Android detecta automaticamente o horário e os fusos horários, as opções de configuração para fabricantes de dispositivos e informações de teste.
Visão geral de hora e fusos horários
Para determinar o horário local de um usuário para exibição em locais como a barra de status, o Android rastreia dois estados relacionados, mas independentes:
- O tempo de época Unix atual
- O fuso horário atual
O horário atual da época Unix e o fuso horário atual são estados do dispositivo, ou seja, são compartilhados por todos os usuários de um dispositivo.
O horário atual da época Unix não é um valor fixo. Ele é atualizado automaticamente para refletir o passar do tempo. Além da passagem normal do tempo, a hora atual da época Unix de um dispositivo é ajustada se for considerada incorreta, por exemplo, depois que o dispositivo perde energia.
O fuso horário atual determina o ajuste a ser feito para converter a Era Unix atual em um horário local. Por exemplo, durante o verão em Los Angeles, o dispositivo subtrai 7 horas do horário atual do Unix e, no inverno, subtrai 8 horas.
Para oferecer suporte a esses cálculos de horário local, todos os dispositivos Android têm um banco de dados com todas as regras de fuso horário global. Para mais informações sobre as 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 atual da época Unix não precisa ser ajustado, mas o usuário normalmente quer ver o horário local em vez do horário do local anterior. A mudança do fuso horário atual garante que o ajuste correto seja aplicado à época Unix atual para mostrar a hora local correta do novo local.
O AOSP permite que os usuários controlem de forma independente se o horário e o fuso horário são definidos automaticamente para eles usando os mecanismos a seguir.
- Detecção automática de horário: garante que o dispositivo tenha o horário atual correto da época Unix.
- Detecção automática de fuso horário: garante que o dispositivo tenha o fuso horário atual correto.
Detecção automática de horário
Esta seção fornece uma visão geral do serviço time_detector
, que gerencia a detecção automática de tempo, os controles do usuário, as opções de configuração e os detalhes do teste.
O serviço time_detector
O serviço
time_detector
, presente em dispositivos com o Android 10 ou mais recente, gerencia a detecção automática
de tempo. Ele ajusta o tempo atual da época Unix do dispositivo conforme necessário quando
a detecção de tempo automático está ativada.
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ão de tempo que ele recebe de várias fontes.
Quando o serviço time_detector
é certo, ou seja, quando ele recebeu uma
sugestão com informações de horário da época Unix, ele substitui o horário da época Unix
atual se a sugestão de horário for diferente do horário da época Unix atual.
Quando time_detector
é incerto, ele não substitui o horário 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 fica incerto se as sugestões
recebidas forem consideradas muito antigas para serem usadas. A idade das sugestões é
considerada porque os ajustes que usam sugestões de época do Unix antigas dependem do
relógio em tempo real do dispositivo, que é considerado impreciso por
períodos longos.
Para estabelecer automaticamente a época atual do Unix, um dispositivo tem várias
fontes que pode usar. Elas são chamadas de origens neste documento. O
serviço time_detector
trata sequências de sugestões como distintas com base na
origem delas.
O serviço time_detector
tem estado, o que significa que ele 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 mais recentes disponíveis
sobre o tempo da época do Unix. O serviço time_detector
reavalia sugestões novas e antigas
e atualiza o estado do dispositivo quando recebe sugestões.
Embora o horário UTC seja acordado internacionalmente, há vários motivos para estabelecer o horário atual da época Unix não ser sempre simples para um dispositivo Android:
- O horário de época Unix é um sistema de cronometragem sutilmente diferente do horário UTC. A conversão entre os dois exige conhecimento de quando os segundos bissextos ocorrem e como eles são processados pelas origens.
- As origens podem estar disponíveis apenas em determinados horários ou em determinadas circunstâncias. Por exemplo, se a origem exigir conectividade de rede, ela só estará disponível enquanto o dispositivo estiver conectado à Internet.
- As origens podem ser imprecisas ou imprecisas ou ter erros. Por exemplo, se uma torre de celular de telefonia não estiver rastreando o "tempo universal" corretamente, a origem da telefonia poderá fornecer sugestões de tempo imprecisas.
- Podem ocorrer imprecisões ao acessar o tempo de época do Unix. Por exemplo, um atraso de rede, buffer ou programação de processo pode fazer com que o tempo da época Unix seja impreciso.
- O relógio de referência usado para ajustar uma sugestão de tempo decorrido desde que ela foi recebida pode ser impreciso.
Há duas origens principais de detecção de tempo configuradas para uso por padrão no AOSP:
- Rede:usa servidores de tempo do Network Time Protocol (NTP).
- Telefonia:usa sinais de telefonia de identidade de rede e fuso horário (NITZ, na sigla em inglês).
As origens de telefonia e de rede exigem conectividade com redes externas, que nem sempre estão disponíveis.
A partir do Android 12, o Android também oferece suporte às seguintes origens, que não são configuradas para uso por padrão:
- GNSS:usa o provedor de localização GPS para receber um horário de uma fonte GNSS.
- Externo:origem genérica que permite que os fabricantes de dispositivos integrem a própria origem do horário da época Unix.
Configurações de data
Os usuários podem ativar a detecção de hora automática em Sistema > Data e hora no app Configurações do AOSP.
Figura 1. Detecção automática de horário nas Configurações.
A tabela a seguir descreve os controles do usuário para a detecção de tempo no app Configurações do AOSP.
*No Android 11 e versões anteriores, essa configuração é chamada de Usar a hora fornecida pela rede. |
|||
Local das configurações do AOSP | Nome das configurações do AOSP | Escopo | Comportamento |
---|---|---|---|
Sistema > Data e hora | Definir a hora automaticamente* | Todos os usuários | Um botão de alternância. Quando ativado, o dispositivo é responsável por detectar o tempo de época Unix atual. Quando desativado, os usuários têm controles para definir o horário do dispositivo manualmente. |
Quando o usuário insere o horário manualmente, ele insere o horário local, não o horário Unix. O horário atual da época Unix é calculado usando o fuso horário atual para derivar um horário da época 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 delas.
Priorização da origem
No Android 12 e versões mais recentes, os fabricantes de dispositivos podem mudar 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 em que
time_detector
considera essas origens.
Para dispositivos com o Android 11 ou versões anteriores, a prioridade da origem é codificada como ["telephony", "network"]
, o que significa que as sugestões de telefonia são priorizadas
em relação às 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 tempo de rede são priorizadas em relação às sugestões de tempo de telefonia. Os fabricantes de dispositivos podem mudar a ordem das origens para reverter ao comportamento no Android 11 ou versões anteriores, em que a telefonia tem prioridade maior.
Por padrão, se a sugestão válida de maior prioridade corresponder ao horário atual do
relógio do sistema do dispositivo com uma margem de alguns segundos, o horário do dispositivo não
será alterado. Isso evita criar trabalho para apps instalados que detectam a
intent ACTION_TIME_CHANGED
.
Os valores de origem permitidos são:
Limites de tempo permitidos
O Android 14 introduz um limite superior de tempo para sugestões
de tempo recebidas pelo serviço time_detector
. Se o dispositivo oferece suporte a
processos de 32 bits, o framework define um limite de tempo máximo para impedir que o dispositivo
use uma sugestão de tempo que possa acionar o problema do ano 2038.
O Android 12 introduziu 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
mais baixo usado para sugestões automáticas é definido a partir do carimbo de data/hora do build.
Isso funciona com o princípio de que um tempo válido não pode ser antes que a imagem do
sistema do dispositivo tenha sido criada. Se uma sugestão de tempo for anterior ao limite de tempo mais baixo, o
serviço time_detector
vai descartar a sugestão porque ela não pode ser válida se
o carimbo de data/hora do build estiver correto.
Para dispositivos com o Android 11 ou versões anteriores, o serviço time_detector
não
valida as sugestões de tempo de época do Unix recebidas.
Depuração e testes de tempo
Esta seção fornece informações sobre como depurar e testar o comportamento do
serviço time_detector
e de outros componentes compartilhados por todas as origens.
Interagir com o serviço time_detector
Para conferir a configuração e o estado do serviço time_detector
, use:time_detector
adb shell cmd time_detector dump
Para conferir outros comandos de depuração e teste de 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 de time_detector
para testes ou produção.
Para saber mais, consulte
Como configurar um dispositivo usando o serviço device_config.
Para validar a detecção automática de tempo, os testadores precisam saber quais origens o
serviço time_detector
está usando. Confira a seguir um exemplo da saída do comando adb shell cmd time_detector dump
, com as informações sobre a origem e o estado atual 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 maneira:
Chave | Valor |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() |
Se a detecção automática de horário está ativada. |
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 mudança de horário indica ocasiões em que o serviço time_detector
mudou
a época Unix atual 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, os controles do usuário nas configurações, a detecção de fuso horário de telefonia e
localização e os detalhes do teste.
O serviço time_zone_detector
O serviço
time_zone_detector
presente em dispositivos com o Android 11 ou mais recente gerencia a detecção automática de
zonas de tempo. Ele ajusta o fuso horário atual do dispositivo conforme necessário quando
a detecção automática de fuso horário está ativada.
Quando a detecção automática de fuso horário está ativada, time_zone_detector
pode estar em
um dos dois estados: incerto e certo.
Quando o serviço time_zone_detector
está em um determinado estado, significa que o
serviço time_zone_detector
recebeu informações fortes de fuso horário, o que
pode fazer com que ele substitua o fuso horário atual. Quando ele é incerto, significa
que não recebeu nenhuma informação ou apenas informações de baixa confiança, o que
significa que ele não vai substituir o fuso horário atual.
Alguns estados do serviço time_zone_detector
podem incluir estados em que
time_zone_detector
não tem informações de fuso horário para usar ou em que tem
vários fusos horários para escolher. Estes estados são os seguintes:
- Um determinado estado com fusos horários nulos é 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árias zonas horárias é inserido onde há
ambiguidade ou condições de fronteira. Nesse estado, se o fuso horário atual for
um dos fusos horários que
time_zone_detector
conhece, ele será mantido. Caso contrário, um dos fusos horários disponíveis será usado. Isso dá atime_zone_detector
um elemento de aderência se o usuário selecionou manualmente o fuso horário anteriormente ou quando o dispositivo se aproxima de uma fronteira.
O estado certo ou incerto do serviço time_zone_detector
é determinado por
sugestão de fuso horário enviada por um algoritmo.
Geralmente, as sugestões são de dois tipos que correspondem aos possíveis estados
de time_zone_detector
: certa e incerta. Confira abaixo alguns exemplos de tipos de sugestões:
type =
uncertain
,zoneIds = []
- O algoritmo não sabe qual é o fuso horário.
type =
certain
,zoneIds = ["Europe/London"]
- O algoritmo tem certeza de que a zona é Europe/London.
type =
certain
,zoneIds = []
`- O algoritmo é certo, mas não há um ID de zona associado ao local atual.
type =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- O algoritmo tem certeza de que a resposta é uma das duas zonas, mas não pode escolher entre "America/Denver" e "America/Phoenix".
O serviço time_zone_detector
trata sequências de sugestões como distintas
com base no algoritmo. Dependendo do algoritmo, as sugestões também podem
conter metadados que indicam a precisão dele.
O serviço time_zone_detector
tem estado, o que significa que ele mantém um registro
da sugestão mais recente feita por cada algoritmo. 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 um algoritmo tiver uma sugestão diferente ou se ele tiver
perdido a capacidade de detectar o fuso horário. O serviço time_zone_detector
reavalia as sugestões novas e atuais e atualiza o estado do dispositivo quando
as sugestões são recebidas.
O Android oferece suporte a dois algoritmos para detecção de fuso horário:
- Telefonia
- Local
O serviço time_zone_detector
geralmente usa um único algoritmo para
determinar o fuso horário. Quando o algoritmo de localização é compatível com um dispositivo,
o algoritmo usado pelo dispositivo é determinado com base nas
Configurações de fuso horário configuradas pelo usuário. Quando o algoritmo em uso não tem certeza do fuso horário, o time_zone_detector
geralmente não usa sugestões de um algoritmo diferente. As sugestões
associadas a algoritmos que não estão em uso podem ser mantidas na memória por
time_zone_detector
, mas não são usadas a menos que o algoritmo
mude. Quando o usuário muda as configurações de detecção automática de fuso horário
e o algoritmo muda, a sugestão mais recente disponível para o
novo algoritmo é usada.
Para detalhes sobre a situação em que vários algoritmos são usados para determinar o fuso horário, consulte Modo de substituição de telefonia.
Modo de substituição de telefonia
Em dispositivos com o Android 13 e versões mais recentes, o
serviço time_zone_detector
oferece suporte ao modo alternativo 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 quando a detecção de localização
demora mais para detectar o fuso horário do que a detecção de telefonia.
O modo alternativo de telefonia se aplica a dispositivos em que a detecção de telefonia e localização é compatível e em que o usuário ativou a opção Usar localização para definir o fuso horário em Configurações de fuso horário. O modo é ativado automaticamente quando um dispositivo é reinicializado e quando o modo avião é desativado.
No Android 14 e versões mais recentes, o substituto de telefonia pode ser acionado pelas APIs de relatórios de status de LTZP. Ou seja, se um LTZP informar que não é possível e a capacidade de detectar a localização ou o fuso horário é prejudicada pelo ambiente, o modo substituto de telefonia será acionado.
Quando está no modo alternativo de telefonia, o serviço time_zone_detector
usa as sugestões
de telefonia como se a detecção de local estivesse desativada até que o algoritmo de localização
faça uma determinada sugestão. Depois de receber uma determinada sugestão, o modo alternativo
de telefonia é desativado, e as sugestões de local são usadas exclusivamente.
Para detalhes de configuração do modo de substituição de telefonia, consulte Configuração da detecção de fuso horário.
Configurações de fuso horário
Os usuários podem ativar e configurar as configurações de detecção automática de fuso horário no app Configurações do AOSP.
Figura 2. Detecção automática de fuso horário nas Configurações.
A tabela a seguir descreve os controles do usuário para a detecção de fuso horário no app Configurações do AOSP.
*No Android 11 e versões anteriores, essa configuração é chamada Usar fuso horário fornecido pela rede |
|||
Local das configurações do AOSP | Nome das configurações do AOSP | Escopo | Comportamento |
---|---|---|---|
Sistema > Data e hora | Definir o fuso horário automaticamente* | Todos os usuários | Um botão de alternância. Quando ativado, o dispositivo é responsável por detectar o fuso horário atual. Quando desativado, os usuários têm controles para definir o fuso horário do dispositivo manualmente. |
Sistema > Data e hora | Usar a localização para definir o fuso horário | Usuário atual | Um botão de alternância. Disponível no Android 12. Esse botão só aparece quando a detecção de fuso horário do local é compatível com o dispositivo. Para saber mais sobre as mudanças introduzidas no Android 14, consulte Dispositivos que oferecem suporte apenas para a detecção de fuso horário do local. |
Local | Usar local | Usuário atual | Um botão de alternância. Permite ou impede o uso da localização do dispositivo de modo geral. O valor é relevante se a detecção de fuso horário do local tiver suporte no dispositivo. |
Confira a seguir uma visão geral do comportamento do dispositivo para a detecção de fuso horário considerando as configurações escolhidas pelo usuário:
[Data e hora] Definir fuso horário automaticamente:DESATIVADO
- O usuário precisa selecionar o fuso horário manualmente.
[Data e hora] Definir fuso horário automaticamente:ATIVADO
[Localização] Usar localização: DESATIVADO
- Os sinais de telefonia são usados para detectar o fuso horário.
[Localização] Usar localização:ATIVADO
[Data e hora] Usar a localização para definir o fuso horário:ATIVADO
- A localização é usada para detectar o fuso horário.
[Data e hora] Usar a localização para definir o fuso horário:DESATIVADO
- Os sinais de telefonia são usados para detectar o fuso horário.
Dispositivos de vários usuários
Como várias das configurações envolvidas são restritas ao 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.
O botão Usar localização para definir o fuso horário é aplicado ao usuário atual e não é restrito pela política do dispositivo. Isso significa que os usuários podem mudar o valor, mesmo quando o botão Definir o fuso horário automaticamente está desativado ou se outros controles de fuso horário ou de horário estiverem restritos pelo Device Policy Controller.
Dispositivos que oferecem suporte apenas para o algoritmo de detecção de fuso horário do local
Esta seção descreve o comportamento de dispositivos que oferecem suporte apenas ao algoritmo de localização.
Android 14 e versões mais recentes
- A opção Usar localização não é mostrada aos usuários no app Configurações do AOSP e o dispositivo se comporta como se a opção Usar localização estivesse ativada.
- O valor da configuração
SettingsProvider
location_time_zone_detection_enabled
no escopo do usuário é ignorado. Esse valor registra a preferência do usuário em outros tipos de dispositivos.
Android 12 ou Android 13
- A opção Usar localização fica visível para os usuários no app Configurações do AOSP, e eles podem desativar essa opção. Se a opção estiver desativada, o dispositivo não vai detectar o fuso horário automaticamente.
Comportamento ao mudar para e da detecção automática
Quando o usuário muda a detecção de fuso horário de manual para automático,
o time_zone_detector
pode já ter certeza do fuso horário atual. Nesse caso,
à medida que o usuário ativa 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 mudança nas Configurações que resulta em uma mudança no
algoritmo atual do serviço time_zone_detector
, o time_zone_detector
pode
já ter recebido sugestões para o novo algoritmo. Assim, o horário do dispositivo
pode ser alterado 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 mais informações, consulte Detecção do fuso horário de telefonia.
Detecção do fuso horário do local
A detecção do fuso horário do local está disponível no Android 12 ou mais recente. É um recurso opcional de detecção automática de fuso horário que permite que os dispositivos usem a 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 algoritmos
de localização para o serviço time_zone_detector
.
Para saber mais, consulte
Detecção do fuso horário do local.
Considerações sobre a adoção de recursos
Esta seção descreve aspectos do recurso de detecção de fuso horário para ajudar um fabricante a determinar se ele será adotado em um dispositivo.
Comparar a telefonia e a detecção de local
A tabela a seguir mostra uma comparação das vantagens e desvantagens de usar a localização em vez de sinais de telefonia para a detecção de fuso horário.
Detecção de telefonia | Detecção de local | |
---|---|---|
Correção | Varia de acordo com o país. Depende da correção e disponibilidade do MCC e do NITZ. |
Depende da configuração do recurso ou dos componentes do plug-in. A precisão normalmente varia de acordo com:
|
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 de dados de fuso horário usado para atualizar a cópia do TZDB do Android e outras informações de fuso horário. Os fabricantes de dispositivos também precisam considerar a consistência de versão entre as regras de fuso horário e os dados do mapa de fuso horário. |
Uso de energia | Nenhum ou baixo uso de energia | Depende das configurações de localização do usuário, dos plug-ins usados e, normalmente, de quais outros apps solicitam a localização. |
Disponibilidade | Somente dispositivos de telefonia. Geralmente requer um SIM válido. | A detecção de local depende dos provedores de local disponíveis. |
Privacidade do usuário
O fuso horário preferido de um usuário geralmente é determinado pela localização geográfica dele. O local é um dado sensível. Os usuários podem se preocupar com o compartilhamento de informações sobre o local deles como parte da detecção de fuso horário. Sem relação com a detecção de fuso horário, todos os apps em execução em um dispositivo podem ler o fuso horário atual do dispositivo sem exigir uma permissão do Android, e os apps podem inferir uma ideia imprecisa da localização do dispositivo com base nessas informações.
Mais especificamente, a detecção de fuso horário pode funcionar de forma passiva ou ativa:
- Passivo: algo no ambiente do dispositivo informa o fuso horário a ser usado nesse ambiente.
- Ativo: o dispositivo precisa calcular o fuso horário para si mesmo e, dependendo das configurações de privacidade e do consentimento dos usuários, ele vai receber o local do dispositivo para fazer isso. Ele pode compartilhar o local com serviços externos. Consulte a discussão abaixo para saber mais sobre a privacidade e o consentimento do usuário.
A detecção passiva, como no algoritmo de telefonia, não tem outras implicações de privacidade para os usuários.
A detecção ativa, como no algoritmo de localização, envolve a determinação do local do dispositivo, com o qual os usuários podem não concordar, e o local pode ser enviado por uma rede para determinar o ID do fuso horário.
A abordagem do Android em relação à privacidade do usuário para a detecção de fuso horário permite que o usuário desative individualmente os algoritmos que devem estar ativos. Além disso, o código da plataforma AOSP não lida diretamente com a localização: a detecção de local e o mapeamento de local para IDs de fuso horário são deixados para plug-ins configurados pelos fabricantes de dispositivos.
Para mais detalhes sobre os recursos de privacidade do usuário, consulte Detecção do fuso horário do local.
Configuração
Os fabricantes de dispositivos podem configurar o serviço time_zone_detector
para mudar
o comportamento dele. Esta seção descreve as opções de configuração para o comportamento
geral do serviço time_zone_detector
. Para detalhes de configuração dos
algoritmos de detecção de fuso horário e telefonia, consulte
Detecção de fuso horário de telefonia
e
Detecção de fuso horário do local.
A configuração básica do AOSP está em
frameworks/base/core/res/res/values/config.xml
.
Chave de configuração | Valor do AOSP | Descrição |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
Quando true , time_zone_detector usa o modo de fallback
de telefonia. Esse recurso está disponível para o Android 13
e versões mais recentes.
|
Como alterar o comportamento padrão do dispositivo
No AOSP, a detecção automática de fuso horário é ativada por padrão com a configuração
auto_time_zone
definida como true
. Para desativar a detecção automática de tempo
por padrão, defina o valor de def_auto_time_zone
definido em
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
como false
.
Ao restaurar um backup de outro dispositivo, o framework atualiza o valor
da configuração auto_time_zone
por padrão. Se você quiser garantir que essa
configuração não seja restaurada de um backup, inclua auto_time_zone
na
matriz restore_blocked_global_settings
definida em
frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
.
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 de outros componentes compartilhados por todos os
algoritmos.
Configurar um dispositivo usando o serviço device_config
O serviço device_config
é um mecanismo usado no Android para configurar
comportamentos modificáveis usando valores que normalmente são extraídos de um servidor remoto
por código reservado (não AOSP). Ao usar valores device_config
para testes,
especialmente durante testes manuais de longa duração, o dispositivo pode sincronizar as
flags, o que redefiniria as flags e limparia os valores definidos para testes.
No Android 12 ou mais recente, para impedir temporariamente a sincronização de sinalizações, use:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Para restaurar a sincronização de sinalizações após os testes, use:
adb shell cmd device_config set_sync_disabled_for_tests none
Depois de restaurar a sincronização da flag, reinicie o dispositivo.
Para mais informações, use $ adb shell cmd device_config help
.
Interagir com o serviço time_zone_detector
Para conferir a configuração e o estado do serviço time_zone_detector
, use:time_zone_detector
adb shell cmd time_zone_detector dump
Para conferir outros comandos de depuração e teste de 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 testes
ou produção. Para saber mais, consulte
Como configurar um dispositivo usando o serviço device_config.
Para validar a detecção de fuso horário, os testadores precisam saber qual algoritmo o
time_zone_detector
está usando. Para entender e influenciar o algoritmo atual
do time_zone_detector
, use uma das seguintes opções:
- Verifique visualmente na interface de configurações. Para mais informações, consulte Configurações de fuso horário.
Use a linha de comando pelo adb:
- Para fazer o dump do estado
time_zone_detector
, useadb shell cmd time_zone_detector dump
- Para alterar a configuração do dispositivo, use outros comandos
time_zone_detector
. Para mais informações, useadb shell cmd time_zone_detector help
.
- Para fazer o dump do estado
Confira a seguir um exemplo da saída do comando adb shell cmd
time_zone_detector dump
, com as informações sobre o algoritmo
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 maneira:
Chave | Valor |
---|---|
mUserConfigAllowed |
Indica se o usuário não pode controlar as configurações de data e hora com o Device Policy Controller. |
mTelephonyDetectionSupported |
Se o dispositivo tem detecção de fuso horário de telefonia. |
mGeoDetectionSupported |
Se o dispositivo oferece suporte à detecção de fuso horário do local. Esse é o estado eficaz com base 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 |
O botão principal de localização. |
mGeoDetectionEnabled |
A troca de algoritmo: false indica o algoritmo de telefonia
e true indica o algoritmo de localização. |
As informações do histórico de sugestões indicam quais sugestões foram feitas nas Configurações (manualmente) e pelos algoritmos de telefonia e localização.