Rilevamento del fuso orario in base alla posizione

Rilevamento del fuso orario in base alla posizione, disponibile su Android 12. o superiore, è una funzionalità facoltativa di rilevamento automatico del fuso orario che consente per utilizzare i dati relativi a posizione e mappa del fuso orario per determinare il fuso orario.

Il rilevamento del fuso orario in base alla posizione è un meccanismo alternativo al fuso orario della telefonia il rilevamento. Poiché questo funzione non richiede la telefonia, può essere supportata sui dispositivi diversi fattori di forma, oltre ai dispositivi di telefonia mobile.

La funzione di rilevamento del fuso orario in base alla posizione è costituita dai seguenti componenti: la piattaforma AOSP:

  • Logica di rilevamento del fuso orario nel server di sistema.
  • Un'opzione accessibile dall'utente nelle Impostazioni, introdotta in Android 12, per consentire agli utenti di scegliere tra meccanismi di rilevamento del fuso orario e della posizione.

  • Un sistema plug-in per i componenti che eseguono il rilevamento della posizione e la mappatura del fuso orario. Un plug-in è chiamato Provider di fuso orario posizione (LTZP) e ce ne possono essere fino a due su un dispositivo. La piattaforma fornisce le API di sistema che devono essere utilizzate per implementare una LTZP.

  • Un'implementazione LTZP di riferimento.

  • Strumenti di hosting per generare un set di dati di riferimento Dati di OpenStreetMap che può essere usato con l'implementazione di riferimento.

Privacy degli utenti

Il rilevamento del fuso orario in base alla posizione include le seguenti funzionalità di privacy dell'utente:

  • Se è presente un pulsante di attivazione/disattivazione per selezionare l'algoritmo della posizione, gli utenti possono disattivare l'algoritmo di localizzazione in qualsiasi momento.

  • I suggerimenti per il fuso orario basati sulla posizione non vengono condivisi tra utenti su un dispositivo.

  • Gli utenti possono controllare il rilevamento della posizione per il rilevamento del fuso orario esplicitamente nella schermata delle impostazioni Data e ora. Gli utenti non hanno per concedere esplicitamente l'autorizzazione tramite una finestra di dialogo delle autorizzazioni.

  • I dati sulla posizione del dispositivo non vengono trasmessi ai servizi della piattaforma Android. Si verifica invece quanto segue:

    • Ai servizi di rilevamento del fuso orario vengono inviati solo gli ID fuso orario dalla LTZP, non dalla posizione del dispositivo. Questa è l'API minima necessaria per supportare il rilevamento del fuso orario in base alla posizione.
    • Il funzionamento dei singoli LTZP è affidato agli integratori di sistemi per decidere. Le implementazioni LTZP possono utilizzare i dati delle mappe dei fusi orari solo su dispositivi Android, usare server o usare modelli l'importanza di un approccio umile.

Comportamento della funzionalità

Il servizio time_zone_detector determina quando cambiare l'impostazione attuale del dispositivo il fuso orario in base ai suggerimenti ricevuti dagli algoritmi di rilevamento.

Il servizio location_time_zone_manager è responsabile della generazione suggerimenti per l'algoritmo di località di time_zone_detector. La Il servizio location_time_zone_manager viene eseguito nel processo del server di sistema.

Il servizio location_time_zone_manager non contiene alcun rilevamento del fuso orario logica. È responsabile della gestione del ciclo di vita di uno o due plug-in chiamati Fornitori di fusi orari per località (LTZP).

Quando il rilevamento del fuso orario in base alla posizione non è necessario, i dispositivi LTZP non vengono avviati. Questo significa che il sistema di rilevamento del fuso orario in base alla posizione non chiede alle LTZP di monitorare la posizione del dispositivo, a meno che non sia espressamente richiesto. Alcuni dei I motivi di questo comportamento includono i seguenti:

  • A differenza dei segnali di telefonia che vengono ricevuti passivamente come parte normali operazioni di telefonia, la posizione può essere richiesta attivamente con i provider di posizione Android e potrebbero consumare più energia.
  • Le impostazioni di geolocalizzazione sono basate sugli utenti e Android deve rispettare le attuali le impostazioni dell'utente.
  • Ottenere la posizione del dispositivo è un aspetto sensibile alla privacy.

Inoltre, il servizio location_time_zone_manager fornisce un suggerimento incerto (se è necessaria) quando l'utente corrente cambia per evitare di condividere la posizione le informazioni tra gli utenti.

Di conseguenza, in genere sono necessari alcuni secondi dopo il passaggio l'algoritmo corrente alla posizione o dopo aver cambiato l'utente corrente, prima il fuso orario. Ciò dipende anche dalle implementazioni delle ZLT in uso.

L'implementazione del rilevamento del fuso orario in base alla posizione dell'AOSP consente fino a due LTZP, un una LTZP primaria e una secondaria, come definite qui:

LTZP principale
Viene eseguito sempre quando l'utente ha consentito il rilevamento del fuso orario basato sulla posizione per l'esecuzione della funzionalità.
LTZP secondario
Viene eseguito se la LTZP principale segnala che il fuso orario è incerto, riporta un un errore permanente o un timeout durante l'inizializzazione. Si interrompe se l'istanza principale LTZP invia un determinato suggerimento.

Come mostrato nella Figura 1, i servizi time_zone_detector ricevono il fuso orario suggerimenti dall'algoritmo di telefonia o di geolocalizzazione. L'algoritmo di localizzazione riceve suggerimenti dalla LTZP principale o secondaria.

Flusso di informazioni sul rilevamento del fuso orario in base alla posizione

Figura 1. Flusso di informazioni sul rilevamento del fuso orario in base alla posizione.

Requisiti di configurazione del dispositivo

Per supportare la funzionalità di fuso orario basato sulla posizione, i dispositivi devono essere configurati con LTZP utilizzabili dal dispositivo. I dispositivi richiedono almeno una LTZP per essere abilitata e configurato in modo che il rilevamento del fuso orario sia funzionante e visibile ai in Impostazioni.

Configurazione dispositivo

Questa sezione descrive in che modo i produttori possono configurare i dispositivi per supportare rilevamento del fuso orario in base alla posizione.

La configurazione AOSP di base è frameworks/base/core/res/res/values/config.xml:

Chiave di configurazione Valore AOSP Descrizione
config_enableGeolocationTimeZoneDetection true Questo è il controllo principale per la funzionalità di rilevamento del fuso orario in base alla posizione.

La funzionalità è supportata per impostazione predefinita in AOSP. Almeno una LTZP deve essere se attivata o configurata per rendere disponibile la funzionalità agli utenti.

Se il valore viene impostato su false, la funzionalità viene disattivata completamente per una memoria ridotta risparmiare tempo.
config_enablePrimaryLocationTimeZoneProvider false In questo modo viene attivata la LTZP principale.
config_primaryLocationTimeZoneProviderPackageName Imposta questo elemento sul nome del pacchetto dell'app in cui viene utilizzato il servizio del fornitore principale sono presenti.
config_enableSecondaryLocationTimeZoneProvider false In questo modo viene attivata la LTZP secondaria.
config_secondaryLocationTimeZoneProviderPackageName Imposta questo elemento sul nome del pacchetto dell'app in cui il provider secondario Google Cloud.

Per impostazione predefinita, la configurazione AOSP ha Tasto config_enableGeolocationTimeZoneDetection impostato su true, attivazione del supporto per la funzionalità di rilevamento del fuso orario in base alla posizione. La funzionalità non è visibile a inizialmente perché AOSP non include una configurazione LTZP per impostazione predefinita. Tuttavia, utilizzando questa configurazione predefinita, i produttori di dispositivi possono abilitare e simulare gli LTZP dalla riga di comando per i test. Per ulteriori informazioni, vedi Debug e test.)

API per lo stato LTZP

In Android 14, le API LTZP supportano la specifica LTZP informazioni sullo stato dei report. Ciò consente alla LTZP di segnalare problemi che la piattaforma potrebbe non essere in grado di rilevare autonomamente, dato che la piattaforma I componenti del rilevamento del fuso orario non sono direttamente coinvolti nella posizione o nell'ora il rilevamento delle zone nell'algoritmo di localizzazione.

La possibilità di segnalare che il comportamento del LTZP è stato ridotto a causa della è utile quando l'ambiente modalità di riserva telefonia è supportato. Ad esempio, se una LTZP di terze parti che si basa su impostazioni personalizzate o o autorizzazioni necessarie per il funzionamento del rilevamento della posizione è in esecuzione in modalità ridotta o disattivato dalle impostazioni attuali del dispositivo, può segnalare questo stato ai componenti interni della piattaforma, come l'app Impostazioni, tramite reportSuggestion . L'app Impostazioni può quindi inviare notifiche agli utenti tramite stringhe personalizzabili o personalizzazioni che è necessario modificare per la posizione che funzioni bene o del tutto.

Per ulteriori informazioni sugli stati che la LTZP può segnalare, consulta TimeZoneProviderStatus

Configurazione e implementazione di LTZP

Quando configuri un LTZP, leggi le istruzioni nel codice sorgente per frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java I commenti Javadoc forniscono dettagli sul servizio, sulle autorizzazioni necessarie e un'altra configurazione.

Per configurare una LTZP, i produttori di dispositivi devono scegliere un per ospitare il servizio LTZP. Avere una procedura dedicata per una ZZP è un overhead elevato; idealmente, il processo scelto per l'app è quello in esecuzione ad esempio il server di sistema.

Sui dispositivi con componenti di sistema modulari (moduli), considera l'interazione tra i dati geografici utilizzati dalla LTZP e le regole del fuso orario (tzdb) riportate nel Modulo Time Zone Data (Dati del fuso orario) (com.android.tzdata). È probabile che gli aggiornamenti a uno di questi elementi non vengano aggiornati all'altro per causare problemi di disallineamento delle versioni. Per ulteriori informazioni, vedi Considerazioni sull'adozione delle funzionalità.

LTZP di riferimento AOSP

AOSP contiene un'implementazione LTZP di riferimento in packages/modules/GeoTZ Questa implementazione di riferimento utilizza le API AOSP per determinare la posizione del dispositivo e utilizza un file di dati sul dispositivo per mappare la posizione a una serie di ID fuso orario.

Un set di dati di riferimento derivato da altri progetti open source è incluso con il codice sorgente. Per ulteriori dettagli, vedi README.md e i vari file LICENSE.

Debug e test

La sezione seguente descrive i comandi shell per il debug e il test del funzione di rilevamento del fuso orario in base alla posizione.

Interagire con il servizio location_time_zone_manager

Quando l'algoritmo di localizzazione è supportato su un dispositivo in esecuzione Android 12 o versioni successive. Android crea un'istanza del servizio location_time_zone_manager al momento dell'avvio.

Per eseguire il dump dello stato attuale di location_time_zone_manager, usa:

adb shell cmd location_time_zone_manager dump

Per visualizzare un ampio set di opzioni della riga di comando per facilitare il test, usa:

adb shell cmd location_time_zone_manager help

L'output della guida descrive anche le proprietà del servizio device_config che possono da utilizzare per influire sul comportamento di time_zone_detector a scopo di test o in e produzione. Per ulteriori informazioni, vedi Configurare un dispositivo mediante il servizio device_config.

Le implementazioni LTZP possono anche fornire assistenza per il debug o i test. Ad esempio, puoi utilizzare il seguente comando per eseguire il debug del riferimento AOSP LTZP quando è registrato nel processo del server di sistema.

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