Esta página descreve como a detecção de hora e fuso horário funciona no Android. Isso inclui como o Android detecta automaticamente 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 o horário local de um usuário para exibição em locais como a barra de status, o Android monitora dois estados relacionados, mas independentes:
- O horário da época Unix atual
- Fuso horário atual
O horário e o fuso horário atuais da época Unix são estados para todo o dispositivo, o que significa que eles são compartilhados por todos os usuários de um dispositivo.
O horário da época Unix atual não é um valor fixo. Ele é atualizado automaticamente para refletir a passagem do tempo. Além da passagem normal do tempo, o horário atual da época Unix de um dispositivo será ajustado se estiver incorreto, por exemplo, depois que um dispositivo ficar sem energia.
O fuso horário atual determina o ajuste a ser feito para converter o horário de época atual do Unix em um horário local. Por exemplo, durante o verão em Los Angeles, o dispositivo subtrai 7 horas do horário atual da época 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 globais. Para 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 atual do Unix não precisa ser ajustado, mas o usuário normalmente quer ver o horário local em vez do horário da localização anterior. Alterar o fuso horário atual garante que o deslocamento correto seja aplicado ao horário atual da época Unix para exibir o horário local correto do novo local.
O AOSP permite que os usuários controlem de forma independente se a hora e o fuso horário serão definidos automaticamente usando os mecanismos abaixo.
- Detecção automática de hora: garante que o dispositivo tenha o horário correto da época Unix atual.
- Detecção automática de fuso horário: garante que o dispositivo esteja no fuso horário atual.
Detecção automática de hora
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 o Android 10 ou versões mais recentes, gerencia a detecção automática
de tempo. Ela ajusta o horário da época Unix atual do dispositivo conforme necessário quando
a detecção automática de horário está ativada.
O serviço time_detector
está sempre em um destes dois estados: undefinição ou certa. O estado certo ou incerto do serviço é determinado
por sugestões de horário que ele recebe de várias fontes.
Quando o serviço time_detector
está certo, o que significa que ele recebeu uma
sugestão com informações de horário da época Unix, ele vai substituir a hora atual
do Unix se a sugestão for diferente da hora atual.
Quando time_detector
não tem certeza, 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 horário. O serviço time_detector
também não tem certeza se as sugestões
recebidas são consideradas muito antigas para serem usadas. A idade das sugestões é
considerada porque os ajustes que usam sugestões antigas de horário da época Unix dependem do
relógio em tempo real decorrido no dispositivo, que é considerado impreciso durante
longos períodos.
Para estabelecer automaticamente o horário da época atual do Unix, um dispositivo pode usar várias
fontes. Neste documento, elas são chamadas de origens. O
serviço time_detector
trata sequências de sugestões como diferentes 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 serão feitas para
time_detector
se uma origem tiver informações mais recentes sobre o horário da época Unix
disponíveis. O serviço time_detector
reavalia as sugestões novas e existentes
e atualiza o estado do dispositivo quando elas são recebidas.
Embora o horário UTC seja acordado internacionalmente, há várias razões pelas quais estabelecer o horário atual da época Unix nem sempre é simples para um dispositivo Android:
- O horário da época Unix é um sistema de marcação de tempo sutilmente diferente do horário UTC. A conversão entre os dois requer conhecimento de quando os segundos bissextos ocorrem 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 celular de telefonia não estiver rastreando o "horário universal" corretamente, a origem da telefonia poderá fornecer sugestões imprecisas.
- Pode haver imprecisões introduzidas ao obter o horário da época Unix. Por exemplo, um atraso de rede, armazenamento em buffer ou programação de processo podem fazer com que o horário da época Unix seja impreciso.
- O relógio de referência usado para ajustar uma sugestão de tempo decorrido desde que a sugestão foi recebida pode ser impreciso.
Há duas origens principais de detecção de horário configuradas para uso por padrão no AOSP:
- Rede:usa servidores de horário 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.
No Android 12 e versões mais recentes, o Android também oferece suporte às origens abaixo, que não estão configuradas para uso por padrão:
- GNSS:usa o provedor de localização do GPS para receber um horário de uma origem GNSS.
- Externo:origem genérica que permite que os fabricantes de dispositivos integrem a própria fonte de horário da época Unix.
Configurações de data
Os usuários podem ativar a detecção automática de hora em Sistema > Data e hora no app Configurações do AOSP.
Figura 1. Detecção automática de hora nas Configurações.
A tabela a seguir descreve os controles do usuário para detecção de horário no app Configurações do AOSP.
*No Android 11 e versões anteriores, essa configuração é identificada como Usar horário fornecido pela rede |
|||
Local das configurações do AOSP | Nome das configurações do AOSP | Escopo | Comportamento |
---|---|---|---|
Sistema > Data e hora | Definir horário automaticamente* | Todos os usuários | Um botão de alternância. Quando on, o dispositivo é responsável por detectar o horário atual da época Unix. Quando desativado, os usuários recebem controles para definir o horário do dispositivo manualmente. |
Quando o usuário insere a hora manualmente, ele insere o horário local, não o horário da época Unix. O horário da época atual do Unix é calculado usando o fuso horário atual para derivar um horário desse tipo.
Configuração
Os fabricantes de dispositivos podem configurar o serviço time_detector
de várias maneiras,
por exemplo, quais origens usar e como priorizar os indicadores 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 horário serão incluídas na detecção automática de horário e a prioridade em que
time_detector
as considera.
Para dispositivos com o Android 11 ou versões anteriores, a prioridade de origem é fixada no código como ["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 acima das sugestões de horário de telefonia. Os fabricantes de dispositivos podem mudar a ordem das origens para reverter para o comportamento no Android 11 ou versões anteriores, em que a telefonia recebe uma prioridade mais alta.
Por padrão, se a sugestão válida de maior prioridade corresponder ao horário
do relógio do sistema atual do dispositivo em alguns segundos, o horário do dispositivo não
será modificado. 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 de tempo superior para as sugestões
de horário recebidas pelo serviço time_detector
. Se o dispositivo oferecer suporte
a processos de 32 bits, o framework vai definir um limite de tempo máximo para evitar que o dispositivo
use uma sugestão de tempo que pode acionar o problema Y2038.
O Android 12 introduziu um limite de tempo menor que é usado para
validar as sugestões de horário recebidas pelo serviço time_detector
. O valor do limite
de tempo mínimo usado para sugestões automatizadas é definido com base no carimbo de data/hora do build.
Isso funciona com base no princípio de que um momento 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 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 horário de época do Unix.
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 de outros componentes compartilhados por todas as origens.
Interagir com o serviço time_detector
Para visualizar a time_detector
configuração e o estado do
serviço time_detector
, use:
adb shell cmd time_detector dump
Para ver outros comandos 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 de time_detector
para testes ou produção.
Para mais detalhes, consulte
Como configurar um dispositivo usando o serviço device_config.
Para validar a detecção automática de tempo, os testadores precisam estar cientes de quais origens o
serviço time_detector
está usando. Este é um exemplo da saída do comando adb shell cmd time_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 maneira:
Chave | Valor |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() |
Indica se a detecção automática de hora está ativada. |
mEnvironment.autoTimeLowerBound() |
O limite inferior atual usado para validar sugestões de horário. |
mEnvironment.autoOriginPriorities() |
As origens em uso e a ordem de prioridade. |
O registro de mudanças de horário indica ocasiões em que o serviço time_detector
mudou
o horário atual da época Unix do dispositivo.
As informações do histórico de sugestões indicam quais sugestões foram feitas por origem.
Detecção automática de fuso horário
Nesta seção, apresentamos uma visão geral do serviço time_zone_detector
, que gerencia a detecção automática de fuso horário, os controles de usuário nas configurações, a detecção de fuso horário do local e de telefonia e os detalhes de testes.
O serviço time_zone_detector
O serviço
time_zone_detector
, presente em dispositivos com o Android 11 ou versões mais recentes, gerencia a detecção automática
de fuso horário. Ela 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 destes estados: indefinição e certa.
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. No caso de incerteza, isso
significa que ele não recebeu informações 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 aqueles em que
time_zone_detector
não tem informações de fuso horário a serem usadas ou em que há
vários fusos horários para escolher. Esses estados são os seguintes:
- Um determinado estado com fusos horários zero é 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 realizar mais ações para tentar determinar o fuso horário. - Um determinado estado com vários fusos horários é inserido onde há
condições de fronteira ou ambiguidade. Nesse estado, se o fuso horário atual for
um dos fusos horários de que
time_zone_detector
está certo, o fuso horário atual será mantido como está. Caso contrário, um dos fusos disponíveis será usado. Isso dá àtime_zone_detector
um elemento de fixação se o usuário tiver selecionado manualmente o 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 um algoritmo.
Geralmente, as sugestões vêm em dois tipos que correspondem aos estados possíveis
de time_zone_detector
: determinado e indeterminado. Confira abaixo
exemplos de tipos de sugestão:
tipo =
uncertain
,zoneIds = []
- O algoritmo não sabe qual é o fuso horário.
tipo =
certain
,zoneIds = ["Europe/London"]
- O algoritmo tem certeza de que a zona é Europa/Londres.
tipo =
certain
,zoneIds = []
`- O algoritmo é certo, mas não há um ID de zona associado à localização atual.
tipo =
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 diferentes
com base no algoritmo delas. Dependendo do algoritmo, as sugestões também podem
conter metadados que indicam o grau de certeza do algoritmo.
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 serão enviadas para o serviço time_zone_detector
se uma sugestão anterior não estiver mais correta, ou seja, se um algoritmo agora tiver uma sugestão diferente ou se tiver perdido a capacidade de detectar o fuso horário. O serviço time_zone_detector
reavalia as sugestões novas e existentes 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
- Localização
O serviço time_zone_detector
normalmente usa um único algoritmo para determinar o fuso horário. Quando o algoritmo de localização tem suporte em um dispositivo,
o algoritmo usado é determinado com base nas
configurações de fuso horário definidas pelo usuário. Quando o
algoritmo em uso se torna incerto 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 retidas na memória por
time_zone_detector
, mas não são usadas, a menos que o algoritmo
mude. Quando o usuário altera 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 de substituição 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 local não consegue detectar o fuso horário ou quando a detecção de local
demora mais para detectar o fuso horário do que a detecção de telefonia.
O modo substituto de telefonia se aplica a dispositivos com suporte para detecção de telefonia e de localização e em que o usuário ativou a opção Usar a localização para definir 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.
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 relatar que não tem certeza e a capacidade de detectar a localização ou o fuso horário está prejudicada pelo ambiente, o modo substituto de telefonia será acionado.
No modo substituto de telefonia, o serviço time_zone_detector
usa sugestões de telefonia como se a detecção de localização estivesse desativada até que o algoritmo de localização fizesse uma determinada sugestão. Depois de receber uma determinada sugestão, o modo substituto de telefonia será desativado e as sugestões de local serão usadas exclusivamente.
Para detalhes de configuração do modo substituto de telefonia, consulte Configuração da detecção de fuso horário.
Configurações de fuso horário
Os usuários podem ativar e definir as configurações para a 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 abaixo 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 é marcada como 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 será responsável por detectar o fuso horário atual. Quando desativado, os usuários recebem controles para definir o fuso horário do dispositivo manualmente. |
Sistema > Data e hora | Usar local para definir o fuso horário | Usuário atual | Um botão de alternância. Disponível no Android 12. Esse botão é exibido apenas quando a detecção de fuso horário do local está disponível no dispositivo. Para conferir as mudanças introduzidas na versão 14, consulte Dispositivos que oferecem suporte apenas à 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 geral da localização do dispositivo. O valor será relevante se a detecção de fuso horário do local for compatível com o dispositivo. |
Confira abaixo 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:DESATIVADO
- O usuário precisa selecionar o fuso horário manualmente.
[Data e hora] Definir fuso horário automaticamente:ATIVADO
[Local] Usar localização: DESATIVADO
- Os sinais de telefonia são usados para detectar o fuso horário.
[Local] Usar localização: ATIVADO
[Data e hora] Use 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 têm o escopo definido para o usuário atual, o comportamento de detecção de fuso horário de um dispositivo pode mudar quando o usuário atual é alterado em um dispositivo Android multiusuário.
A opção 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 podem mudar o valor a qualquer momento, mesmo quando a opção Definir fuso horário automaticamente estiver desativada ou se outros controles de horário ou fuso horário forem restritos pelo controlador de política do dispositivo.
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 com suporte apenas ao algoritmo de localização.
Android 14 e versões mais recentes
- A opção Usar local não é mostrada aos usuários no app Configurações do AOSP, e o dispositivo se comporta como se a opção Usar local estivesse ativada.
- O valor da configuração
SettingsProvider
no escopo do usuáriolocation_time_zone_detection_enabled
é ignorado. Esse valor registra a preferência do usuário em outros tipos de dispositivos.
Android 12 ou Android 13
- A opção Usar local fica visível para os usuários no app Configurações do AOSP, e os usuários podem desativá-la. Se ela estiver desativada, o dispositivo não 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ática,
o time_zone_detector
pode já ter certeza do fuso horário atual. Nesse caso,
como 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 e, portanto, o horário do dispositivo
pode ser modificado imediatamente para corresponder à opinião do serviço
time_zone_detector
.
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 de fuso horário de telefonia.
Detecção do fuso horário do local
A detecção de fuso horário do local está disponível no Android 12 ou versões mais recentes. Ele é 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
algoritmo de localização para o serviço time_zone_detector
.
Para mais informações, 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 do local para ajudar o fabricante do dispositivo a determinar se deve adotar o recurso em um dispositivo.
Comparar a detecção de telefonia e de localização
Veja na tabela a seguir uma comparação das vantagens e desvantagens do uso de sinais de localização em vez de telefonia para detecção de fuso horário.
Detecção de telefonia | Detecção de local | |
---|---|---|
Correção | Varia de acordo com o país. Depende do MCC, precisão e disponibilidade do NITZ. |
Depende da configuração do recurso ou dos componentes do plug-in. A correção costuma variar:
|
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. Em geral, a capacidade de atualização 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 Android de TZDB e outras informações de fuso horário. Os fabricantes de dispositivos também precisam 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 | Uso de energia baixo ou inexistente | Depende das configurações de localização do usuário, dos plug-ins em uso e normalmente de quais outros apps solicitam a localização. |
Disponibilidade | Somente para dispositivos de telefonia. Geralmente exige um chip em funcionamento. | A detecção de local depende dos provedores de localização disponíveis. |
Privacidade do usuário
O fuso horário preferido de um usuário geralmente é determinado pela localização geográfica dele. A localização inclui dados sensíveis. Os usuários podem ficar preocupados com o conhecimento de que a localização deles está sendo compartilhada como parte da detecção de fuso horário. Não relacionado à detecção de fuso horário, todos os apps em execução em um dispositivo podem ler o fuso horário atual sem precisar de uma permissão do Android, e os apps podem inferir uma ideia imprecisa do local do dispositivo com base nessas 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 o fuso horário a ser usado nesse ambiente.
- Ativo: o dispositivo precisa definir o fuso horário sozinho e, dependendo das configurações de privacidade e do consentimento dos usuários, recebe a localização do dispositivo para fazer isso. Ele pode, então, compartilhar a localização com serviços externos. Consulte a discussão abaixo para mais detalhes sobre privacidade e consentimento do usuário.
A detecção passiva, como a do algoritmo de telefonia, não tem outras implicações de privacidade para os usuários.
A detecção ativa, como com o algoritmo de localização, envolve determinar a localização do dispositivo, com a qual os usuários podem não querer concordar, e a localização pode ser enviada por uma rede para determinar o ID do fuso horário.
A abordagem do Android em relação à privacidade do usuário para detecção de fuso horário oferece ao usuário a capacidade de desativar individualmente algoritmos que precisam estar ativos. Além disso, o código da plataforma AOSP não lida diretamente com o local em si: a detecção e o mapeamento de local para IDs de fuso horário são deixados para os componentes de plug-in configurados pelos fabricantes de dispositivos.
Para saber mais sobre os recursos de privacidade do usuário, consulte Detecção de fuso horário do local.
Configuração
Os fabricantes de dispositivos podem configurar o serviço time_zone_detector
para mudar
o comportamento. Esta seção descreve 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 telefonia e fuso horário, consulte Detecção de fuso horário de telefonia e Detecção de fuso horário de local.
A configuração básica do AOSP é
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 substituto 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 horário 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
um comportamento modificável usando valores normalmente extraídos de um servidor remoto
por um código reservado (não AOSP). Ao usar valores de device_config
para testes,
especialmente durante testes manuais de longa duração, o dispositivo pode sincronizar as
flags, o que as redefiniria e limparia os valores definidos para teste.
No Android 12 ou versões mais recentes, para evitar 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 flags após testes, use:
adb shell cmd device_config set_sync_disabled_for_tests none
Depois de restaurar a sincronização de flag, reinicie o dispositivo.
Para mais informações, use $ adb shell cmd device_config help
.
Interagir com o serviço time_zone_detector
Para visualizar a configuração e o estado de time_zone_detector
do serviço time_zone_detector
, use:
adb shell cmd time_zone_detector dump
Para ver outros comandos 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 testes
ou na produção. Para mais detalhes, consulte
Como configurar um dispositivo usando o serviço device_config.
Para validar a detecção de fuso horário, os testadores precisam estar cientes de 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:
- Confira 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 despejar o estado
time_zone_detector
, useadb shell cmd time_zone_detector dump
. - Para mudar a configuração do dispositivo, use outros comandos
time_zone_detector
. Para mais informações, useadb shell cmd time_zone_detector help
.
- Para despejar o estado
Confira abaixo um exemplo da saída do comando adb shell cmd
time_zone_detector dump
, com as informações sobre o algoritmo
e o estado do serviço atual 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 |
Se o usuário é impedido de controlar as configurações de data e hora pelo Controlador do Device Policy. |
mTelephonyDetectionSupported |
Se o dispositivo tem detecção de fuso horário de telefonia. |
mGeoDetectionSupported |
Se o dispositivo é compatível com a detecção de fuso horário do local. Esse é o estado efetivo com base na configuração e na presença de pelo menos um LTZP. |
mAutoDetectionEnabled |
Indica se a detecção automática de fuso horário está ativada. |
mLocationEnabled |
O botão de alternar o local principal. |
mGeoDetectionEnabled |
A chave 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 as sugestões feitas pelas configurações (manual) e pelos algoritmos de telefonia e de localização.