Questa pagina descrive il funzionamento del rilevamento dell'ora e del fuso orario su Android. Ciò include la modalità di rilevamento automatico di ora e fusi orari da parte di Android, le opzioni di configurazione per i produttori di dispositivi e le informazioni sui test.
Panoramica di ora e fusi orari
Per determinare l'ora locale di un utente da visualizzare in posizioni come la barra di stato, Android tiene traccia di due stati correlati ma indipendenti:
- L'ora attuale dell'epoca di Unix
- Il fuso orario attuale
L'ora Unix epoch corrente e il fuso orario corrente sono stati a livello di dispositivo, il che significa che sono condivisi da tutti gli utenti di un dispositivo.
L'ora Unix attuale non è un valore fisso. Si aggiorna automaticamente per riflettere il passare del tempo. Oltre al normale trascorrere del tempo, l'attuale ora Unix epoch di un dispositivo viene modificata se risulta errata, ad esempio dopo che un dispositivo ha perso l'alimentazione.
Il fuso orario attuale determina l'aggiustamento da apportare per convertire l'ora Unix epoch attuale in un'ora locale. Ad esempio, durante l'estate a Los Angeles, il dispositivo sottrae 7 ore all'ora Unix epoch corrente, mentre in inverno ne sottrae 8.
Per supportare questi calcoli dell'ora locale, tutti i dispositivi Android dispongono di un database di tutte le regole dei fusi orari globali. Per saperne di più sulle regole del fuso orario, consulta Regole del fuso orario.
Quando un utente si reca in una nuova località che utilizza un fuso orario diverso, l'ora Unix epoch corrente non deve essere modificata, ma l'utente in genere vuole vedere l'ora locale anziché l'ora della sua posizione precedente. La modifica del fuso orario attuale garantisce che venga applicato l'offset corretto all'ora Unix epoch attuale per visualizzare l'ora locale corretta per la nuova posizione.
AOSP consente agli utenti di controllare in modo indipendente se l'ora e il fuso orario vengono impostati automaticamente per loro tramite i seguenti meccanismi.
- Rilevamento automatico dell'ora: assicura che il dispositivo abbia l'ora Unix epoch corrente corretta.
- Rilevamento automatico del fuso orario: assicura che il dispositivo abbia il fuso orario corretto.
Rilevamento automatico dell'ora
Questa sezione fornisce una panoramica del servizio time_detector
che gestisce
il rilevamento automatico dell'ora, i controlli utente, le opzioni di configurazione e i dettagli
dei test.
Il servizio time_detector
Il servizio time_detector
, presente sui dispositivi con Android 10 o versioni successive, gestisce il rilevamento automatico dell'ora. Regola l'ora Unix
epoch corrente del dispositivo in base alle necessità quando è attivato il rilevamento automatico dell'ora.
Il servizio time_detector
si trova sempre in uno dei due stati: certain
o
uncertain
. Lo stato certo o incerto del servizio è determinato dai suggerimenti
sull'orario che riceve da varie fonti.
Quando il servizio time_detector
è certo, ovvero ha ricevuto un suggerimento con informazioni sull'ora dell'epoca di Unix, esegue l'override dell'ora dell'epoca di Unix corrente se il suggerimento sull'ora è diverso dall'ora dell'epoca di Unix corrente.
Quando time_detector
è incerto, non sostituisce l'ora corrente. Lo stato
incerto in genere indica che il servizio time_detector
non ha ricevuto suggerimenti
sull'ora. Il servizio time_detector
diventa incerto anche se i suggerimenti
che ha ricevuto sono considerati troppo vecchi per essere utilizzati. L'età dei suggerimenti viene
presa in considerazione perché gli aggiustamenti che utilizzano suggerimenti di tempo Unix epoch precedenti si basano sull'orologio
in tempo reale trascorso sul dispositivo, che si presume sia impreciso per
lunghi periodi.
Per stabilire automaticamente l'ora Unix attuale, un dispositivo può utilizzare varie fonti. In questo documento, questi siti sono chiamati origini. Il servizio
time_detector
tratta le sequenze di suggerimenti come distinte in base
alla loro origine.
Il servizio time_detector
è stateful, il che significa che tiene traccia del suggerimento più recente di ogni origine. Vengono forniti nuovi suggerimenti per
time_detector
se un'origine dispone di informazioni più recenti sull'ora Unix epoch
disponibili. Il servizio time_detector
rivaluta i suggerimenti nuovi ed esistenti
e aggiorna lo stato del dispositivo quando vengono ricevuti i suggerimenti.
Sebbene l'ora UTC sia concordata a livello internazionale, ci sono vari motivi per cui stabilire l'ora Unix epoch attuale non è sempre semplice per un dispositivo Android:
- L'ora Unix è un sistema di cronometraggio leggermente diverso dall'ora UTC. La conversione tra i due richiede la conoscenza del momento in cui si verificano i secondi intercalari e del modo in cui vengono gestiti dalle origini.
- Le origini potrebbero essere disponibili solo in determinati orari o in determinate circostanze. Ad esempio, se l'origine richiede la connettività di rete, potrebbe essere disponibile solo quando il dispositivo è connesso a internet.
- Le origini potrebbero essere imprecise o presentare errori. Ad esempio, se una torre cellulare di telefonia non monitora correttamente l'ora UTC, l'origine di telefonia potrebbe fornire suggerimenti sull'ora imprecisi.
- Potrebbero essere presenti imprecisioni durante l'ottenimento dell'ora epoca di Unix. Ad esempio, un ritardo di rete, il buffering o la pianificazione dei processi potrebbero causare l'imprecisione dell'ora dell'epoca Unix.
- L'orologio di riferimento utilizzato per modificare un suggerimento per il tempo trascorso dalla ricezione del suggerimento potrebbe non essere preciso.
Per impostazione predefinita, in AOSP sono configurate due origini principali di rilevamento dell'ora:
- Rete: utilizza i server di riferimento dell'ora NTP (Network Time Protocol).
- Telefonia: utilizza i segnali di telefonia NITZ (Network Identity and Time Zone).
Sia le origini telefoniche che quelle di rete richiedono la connettività a reti esterne, che non sono sempre disponibili.
A partire da Android 12, Android supporta anche le seguenti origini, che non sono configurate per l'utilizzo per impostazione predefinita:
- GNSS: utilizza il fornitore di servizi di localizzazione GPS per ottenere l'ora da una fonte GNSS.
- Esterno: origine generica che consente ai produttori di dispositivi di integrare la propria origine del tempo Unix.
Impostazioni temporali
Gli utenti possono attivare il rilevamento automatico dell'ora in Sistema > Data e ora nell'app Impostazioni AOSP.
Figura 1. Rilevamento automatico dell'ora nelle Impostazioni.
La tabella seguente descrive i controlli utente per il rilevamento dell'ora nell'app Impostazioni AOSP.
*Su Android 11 e versioni precedenti, questa impostazione è denominata Usa l'ora fornita dalla rete |
|||
Posizione delle impostazioni AOSP | Nome delle impostazioni AOSP | Ambito | Comportamento |
---|---|---|---|
Sistema > Data e ora | Imposta automaticamente l'ora* | Tutti gli utenti | Un pulsante di attivazione/disattivazione. Se l'opzione è attivata, il dispositivo è responsabile del rilevamento dell'ora Unix attuale. Se l'opzione è disattivata, gli utenti dispongono di controlli per impostare manualmente l'ora del dispositivo. |
Quando l'utente inserisce l'ora manualmente, inserisce l'ora locale, non l'ora dell'epoca Unix. L'ora attuale dell'epoca Unix viene calcolata utilizzando il fuso orario attuale per derivare un'ora dell'epoca Unix.
Configurazione
I produttori di dispositivi possono configurare il servizio time_detector
in vari modi,
ad esempio quali origini utilizzare e come dare la priorità ai segnali provenienti da queste origini.
Priorità delle origini
A partire da Android 12, i produttori di dispositivi possono modificare il file di configurazione core/res/res/values/config.xml
per specificare quali origini temporali includere nel rilevamento automatico dell'ora e la priorità con cui time_detector
considera queste origini.
Per i dispositivi con Android 11 o versioni precedenti, la priorità dell'origine è codificata
in modo permanente su ["telephony", "network"]
, il che significa che i suggerimenti di telefonia hanno la priorità
rispetto ai suggerimenti di rete.
La configurazione AOSP predefinita è la seguente:
<!-- 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>
In Android 12, i suggerimenti per la rete e la telefonia sono configurati come origini da utilizzare per impostazione predefinita. I suggerimenti sull'ora di rete hanno la priorità rispetto ai suggerimenti sull'ora di telefonia. I produttori di dispositivi possono modificare l'ordine delle origini per ripristinare il comportamento di Android 11 o versioni precedenti, in cui la telefonia ha una priorità più elevata.
Per impostazione predefinita, se il suggerimento valido con la priorità più alta corrisponde all'ora
corrente dell'orologio di sistema del dispositivo entro un paio di secondi, l'ora del dispositivo non
viene modificata. In questo modo si evita di creare lavoro per le app installate che ascoltano l'intent
ACTION_TIME_CHANGED
.
I valori di origine consentiti sono:
Limiti di tempo consentiti
Android 14 introduce un limite di tempo superiore per i suggerimenti sull'ora ricevuti dal servizio
time_detector
. Se il dispositivo supporta processi a 32 bit, il framework
imposta un limite di tempo superiore per impedire al dispositivo di utilizzare un suggerimento di orario che
potrebbe attivare il problema Y2038.
Android 12 ha introdotto un limite di tempo inferiore utilizzato per convalidare i suggerimenti
sull'ora ricevuti dal servizio time_detector
. Il valore del limite inferiore di tempo
utilizzato per i suggerimenti automatici viene impostato in base al timestamp della build. Questo funziona in base al principio che un'ora valida non può essere precedente alla creazione dell'immagine di sistema del dispositivo. Se un suggerimento di orario è precedente al limite inferiore, il servizio lo scarta perché non può essere valido se il timestamp di build è corretto.time_detector
Per i dispositivi con Android 11 o versioni precedenti, il servizio time_detector
non
convalida i suggerimenti relativi all'ora Unix in entrata.
Debug e test del tempo
Questa sezione fornisce informazioni su come eseguire il debug e testare il comportamento del servizio time_detector
e di altri componenti condivisi da tutte le origini.
Interagire con il servizio time_detector
Per visualizzare la configurazione e lo stato del servizio time_detector
, utilizza:time_detector
adb shell cmd time_detector dump
Per visualizzare altri comandi per il debug e il test del rilevamento del fuso orario, utilizza:
adb shell cmd time_detector help
L'output della guida descrive anche le proprietà del servizio device_config
che possono
essere utilizzate per influire sul comportamento di time_detector
per i test o in produzione.
Per maggiori dettagli, vedi Configurare un dispositivo utilizzando il servizio device_config.
Per convalidare il rilevamento automatico dell'ora, i tester devono sapere quali origini utilizza il servizio time_detector
. Di seguito è riportato un esempio dell'output del
comando adb shell cmd time_detector dump
, con le informazioni sullo
stato attuale dell'origine e del servizio in grassetto:
$ 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:
...
Le informazioni possono essere interpretate come segue:
Chiave | Valore |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() |
Indica se il rilevamento automatico dell'ora è attivato. |
mEnvironment.autoTimeLowerBound() |
Il limite inferiore corrente utilizzato per convalidare i suggerimenti sull'ora. |
mEnvironment.autoOriginPriorities() |
Le origini in uso e l'ordine di priorità. |
Il log delle modifiche dell'ora indica le occasioni in cui il servizio time_detector
ha
modificato l'ora Unix epoch corrente del dispositivo.
Le informazioni della cronologia dei suggerimenti indicano quali suggerimenti sono stati forniti da ogni origine.
Rilevamento automatico del fuso orario
Questa sezione fornisce una panoramica del servizio time_zone_detector
che
gestisce il rilevamento automatico del fuso orario, i controlli utente nelle impostazioni, il rilevamento del fuso orario di telefonia e
della posizione e i dettagli dei test.
Il servizio time_zone_detector
Il servizio time_zone_detector
, presente sui dispositivi con Android 11 o versioni successive, gestisce il rilevamento automatico del fuso orario. Regola il fuso orario corrente
del dispositivo in base alle necessità quando il rilevamento automatico del fuso orario è attivato.
Quando il rilevamento automatico del fuso orario è attivato, time_zone_detector
può trovarsi in
uno dei due stati: certain
e uncertain
.
Quando il servizio time_zone_detector
si trova in un determinato stato, significa che il servizio time_zone_detector
ha ricevuto informazioni sul fuso orario precise, che possono causare la sostituzione del fuso orario attuale. Quando è incerto, significa
che non ha ricevuto informazioni o solo informazioni con un basso livello di confidenza, il che significa
che non sostituirà il fuso orario attuale.
Alcuni stati del servizio time_zone_detector
possono includere quelli in cui
time_zone_detector
non dispone di informazioni sul fuso orario da utilizzare o in cui
ha più fusi orari tra cui scegliere. Questi stati sono:
- Viene inserito un determinato stato con zero fusi orari quando il dispositivo si trova in un luogo
senza fuso orario, ad esempio in acque internazionali o in un'area contesa.
Questo stato è simile a uno stato incerto, ma indica che
time_zone_detector
non deve intraprendere ulteriori azioni per cercare di determinare il fuso orario. - Viene inserito un determinato stato con più fusi orari in cui sono presenti ambiguità
o condizioni limite. In questo stato, se il fuso orario corrente è uno di quelli per cui
time_zone_detector
ha la certezza, il fuso orario corrente rimane invariato. In caso contrario, viene utilizzato uno dei fusi orari disponibili. In questo modo,time_zone_detector
diventa un elemento di fidelizzazione se l'utente ha selezionato manualmente il fuso orario in precedenza o quando il dispositivo si avvicina a un confine.
Lo stato certo o incerto del servizio time_zone_detector
è determinato dai
suggerimenti per il fuso orario inviati da un algoritmo.
In genere, i suggerimenti sono di due tipi che corrispondono strettamente ai possibili stati
di time_zone_detector
: certain
e uncertain
. Di seguito sono riportati alcuni esempi
di tipi di suggerimenti:
type =
uncertain
,zoneIds = []
- L'algoritmo non conosce il fuso orario.
type =
certain
,zoneIds = ["Europe/London"]
- L'algoritmo è certo che la zona sia Europe/London.
type =
certain
,zoneIds = []
`- L'algoritmo è certo, ma non è associato alcun ID zona alla posizione attuale.
type =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- L'algoritmo è certo che la risposta sia una delle due zone, ma non riesce a scegliere tra America/Denver e America/Phoenix.
Il servizio time_zone_detector
tratta le sequenze di suggerimenti come distinte
in base al proprio algoritmo. A seconda dell'algoritmo, i suggerimenti potrebbero anche
contenere metadati che indicano il livello di certezza dell'algoritmo.
Il servizio time_zone_detector
è stateful, il che significa che tiene traccia
del suggerimento più recente fornito da ciascun algoritmo. I nuovi suggerimenti vengono inviati
al servizio time_zone_detector
se un suggerimento precedente non è più
corretto, ovvero se un algoritmo ora ha un suggerimento diverso o se ha
perso la capacità di rilevare il fuso orario. Il servizio time_zone_detector
rivaluta i suggerimenti nuovi ed esistenti e aggiorna lo stato del dispositivo quando
vengono ricevuti i suggerimenti.
Android supporta due algoritmi per il rilevamento del fuso orario:
- Telefonia
- Posizione
Il servizio time_zone_detector
in genere utilizza un singolo algoritmo per determinare
il fuso orario. Quando l'algoritmo di localizzazione è supportato su un dispositivo, l'algoritmo utilizzato dal dispositivo viene determinato in base alle impostazioni del fuso orario configurate dall'utente. Quando l'algoritmo in uso non è sicuro del fuso orario, time_zone_detector
di solito non utilizza suggerimenti di un algoritmo diverso. I suggerimenti associati ad algoritmi non in uso possono essere memorizzati
da time_zone_detector
, ma non vengono utilizzati a meno che l'algoritmo
non cambi. Quando l'utente modifica le impostazioni per il rilevamento automatico del fuso orario
e l'algoritmo cambia, viene utilizzato il suggerimento più recente disponibile per il nuovo
algoritmo.
Per informazioni dettagliate sulla situazione in cui vengono utilizzati più algoritmi per determinare il fuso orario, consulta la sezione Modalità di fallback della telefonia.
Modalità di fallback della telefonia
Sui dispositivi con Android 13 e versioni successive, il servizio time_zone_detector
supporta la modalità di fallback della telefonia. Questa modalità consente ad Android di utilizzare temporaneamente i suggerimenti di rilevamento della telefonia nelle situazioni in cui il rilevamento della posizione non riesce a rilevare il fuso orario o in cui il rilevamento della posizione impiega più tempo a rilevare il fuso orario rispetto al rilevamento della telefonia.
La modalità di fallback della telefonia si applica ai dispositivi in cui sono supportati sia la telefonia sia il rilevamento della posizione e in cui l'utente ha attivato l'opzione Usa la posizione per impostare il fuso orario nelle impostazioni del fuso orario. La modalità viene attivata automaticamente quando un dispositivo viene riavviato e quando la modalità aereo è disattivata.
In Android 14 e versioni successive, il fallback della telefonia può essere attivato tramite le API di stato LTZP, ovvero se un LTZP segnala di essere incerto e la sua capacità di rilevare la posizione o il fuso orario è compromessa dall'ambiente, viene attivata la modalità di fallback della telefonia.
In modalità di fallback della telefonia, il servizio time_zone_detector
utilizza i suggerimenti di telefonia come se il rilevamento della posizione fosse disattivato finché l'algoritmo di localizzazione non fornisce un determinato suggerimento. Dopo aver ricevuto un determinato suggerimento, la modalità
di fallback della telefonia viene disattivata e vengono utilizzati esclusivamente i suggerimenti sulla posizione.
Per i dettagli di configurazione della modalità di fallback della telefonia, vedi Configurazione del rilevamento del fuso orario.
Impostazioni fuso orario
Gli utenti possono attivare e configurare le impostazioni per il rilevamento automatico del fuso orario nell'app Impostazioni AOSP.
Figura 2. Rilevamento automatico del fuso orario in Impostazioni.
La tabella seguente descrive i controlli utente per il rilevamento del fuso orario nell'app Impostazioni AOSP.
*Su Android 11 e versioni precedenti, questa impostazione è denominata Utilizza il fuso orario fornito dalla rete |
|||
Posizione delle impostazioni AOSP | Nome delle impostazioni AOSP | Ambito | Comportamento |
---|---|---|---|
Sistema > Data e ora | Imposta automaticamente il fuso orario* | Tutti gli utenti | Un pulsante di attivazione/disattivazione. Se l'opzione è attiva, il dispositivo è responsabile del rilevamento del fuso orario corrente. Se l'opzione è disattivata, gli utenti dispongono di controlli per impostare manualmente il fuso orario del dispositivo. |
Sistema > Data e ora | Utilizza la posizione per impostare il fuso orario | Utente corrente | Un pulsante di attivazione/disattivazione. Disponibile a partire da Android 12. Questo pulsante di attivazione/disattivazione viene visualizzato solo quando il rilevamento del fuso orario in base alla posizione è supportato sul dispositivo. Per le modifiche introdotte in Android 14, vedi Dispositivi che supportano solo il rilevamento del fuso orario in base alla posizione. |
Posizione | Usa posizione | Utente corrente | Un pulsante di attivazione/disattivazione. Consente o impedisce l'utilizzo della posizione del dispositivo in generale. Il valore è pertinente se il rilevamento del fuso orario in base alla posizione è supportato sul dispositivo. |
Di seguito viene fornita una panoramica del comportamento del dispositivo per il rilevamento del fuso orario in base alle impostazioni scelte dall'utente:
[Data e ora] Imposta automaticamente il fuso orario: OFF
- L'utente deve selezionare manualmente il fuso orario.
[Data e ora] Imposta automaticamente il fuso orario: ON
[Posizione] Usa posizione: OFF
- I segnali di telefonia vengono utilizzati per rilevare il fuso orario.
[Posizione] Usa posizione: ON
[Data e ora] Usa la posizione per impostare il fuso orario: ON
- La posizione viene utilizzata per rilevare il fuso orario.
[Data e ora] Usa la posizione per impostare il fuso orario: OFF
- I segnali di telefonia vengono utilizzati per rilevare il fuso orario.
Dispositivi di più utenti
Poiché diverse impostazioni coinvolte sono limitate all'utente corrente, il comportamento di rilevamento del fuso orario di un dispositivo può cambiare quando l'utente corrente cambia su un dispositivo Android multiutente.
L'opzione Usa la posizione per impostare il fuso orario è limitata all'utente corrente e non è limitata dai criteri del dispositivo, il che significa che gli utenti possono sempre modificarne il valore, anche quando l'opzione Imposta automaticamente il fuso orario è disattivata o se altri controlli di ora o fuso orario sono limitati dal controller dei criteri del dispositivo.
Dispositivi che supportano solo l'algoritmo di rilevamento del fuso orario in base alla posizione
Questa sezione descrive il comportamento dei dispositivi che supportano solo l'algoritmo di localizzazione.
Android 14 e versioni successive
- L'opzione Usa posizione non viene mostrata agli utenti nell'app Impostazioni AOSP e il dispositivo si comporta come se l'opzione Usa posizione fosse attivata.
- Il valore dell'impostazione
SettingsProvider
location_time_zone_detection_enabled
con ambito utente viene ignorato. Questo valore registra la preferenza dell'utente su altri tipi di dispositivi.
Android 12 o Android 13
- L'opzione Usa posizione è visibile agli utenti nell'app Impostazioni AOSP e gli utenti possono disattivarla. Se l'opzione è disattivata, il dispositivo non rileverà automaticamente il fuso orario.
Comportamento quando si passa al rilevamento automatico e viceversa
Quando l'utente passa dal rilevamento del fuso orario manuale a quello automatico,
time_zone_detector
potrebbe già essere certo del fuso orario corrente. In questo caso,
quando l'utente attiva il rilevamento automatico, il fuso orario del dispositivo potrebbe essere modificato
contemporaneamente per corrispondere all'opinione del servizio time_zone_detector
.
Allo stesso modo, quando l'utente apporta una modifica nelle Impostazioni che comporta una modifica
dell'algoritmo attuale del servizio time_zone_detector
, time_zone_detector
potrebbe
aver già ricevuto suggerimenti per il nuovo algoritmo e quindi l'ora del dispositivo
potrebbe essere modificata immediatamente in base all'opinione del servizio time_zone_detector
.
Rilevamento del fuso orario della telefonia
Il rilevamento del fuso orario della telefonia utilizza i segnali di telefonia per determinare il fuso orario corrente. Per ulteriori informazioni, vedi Rilevamento del fuso orario della telefonia.
Rilevamento del fuso orario in base alla posizione
Il rilevamento del fuso orario in base alla posizione è disponibile su Android 12 o versioni successive. Si tratta di una funzionalità di rilevamento automatico del fuso orario facoltativa che consente ai dispositivi di utilizzare la propria posizione per determinare il fuso orario attuale.
Il servizio location_time_zone_manager
, introdotto in Android 12, viene eseguito nel server di sistema e contiene il codice responsabile dell'invio di suggerimenti per l'algoritmo di localizzazione al servizio time_zone_detector
. Per saperne di più,
vedi Rilevamento del fuso orario della località.
Considerazioni sull'adozione delle funzionalità
Questa sezione descrive gli aspetti della funzionalità di rilevamento del fuso orario in base alla posizione per aiutare un produttore di dispositivi a determinare se adottare la funzionalità su un dispositivo.
Confrontare la telefonia e il rilevamento della posizione
La seguente tabella mette a confronto i vantaggi e gli svantaggi dell'utilizzo della posizione anziché dei segnali di telefonia per il rilevamento del fuso orario.
Categoria | Rilevamento della telefonia | Rilevamento della posizione |
---|---|---|
Correttezza | Varia in base al paese. Dipende da MCC, correttezza e disponibilità di NITZ. |
Dipende dalla configurazione della funzionalità o dai componenti plug-in. La correttezza in genere varia in base a:
|
Aggiornabilità | Il rilevamento della telefonia si basa sui file contenuti nel modulo di dati del fuso orario aggiornabile
(com.android.tzdata APEX). |
Dipende dalla configurazione della funzionalità o dai componenti plug-in. L'aggiornabilità in genere dipende dal fatto che il dispositivo utilizzi dati della mappa del fuso orario del server o del client. I dati della mappa dei fusi orari non sono contenuti nel modulo Dati fuso orario utilizzato per aggiornare la copia di TZDB di Android e altre informazioni sui fusi orari. I produttori di dispositivi devono anche considerare la coerenza della versione tra le regole del fuso orario e i dati della mappa del fuso orario. |
Utilizzo avanzato | Nessun consumo energetico o consumo energetico basso | Dipende dalle impostazioni di localizzazione dell'utente, dai plug-in utilizzati e in genere da quali altre app richiedono la posizione. |
Disponibilità | Solo dispositivi di telefonia. Di solito richiede una SIM funzionante. | Il rilevamento della posizione dipende dai fornitori di servizi di localizzazione disponibili. |
Privacy degli utenti
Il fuso orario preferito di un utente viene solitamente determinato dalla sua posizione geografica. La posizione è un dato sensibile. Gli utenti potrebbero essere preoccupati che la loro posizione venga condivisa nell'ambito del rilevamento del fuso orario. Indipendentemente dal rilevamento del fuso orario, tutte le app in esecuzione su un dispositivo possono leggere il fuso orario corrente del dispositivo senza richiedere un'autorizzazione Android e le app possono dedurre un'idea imprecisa della posizione del dispositivo da queste informazioni.
Più nello specifico, il rilevamento del fuso orario può avvenire in modo passivo o attivo:
- Passivo: un elemento nell'ambiente del dispositivo indica al dispositivo il fuso orario da utilizzare in quell'ambiente.
- Attiva: il dispositivo deve calcolare il fuso orario autonomamente e, a seconda delle impostazioni della privacy degli utenti e del loro consenso, ottiene la posizione del dispositivo per farlo. Può quindi condividere la sua posizione con servizi esterni. Per maggiori dettagli su privacy e consenso degli utenti, consulta la discussione di seguito.
Il rilevamento passivo, ad esempio con l'algoritmo di telefonia, non ha ulteriori implicazioni per la privacy degli utenti.
Il rilevamento attivo, ad esempio con l'algoritmo di localizzazione, comporta la determinazione della posizione del dispositivo, che gli utenti potrebbero non voler accettare, e la posizione potrebbe essere inviata tramite una rete per determinare l'ID fuso orario.
L'approccio di Android alla privacy degli utenti per il rilevamento del fuso orario offre all'utente la possibilità di disattivare individualmente gli algoritmi che dovrebbero essere attivi. Inoltre, il codice della piattaforma AOSP non gestisce direttamente la posizione: il rilevamento della posizione e la mappatura della posizione agli ID fuso orario vengono lasciati ai componenti plug-in configurati dai produttori di dispositivi.
Per maggiori dettagli sulle funzionalità per la privacy degli utenti, vedi Rilevamento del fuso orario della posizione.
Configurazione
I produttori di dispositivi possono configurare il servizio time_zone_detector
per modificarne il comportamento. Questa sezione descrive le opzioni di configurazione per il comportamento generale del servizio time_zone_detector
. Per i dettagli di configurazione degli
algoritmi di rilevamento della telefonia e del fuso orario, vedi Rilevamento del fuso orario
della telefonia e Rilevamento del fuso orario in base alla posizione.
La configurazione AOSP di base si trova in
frameworks/base/core/res/res/values/config.xml
.
Chiave di configurazione | Valore AOSP | Descrizione |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
Quando true , time_zone_detector utilizza la modalità di fallback
della telefonia. Questa funzionalità è disponibile per Android 13 e versioni successive.
|
Modifica del comportamento predefinito del dispositivo
In AOSP, il rilevamento automatico del fuso orario è abilitato per impostazione predefinita con l'impostazione
auto_time_zone
impostata su true
. Per disattivare il rilevamento automatico dell'ora per impostazione predefinita, imposta il valore di def_auto_time_zone
definito in frameworks/base/packages/SettingsProvider/res/values/defaults.xml
su false
.
Quando ripristini un backup da un altro dispositivo, il framework aggiorna il valore dell'impostazione auto_time_zone
per impostazione predefinita. Se vuoi assicurarti che questa impostazione
non venga ripristinata da un backup, includi auto_time_zone
nell'array
restore_blocked_global_settings
definito in
frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
.
Debug e test del fuso orario
Questa sezione fornisce informazioni su come eseguire il debug e testare il comportamento del servizio time_zone_detector
e di altri componenti condivisi da tutti gli algoritmi.
Configurare un dispositivo utilizzando il servizio device_config
Il servizio device_config
è un meccanismo utilizzato su Android per configurare
il comportamento modificabile utilizzando valori in genere recuperati da un server remoto
da codice proprietario (non AOSP). Quando utilizzi i valori device_config
per i test,
soprattutto durante i test manuali di lunga durata, il dispositivo potrebbe sincronizzare i
flag, che verranno reimpostati e i valori impostati per i test verranno cancellati.
In Android 12 o versioni successive, per impedire temporaneamente la sincronizzazione dei flag, utilizza:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Per ripristinare la sincronizzazione dei flag dopo i test, utilizza:
adb shell cmd device_config set_sync_disabled_for_tests none
Dopo aver ripristinato la sincronizzazione dei flag, riavvia il dispositivo.
Per ulteriori informazioni, utilizza $ adb shell cmd device_config help
.
Interagire con il servizio time_zone_detector
Per visualizzare la configurazione e lo stato di time_zone_detector
del servizio time_zone_detector
, utilizza:
adb shell cmd time_zone_detector dump
Per visualizzare altri comandi per il debug e il test del rilevamento del fuso orario, utilizza:
adb shell cmd time_zone_detector help
L'output della guida descrive anche le proprietà del servizio device_config
che possono
essere utilizzate per influire sul comportamento del servizio time_zone_detector
per i test
o in produzione. Per maggiori dettagli, vedi Configurare un dispositivo utilizzando il servizio device_config.
Per convalidare il rilevamento del fuso orario, i tester devono sapere quale algoritmo utilizza
time_zone_detector
. Per comprendere e influenzare l'algoritmo attuale
del time_zone_detector
, utilizza una delle seguenti opzioni:
- Controlla visivamente tramite l'interfaccia utente delle impostazioni. Per ulteriori informazioni, consulta Impostazioni del fuso orario.
Utilizza la riga di comando tramite adb:
- Per eseguire il dump dello stato di
time_zone_detector
, utilizzaadb shell cmd time_zone_detector dump
- Per modificare l'impostazione del dispositivo, utilizza altri comandi
time_zone_detector
. Per ulteriori informazioni, utilizzaadb shell cmd time_zone_detector help
.
- Per eseguire il dump dello stato di
Di seguito è riportato un esempio dell'output del comando adb shell cmd
time_zone_detector dump
, con le informazioni sull'algoritmo e sullo stato del servizio attuali in grassetto:
$ 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:
...
Le informazioni possono essere interpretate come segue:
Chiave | Valore |
---|---|
mUserConfigAllowed |
Indica se l'utente non può controllare le impostazioni di data e ora a causa del controller delle norme del dispositivo. |
mTelephonyDetectionSupported |
Se il dispositivo ha il rilevamento del fuso orario della telefonia. |
mGeoDetectionSupported |
Se il dispositivo supporta il rilevamento del fuso orario in base alla posizione. Questo è lo stato effettivo in base alla configurazione e alla presenza di almeno una zona di transizione a bassa emissione. |
mAutoDetectionEnabled |
Indica se il rilevamento automatico del fuso orario è attivato. |
mLocationEnabled |
Il pulsante di attivazione/disattivazione della posizione principale. |
mGeoDetectionEnabled |
L'interruttore dell'algoritmo: false indica l'algoritmo di telefonia e true indica l'algoritmo di localizzazione. |
Le informazioni della cronologia dei suggerimenti indicano quali suggerimenti sono stati forniti tramite le Impostazioni (manuali) e dagli algoritmi di telefonia e posizione.