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, configurações opções para fabricantes de dispositivos e informações de testes.
Visão geral de horários e fusos horários
Determinar o horário local de um usuário para exibição em locais como o status o Android registra 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, ou seja, 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 refletem a passagem do tempo. Além da passagem normal do tempo, o evento O horário de época Unix de um dispositivo será ajustado se estiver incorreto, por por exemplo, quando um dispositivo fica sem energia.
O fuso horário atual determina o ajuste a ser feito para converter a da época atual do Unix em um horário local. Por exemplo, durante o verão em Los Angeles, Angeles, o dispositivo subtrai 7 horas do tempo 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 de todas as regras globais de fuso horário. Para mais informações sobre regras de fuso horário, consulte Regras de fuso horário.
Quando um usuário viaja para um local que usa um fuso horário diferente, o o horário da época Unix atual não precisa ser ajustado, mas o usuário normalmente deseja para ver a hora local em vez da hora do local anterior. Mudança o fuso horário atual garante que o deslocamento correto seja aplicado à data Horário de é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 são definidos automaticamente pelos mecanismos a seguir.
- Detecção automática de hora: garante que o dispositivo esteja correto época atual do Unix.
- Detecção automática de fuso horário: garante que o dispositivo esteja correto fuso horário atual.
Detecção automática de hora
Nesta seção, você terá uma visão geral do serviço time_detector
que gerencia
detecção automática de tempo, controles de usuário, opções de configuração e testes
detalhes.
O serviço time_detector
A
time_detector
presente em dispositivos com o Android 10 ou versões mais recentes, gerencia o tempo automático
detecção de ameaças. Ele ajusta o horário da época Unix atual do dispositivo conforme necessário quando
a detecção automática de hora está ativada.
O serviço time_detector
está sempre em um destes dois estados: undeterminado 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
tem certeza, o que significa que ele recebeu uma
com informações de tempo da época Unix, ela substitui a época atual do Unix
horário, se a sugestão de horário for diferente do horário da época Unix atual.
Quando time_detector
não tem certeza, ele não substitui o horário atual. A
estado incerto geralmente significa que o serviço time_detector
não recebeu hora
sugestões. O serviço time_detector
também não tem certeza se as sugestões
que ele recebeu são considerados muito antigos para serem usados. O tempo das sugestões é
considerados, porque os ajustes que usam sugestões antigas de época do Unix dependem do
relógio em tempo real decorrido no dispositivo, que é considerado impreciso ao longo
longos.
Para estabelecer automaticamente a hora da época Unix atual, um dispositivo tem várias
de dados que ela pode usar. Neste documento, elas são chamadas de origens. A
O serviço time_detector
trata sequências de sugestões como diferentes com base em
sua origem.
O serviço time_detector
tem estado, o que significa que ele mantém um registro dos
a 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 de tempo de época Unix
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, há várias razões pelas quais estabelecer a hora 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 certos momentos ou com certos em cada situação. Por exemplo, se a origem exigir conectividade de rede, talvez ela só fique disponível enquanto o dispositivo estiver conectado à Internet.
- As origens podem ser imprecisas ou imprecisas, ou ter erros. Para por exemplo, se uma torre de telefonia celular não estiver rastreando o "horário universal" corretamente, a origem da telefonia pode fornecer sugestões de horário imprecisas.
- Pode haver imprecisões introduzidas ao obter o horário da época Unix. Por exemplo, um atraso na rede, armazenamento em buffer ou programação de processos pode causar o horário da época Unix ser impreciso.
- O relógio de referência usado para ajustar uma sugestão de tempo decorrido desde a sugestão recebida pode não ser precisa.
Há duas origens principais de detecção de horário configuradas para uso por padrão em AOSP:
- Rede:usa rede Servidores de horário NTP.
- Telefonia: usa a telefonia de identidade de rede e fuso horário (NITZ, na sigla em inglês) sinais
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 à origens a seguir, que não estão configuradas para uso por padrão:
- GNSS:usa o GPS. provedor de localização para receber um horário de uma origem GNSS.
- Externo:genérico 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 tempo em Sistema > Data e hora no campo 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 AOSP App Configurações.
*No Android 11 e versões anteriores, essa configuração é chamada de 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 ativado, o dispositivo é responsável por detectar a versão atual do Unix época. Quando está desativada, os usuários recebem controles para definir hora do dispositivo manualmente. |
Quando o usuário insere o horário manualmente, ele insere o horário local, não a época Unix. tempo de resposta. O horário da época Unix é calculado usando o fuso horário atual para derivar um horário Unix.
Configuração
Os fabricantes de dispositivos podem configurar o serviço do time_detector
de várias maneiras:
como quais origens usar e como priorizar os sinais delas.
Priorização da origem
A partir do Android 12, os fabricantes dos dispositivos podem mudar
core/res/res/values/config.xml
para especificar o horário
origens para incluir na detecção automática de tempo e a prioridade na qual
O time_detector
considera essas origens.
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 para usar por padrão. As sugestões de horário de rede são priorizados acima dos horários 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 tem maior prioridade.
Por padrão, se a sugestão válida de maior prioridade corresponder ao parâmetro
a hora atual do relógio do sistema dentro de alguns segundos, a hora do dispositivo não
ser alterado. Isso evita criar trabalho para apps instalados que ouvem o
ACTION_TIME_CHANGED
.
Os valores de origem permitidos são:
Limites de tempo permitidos
O Android 14 apresenta um limite de tempo maior
sugestões recebidas pelo serviço time_detector
. Se o dispositivo for compatível
Processos de 32 bits, o framework define um limite de tempo máximo para evitar que o dispositivo
de usar uma sugestão de horário que poderia acionar o problema de 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
. Quanto menor
o valor limite de tempo usado para sugestões automatizadas é definido a partir do carimbo de data/hora do build.
Isso funciona com base no princípio de que um período válido não pode ser anterior ao
a imagem do sistema foi criada. Se uma sugestão de tempo for anterior ao limite de tempo inferior, o
O serviço time_detector
descarta a sugestão porque não pode ser válida se
o carimbo de data/hora do build está correto.
Para dispositivos com o Android 11 ou versões anteriores, o serviço time_detector
não
validar sugestões recebidas de horário de época Unix.
Depuração e teste de tempo
Esta seção fornece informações sobre como depurar e testar o comportamento de
o serviço time_detector
e outros componentes compartilhados por todas as origens.
Interagir com o serviço time_detector
Para visualizar a configuração e o estado do serviço time_detector
do
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
usados para afetar o comportamento de time_detector
em testes ou na 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 das origens do
time_detector
serviço está usando. Este é um exemplo da saída
o 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 alterações de horário indica ocasiões em que o serviço time_detector
mudou o horário da época Unix atual do dispositivo.
As informações do histórico de sugestões indicam quais sugestões foram feitas pelo 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 de usuário em configurações, telefonia e
detecção de fuso horário e detalhes de teste.
O serviço time_zone_detector
A
time_zone_detector
presente em dispositivos com o Android 11 ou versões mais recentes, gerencia o tempo automático
detecção de zona. 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 de dois estados: indefinição e certa;
Quando o serviço time_zone_detector
está em um determinado estado, isso significa que o
time_zone_detector
serviço recebeu informações de fuso horário fortes, o que
pode fazer com que ele substitua o fuso horário atual. Quando não há certeza,
significa que ele não recebeu nenhuma informação ou apenas informações de baixa confiança, o que
significa que ele não modificará 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 para usar nem onde
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 é
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 fazer mais nada para tentar determinar o fuso horário. - Um determinado estado com vários fusos horários é inserido onde há
ambiguidade ou condições de borda. Nesse estado, se o fuso horário atual for
um dos fusos horários que
time_zone_detector
tem certeza, o o fuso horário atual permanece como está. Caso contrário, um dos horários disponíveis é usada. Isso dá atime_zone_detector
um elemento de adesão. se o usuário tiver selecionado manualmente o fuso horário anteriormente ou como o dispositivo se aproxima de uma borda.
O estado certo ou incerto do serviço time_zone_detector
é determinado pela
sugestões de fuso horário enviadas por um algoritmo.
Geralmente, há dois tipos de sugestões que correspondem aos estados possíveis
de time_zone_detector
: determinado e incerto. Os itens a seguir são
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 está certo, mas não há ID de zona associado com a localização atual.
tipo =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- O algoritmo tem certeza de que a resposta é uma de duas zonas, mas não consegue escolher entre "América/Denver" e "América/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
contêm 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 foram enviadas
ao serviço time_zone_detector
se uma sugestão anterior não for mais
correto; Ou seja, se um algoritmo agora tem uma sugestão diferente ou se tem
perdemos 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
sugestões sejam recebidas.
O Android oferece suporte a dois algoritmos para detecção de fuso horário:
- Telefonia
- Local
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 que o dispositivo usa é determinado com base no
Configurações de fuso horário definidas pelo usuário. Quando o
o algoritmo em uso se torna incerto do fuso horário, time_zone_detector
geralmente não usa sugestões de um algoritmo diferente. Sugestões
associados a algoritmos que não estão em uso podem ser mantidos na memória
time_zone_detector
, mas não são usados, a menos que o algoritmo
mudanças. Quando o usuário altera as configurações para detecção automática de fuso horário
e o algoritmo mudar, a sugestão mais recente disponível para o
um novo algoritmo é usado.
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 mais recentes, a
O serviço time_zone_detector
oferece suporte ao modo de substituição de telefonia. Este modo
permite que o Android use sugestões de detecção de telefonia temporariamente em situações
a detecção de local não consegue detectar o fuso horário ou onde a detecção de local
leva mais tempo para detectar o fuso horário do que a detecção de telefonia.
O modo substituto de telefonia se aplica a dispositivos em que os recursos de telefonia e têm suporte e onde o usuário ativou a opção Usar local para definir fuso horário em Configurações de fuso horário. O modo está 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 acionada pela APIs de relatórios de status de LTZP Ou seja, se um LTZP relatar que não tem certeza e sua capacidade de detectar a localização ou o fuso horário for degradado pelo ambiente, o modo substituto de telefonia acionada.
No modo substituto de telefonia, o serviço time_zone_detector
usa a telefonia
sugestões como se a detecção de local estivesse desativada até que o algoritmo de localização
faz uma determinada sugestão. Depois de receber uma determinada sugestão,
o modo substituto está desativado, e as sugestões de local são usadas exclusivamente.
Para detalhes de configuração do modo substituto 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 a detecção automática de fuso horário em 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 detecção de fuso horário no App Configurações do AOSP.
*No Android 11 e versões anteriores, essa configuração é identificada 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 horário atual zona. Quando desativado, os usuários recebem controles para definir o fuso horário 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. Este 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 no Android 14, consulte Dispositivos compatíveis apenas com 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 geral da localização do dispositivo. O valor é será relevante se a detecção do fuso horário do local for compatível com o dispositivo. |
Confira a seguir uma visão geral do comportamento do dispositivo com relação ao fuso horário detecção 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
- Sinais de telefonia são usados para detectar o horário zona.
Dispositivos de vários usuários
Como várias das configurações envolvidas estão no escopo do usuário atual, a o comportamento de detecção de fuso horário de um dispositivo pode mudar quando o usuário atual mudanças em um dispositivo Android multiusuário.
A opção Usar a localização para definir o fuso horário tem o escopo definido para o usuário atual e não é restrito pela política do dispositivo, o que significa que os usuários podem sempre alterar mesmo quando a opção Definir fuso horário automaticamente estiver desativada ou se outros os controles de horário ou fuso horário são restritos pelo Device Policy Controller.
Dispositivos compatíveis apenas com o algoritmo de detecção de fuso horário do local
Esta seção descreve o comportamento para dispositivos que oferecem suporte apenas para localização algoritmo.
Android 14 e versões mais recentes
- A opção Usar local não é exibida para os usuários nas configurações do AOSP. e o dispositivo se comportar como se a opção Usar local estivesse ativada.
- O valor da configuração
SettingsProvider
no escopo do usuáriolocation_time_zone_detection_enabled
será ignorado. Esse valor registra 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. os usuários podem desativar a opção. Se a opção 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,
time_zone_detector
pode já ter certeza do fuso horário atual. Nesse caso,
Quando 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 alteração nas Configurações que resulta em uma mudança nos
o algoritmo atual do serviço time_zone_detector
, time_zone_detector
poderá
já receberam sugestões para o novo algoritmo e, portanto, a hora 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 a fuso horário. Para mais informações, consulte Fuso horário de telefonia Detecção.
Detecção do fuso horário do local
A detecção de fuso horário da localização está disponível no Android 12 ou superior. É um recurso opcional de detecção automática de fuso horário que permite dispositivos usem a localização deles para determinar o fuso horário atual.
O serviço location_time_zone_manager
, introduzido no
O Android 12 é executado no
servidor do sistema e contém o código responsável por enviar a localização
sugestões de algoritmo para o serviço time_zone_detector
.
Para mais informações, consulte
Detecção de fuso horário do local.
Considerações sobre a adoção de recursos
Esta seção descreve os aspectos do recurso de detecção de fuso horário do local para ajudam um fabricante de dispositivos a determinar se deve adotar o recurso em um dispositivo.
Comparar a detecção de telefonia e de localização
A tabela a seguir fornece uma comparação das vantagens e desvantagens de usando 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 MCC, precisão e disponibilidade do NITZ. |
Depende da configuração do recurso ou dos componentes do plug-in. A exatidão geralmente varia conforme os seguintes fatores:
|
Capacidade de atualização | A detecção de telefonia depende de arquivos contidos no intervalo Time Módulo de dados de zona (com.android.tzdata APEX). | Depende da configuração do recurso ou dos componentes do plug-in. Em geral, a capacidade de atualização depende de o dispositivo usar servidor ou cliente dados do mapa de fuso horário. Observação: os dados do mapa de fuso horário não estão contidos no campo Horário Módulo de dados de zona usado para atualizar a cópia do Android do TZDB e outros horários. informações da zona. Os fabricantes de dispositivos também devem considerar a consistência da versão entre os 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, 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 o local. A localização inclui dados sensíveis. Os usuários podem ficar preocupados conhecimento de sua localização ser 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 fuso horário atual do dispositivo sem precisar de uma permissão do Android; 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 significa:
- Passivo: algo no ambiente do dispositivo informa que ele fuso horário a ser usado nesse ambiente.
- Ativo: o dispositivo precisa definir o fuso horário para si e dependendo das necessidades configurações de privacidade e o consentimento delas, obtém a do dispositivo para fazer isso. Ele pode compartilhar a localização com serviços. Consulte a discussão abaixo para mais detalhes sobre privacidade e consentimento do usuário.
A detecção passiva, como o algoritmo de telefonia, não tem as implicações de privacidade para os usuários.
A detecção ativa, como o algoritmo de localização, envolve a determinação do a localização do dispositivo, com a qual os usuários podem não querer concordar, e a localização podem ser enviadas 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 capacidade de desativar individualmente os algoritmos que precisam 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 o plug-in de componentes configurados pelos fabricantes dos dispositivos.
Para mais detalhes sobre os recursos de privacidade do usuário, consulte Fuso horário do local Detecção.
Configuração
Os fabricantes de dispositivos podem configurar o serviço do time_zone_detector
para mudar
o comportamento dela. Esta seção descreve as opções de configuração dos
comportamento do serviço time_zone_detector
. Para detalhes de configuração do
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 do 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 a telefonia
modo substituto. Disponível para o Android 13
e superiores.
|
Alterar o comportamento padrão do dispositivo
No AOSP, a detecção automática de fuso horário é ativada por padrão com o
A configuração auto_time_zone
foi 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
para 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 isso
não seja restaurada com base em um backup, inclua auto_time_zone
em
A 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 de
o serviço time_zone_detector
e outros componentes compartilhados por todos
algoritmos.
Configurar um dispositivo usando o serviço device_config
O serviço device_config
é um mecanismo usado no Android para configurar
comportamento modificável 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 a
o que redefiniria as flags e limparia os valores definidos para teste.
No Android 12 ou versões mais recentes, para evitar temporariamente a flag 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 conferir a configuração e o estado do time_zone_detector
do
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 usado para afetar o comportamento do serviço time_zone_detector
para testes
ou em 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
de 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
Este é um exemplo de saída do comando adb shell cmd
time_zone_detector dump
, com as informações sobre o estado atual
algoritmo e 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 |
Se o usuário é impedido de controlar as configurações de data e hora por o Controlador de política do dispositivo. |
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. Esta é a 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 quais sugestões foram feitas através das Configurações (manual) e pelos algoritmos de telefonia e de localização.