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.
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