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

Detecção de fuso horário de localização

A detecção de fuso horário de localização, disponível no Android 12 ou superior, é um recurso de detecção automática de fuso horário opcional que permite que os dispositivos usem seus dados de mapa de localização e fuso horário para determinar o fuso horário.

Detecção de fuso horário localização é um mecanismo alternativo para a detecção de fuso horário telefonia . Como esse recurso não requer telefonia, ele pode ser compatível com dispositivos de vários formatos, além de dispositivos de telefonia móvel.

O recurso de detecção de fuso horário local consiste nos seguintes componentes na plataforma AOSP:

  • Lógica de detecção de fuso horário no servidor do sistema.
  • Uma opção acessível ao usuário em Configurações, introduzida no Android 12, para permitir que os usuários selecionem entre a telefonia e os mecanismos de detecção de fuso horário de localização.
  • Um sistema de plug-in para componentes que executam a detecção de localização e mapeamento de fuso horário. Um plug-in é chamado de Location Time Zone (LTZP) e não pode ser de até dois deles em um dispositivo.
  • Uma implementação LTZP de referência.
  • Hospedeiro ferramentas para gerar um conjunto de dados de referência a partir de dados OpenStreetMap que podem ser usados com a implementação de referência.

Privacidade do usuário

A detecção de fuso horário local inclui os seguintes recursos de privacidade do usuário:

  • Os usuários podem desativar a detecção de fuso horário da localização a qualquer momento.
  • As sugestões de fuso horário derivadas da localização não são compartilhadas entre os usuários em um dispositivo.
  • Os usuários podem controlar a detecção de localização para a detecção de fuso horário explicitamente através do Data e tela de Configurações de tempo. Os usuários não precisam conceder permissão explicitamente por meio de uma caixa de diálogo de permissão.
  • As informações de localização do dispositivo não são transmitidas aos serviços da plataforma Android. Em vez disso, acontece o seguinte:

    • Os serviços do detector de fuso horário são enviados apenas IDs de fuso horário pelo LTZP, não a localização do dispositivo. Esta é a API mínima necessária para dar suporte à detecção de fuso horário local.
    • A operação de LTZPs individuais é deixada para os integradores de sistema decidirem. As implementações LTZP podem usar dados de mapa de fuso horário mantidos inteiramente no dispositivo Android, alavancar servidores ou usar uma abordagem híbrida.

Comportamento do recurso

O time_zone_detector serviço determina quando mudar de fuso horário atual do dispositivo com base nas sugestões que recebe de origens de detecção.

O location_time_zone_manager serviço é responsável por sugestões de geração para a origem local de time_zone_detector . O location_time_zone_manager serviço é executado no processo do servidor do sistema.

O location_time_zone_manager serviço não contém qualquer lógica de detecção de fuso horário. É responsável por gerenciar o ciclo de vida de um ou dois plug-ins chamados Location Time Zone Providers (LTZP).

Quando a detecção de fuso horário local não é necessária, os LTZPs não são iniciados. Isso significa que o sistema de detecção de fuso horário local não pede aos LTZPs para rastrear a localização do dispositivo, a menos que sejam explicitamente solicitados. Alguns dos motivos para esse comportamento incluem o seguinte:

  • Ao contrário dos sinais de telefonia que são recebidos passivamente como parte das operações normais de telefonia, a localização pode ser solicitada ativamente dos provedores de localização do Android e pode consumir energia adicional.
  • As configurações de localização são definidas pelo usuário e o Android deve respeitar as configurações atuais do usuário.
  • Obter a localização do dispositivo é confidencial.

Além disso, o location_time_zone_manager serviço faz uma sugestão incerto (se for necessário) quando o usuário atual é alterado para evitar o compartilhamento de informações de localização entre os usuários.

Como resultado dessas escolhas, geralmente leva alguns segundos depois de alternar a origem atual para o local, ou após alternar o usuário atual, antes que o fuso horário possa ser detectado. Isso também depende das implementações dos LTZPs que estão sendo usados.

A implementação de detecção de fuso horário de localização AOSP permite até dois LTZPs, um LTZP primário e um secundário, conforme definido aqui:

LTZP primário
É executado sempre que o usuário permite que o recurso de detecção de fuso horário da localização seja executado.
LTZP Secundário
Runs se os relatórios LTZP primárias que o fuso horário é incerto, relata uma falha permanente, ou o tempo limite durante a inicialização. Pára se o primário LTZP submete uma certa sugestão.

Como mostrado na Figura 1, os time_zone_detector serviços recebe sugestões de fuso horário a partir da origem de telefonia ou de localização. A origem do local recebe sugestões do LTZP primário ou secundário.

Fluxo de informações de detecção de fuso horário de localização

Figura 1. Localização zona de tempo o fluxo de informações de detecção.

Requisitos de configuração do dispositivo

Para oferecer suporte ao recurso de fuso horário local, os dispositivos devem ser configurados com LTZPs que o dispositivo pode usar. Os dispositivos exigem que pelo menos um LTZP seja habilitado e configurado para que a detecção do fuso horário da localização seja funcional e visível para os usuários nas Configurações.

Configuração do dispositivo

Esta seção descreve como os fabricantes de dispositivos podem configurar dispositivos para oferecer suporte à detecção de fuso horário local.

A configuração básica é a AOSP frameworks/base/core/res/res/values/config.xml :

Chave de configuração Valor AOSP Descrição
config_enableGeolocationTimeZoneDetection true Este é o controle mestre para o recurso de detecção de fuso horário local.

O recurso é compatível por padrão no AOSP. Pelo menos um LTZP deve ser habilitado ou configurado para que o recurso esteja disponível aos usuários.

Definir o valor como false desativa o recurso inteiramente para uma pequena economia de memória.
config_enablePrimaryLocationTimeZoneProvider false Isso ativa o LTZP primário.
config_primaryLocationTimeZoneProviderPackageName Defina como o nome do pacote do aplicativo onde o serviço do provedor principal pode ser encontrado.
config_enableSecondaryLocationTimeZoneProvider false Isso ativa o LTZP secundário.
config_secondaryLocationTimeZoneProviderPackageName Defina como o nome do pacote do aplicativo onde o serviço de provedor secundário pode ser encontrado.

Por padrão, a configuração AOSP tem a config_enableGeolocationTimeZoneDetection conjunto chave para true suporte, permitindo para o recurso de detecção de fuso horário local. O recurso não é visível para os usuários inicialmente porque o AOSP não inclui uma configuração LTZP por padrão. No entanto, usando essa configuração padrão, os fabricantes de dispositivos podem habilitar e simular LTZPs a partir da linha de comando para teste. (Para mais informações, consulte Depuração e teste .)

Configuração e implantação do provedor de fuso horário local

Ao configurar uma LTZP, leia as instruções no código-fonte para frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java . Os comentários do Javadoc fornecem detalhes sobre o serviço, as permissões necessárias e outras configurações.

Para configurar um provedor de fuso horário local, os fabricantes de dispositivos devem escolher um processo de aplicativo para hospedar o serviço do LTZP. Ter um processo dedicado para um LTZP é uma sobrecarga alta; idealmente, o processo do aplicativo escolhido é aquele que está em execução o tempo todo, como o servidor do sistema.

Em dispositivos com componentes modulares do sistema (módulos), considerar a interação entre os dados geo utilizados pelo LTZP e as regras de fuso horário (tzdb) realizada no módulo de dados de fuso horário ( com.android.tzdata ). Atualizações em um sem atualizações no outro podem causar problemas de distorção de versão. Para mais informações, consulte Considerações de adoção de recursos .

Provedor de fuso horário de localização de referência AOSP

AOSP contém uma referência Local Time Zone implementação Provider sob packages/modules/GeoTZ . Esta implementação de referência usa APIs AOSP para determinar a localização do dispositivo e usa um arquivo de dados no dispositivo para mapear a localização para um conjunto de IDs de fuso horário.

Um conjunto de dados de referência derivado de outros projetos de código aberto está incluído no código-fonte. Para mais detalhes, consulte README.md e os vários arquivos de licença.

Depuração e teste

A seção a seguir descreve comandos shell para depurar e testar o recurso de detecção de fuso horário local.

Interagindo com o serviço location_time_zone_manager

Quando a origem local é suportada em um dispositivo com Android 12 ou superior, Android instancia o location_time_zone_manager serviço no momento da inicialização.

Para despejar o estado atual da location_time_zone_manager , use:

adb shell cmd location_time_zone_manager dump

Para ver um amplo conjunto de opções de linha de comando para auxiliar no teste, use:

adb shell cmd location_time_zone_manager help

A saída ajuda também descreve as device_config propriedades de serviço que podem ser utilizadas para afectar o comportamento do time_zone_detector para testar ou na produção. Para mais informações, consulte Configurando um dispositivo utilizando o serviço device_config .

As implementações do LTZP também podem fornecer seu próprio suporte para depuração ou teste. Por exemplo, você pode usar o seguinte comando para depurar a referência AOSP LTZP quando ela é registrada no processo do servidor do sistema.

adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService