Panoramica temporale

Questa pagina descrive il funzionamento del rilevamento dell'ora e del fuso orario su Android. Sono incluse informazioni su come Android rileva automaticamente l'ora e i fusi orari, le opzioni di configurazione per i produttori di dispositivi e le informazioni sui test.

Panoramica di fusi orari e orari

Per determinare l'ora locale di un utente da visualizzare in posizioni come la barra dello stato, Android tiene traccia di due stati correlati, ma indipendenti:

  • L'ora corrente dell'epoca Unix
  • Il fuso orario attuale

L'attuale epoca Unix e il fuso orario corrente sono stati a livello di dispositivo, vale a dire che sono condivise da tutti gli utenti di un dispositivo.

L'ora dell'epoca Unix attuale non è un valore fisso. Si aggiorna automaticamente riflettono il passare del tempo. Oltre al normale scorrere del tempo, l'ora di epoche Unix corrente di un dispositivo viene regolata se risulta errata, ad esempio dopo che il dispositivo perde l'alimentazione.

Il fuso orario corrente determina la correzione da apportare per convertire l'ora Unix epoch corrente in un'ora locale. Ad esempio, durante l'estate a Los Angeles, il dispositivo sottrae 7 ore dall'ora di epoch Unix corrente e in inverno sottrae 8 ore.

Per supportare il calcolo dell'ora locale, tutti i dispositivi Android dispongono di un database di tutte le regole dei fusi orari globali. Per ulteriori informazioni sulle regole relative al fuso orario, consulta Regole del fuso orario.

Quando un utente si reca in una nuova località che utilizza un fuso orario diverso, l'ora di epoche Unix corrente non deve essere regolata, ma in genere l'utente vuole vedere l'ora locale anziché l'ora della località precedente. Modifica il fuso orario attuale assicura che a quella corrente venga applicato l'offset corretto Ora Unix 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 tramite i seguenti meccanismi.

  • Rilevamento automatico dell'ora: garantisce che sul dispositivo sia impostato il valore corretto per il tempo epoch di Unix corrente.
  • Rilevamento automatico del fuso orario: garantisce che sul dispositivo sia impostato il fuso orario corrente corretto.

Rilevamento automatico del tempo

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

La time_detector presente sui dispositivi con Android 10 o versioni successive, gestisce il tempo automatico il rilevamento automatico. Modifica l'ora di epoche Unix corrente del dispositivo in base alle esigenze quando è attivo il rilevamento automatico dell'ora.

Il servizio time_detector è sempre in uno dei due stati seguenti: incerto o certo. Lo stato certo o incerto di un servizio viene determinato da suggerimenti di orario che riceve da varie fonti.

Quando il servizio time_detector è certo, ovvero ha ricevuto un con informazioni temporali dell'epoca Unix, sostituisce l'epoca Unix corrente ora se il suggerimento di orario è diverso dall'ora dell'epoca Unix corrente.

Quando il valore di time_detector è incerto, non sostituisce l'ora attuale. La stato incerto di solito significa che il servizio time_detector non ha ricevuto tempo suggerimenti. Anche il servizio time_detector diventa incerto se i suggerimenti che ha ricevuto sono considerati troppo vecchi per essere utilizzati. L'età dei suggerimenti è perché le modifiche che utilizzano i suggerimenti di tempo della precedente epoca Unix si basano sull'orologio in tempo reale trascorso sul dispositivo, che si presume non sia preciso per lunghi periodi.

Per stabilire automaticamente l'ora dell'epoca Unix corrente, un dispositivo ha varie le fonti che può utilizzare. In questo documento vengono chiamate origini. La Il servizio time_detector considera le sequenze di suggerimenti come distinte in base a la loro origine.

Il servizio time_detector è stateful, il che significa che tiene traccia del suggerimento più recente fornito da ogni origine. Vengono fatti nuovi suggerimenti a time_detector se per un'origine sono disponibili informazioni su epoche Unix più recenti. Il servizio time_detector rivaluta i suggerimenti nuovi ed esistenti e aggiorna lo stato del dispositivo quando vengono ricevuti.

Sebbene l'ora UTC sia concordata a livello internazionale, esistono vari motivi per cui stabilire l'ora di epoche Unix corrente non è sempre semplice per un dispositivo Android:

  • L'ora Unix è un sistema di misurazione del tempo leggermente diverso dall'ora UTC. La conversione tra i due richiede la conoscenza di quando si verificano i secondi intercalari e di come vengono gestiti dalle origini.
  • Le origini potrebbero essere disponibili solo in determinati orari o sotto determinati 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 contenere errori. Ad esempio, se una torre di telefonia cellulare non monitora correttamente il "tempo universale", l'origine telefonica potrebbe fornire suggerimenti sull'ora non accurati.
  • Potrebbero essere state introdotte imprecisioni durante l'ottenimento del tempo dell'epoca di Unix. Ad esempio, un ritardo di rete, un buffering o una pianificazione dei processi che l'epoca di Unix non sia precisa.
  • L'orologio di riferimento utilizzato per regolare un suggerimento in base al tempo trascorso dall'invio del suggerimento potrebbe non essere preciso.

Esistono due origini principali di rilevamento dell'ora configurate per l'utilizzo per impostazione predefinita in AOSP:

  • Rete: utilizza la rete server di riferimento orario NTP (Time Protocol).
  • Telefonia: utilizza gli indicatori di telefonia per l'identità di rete e il fuso orario (NITZ).

Sia le origini di telefonia 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 GPS. fornitore di servizi di localizzazione per ottenere un orario da un'origine GNSS.
  • Esterni: Generico che consente ai produttori di integrare la propria fonte di dell'epoca Unix.

Impostazioni temporali

Gli utenti possono attivare il rilevamento automatico del tempo in Sistema > Data e ora nel App Impostazioni AOSP.

Rilevamento automatico dell'ora nelle Impostazioni

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, l'impostazione è denominata Usa ora fornita dalla rete

Posizione impostazioni AOSP Nome impostazioni AOSP Ambito Comportamento
Sistema > Data e ora Impostare l'ora automaticamente* Tutti gli utenti

Un pulsante di attivazione/disattivazione.

Se l'opzione è impostata su On, il dispositivo è responsabile del rilevamento dell'ora di epoche Unix corrente. Se l'opzione è off, gli utenti hanno a disposizione i controlli per impostare manualmente l'ora del dispositivo.

Quando l'utente inserisce l'ora manualmente, inserisce la propria ora locale, non l'ora dell'epoca Unix. L'ora di epocha Unix corrente viene calcolata utilizzando il fuso orario corrente per ricavare un'ora di epocha Unix.

Configurazione

I produttori di dispositivi possono configurare il servizio time_detector in vari modi, ad esempio quali origini utilizzare e come assegnare la priorità agli indicatori.

Assegnazione della priorità alle origini

A partire da Android 12, i produttori di dispositivi possono modificare core/res/res/values/config.xmlper specificare a che ora da includere nel rilevamento automatico dell'ora e la priorità in cui time_detector prende in considerazione queste origini.

Per i dispositivi con Android 11 o versioni precedenti, la priorità dell'origine è hardcoded 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 di rete e telefonia vengono configurate come origini da usare per impostazione predefinita. I suggerimenti relativi all'ora della rete hanno la priorità rispetto ai suggerimenti relativi all'ora telefonica. I produttori di dispositivi possono cambiare l'ordine delle origini per ripristinare il comportamento su Android 11 o versioni precedenti; in cui la telefonia ha una priorità più alta.

Per impostazione predefinita, se il suggerimento valido con priorità più elevata corrisponde a quello del dispositivo l'ora attuale dell'orologio di sistema entro un paio di secondi, l'ora del dispositivo non modifiche. Questo serve a evitare di creare lavoro per le app installate che ascoltano l'intentACTION_TIME_CHANGED.

I valori di origine consentiti sono:

Limiti di tempo consentiti

Android 14 introduce un limite di tempo massimo per i suggerimenti di tempo ricevuti dal servizio time_detector. Se il dispositivo supporta i processi a 32 bit, il framework imposta un limite di tempo massimo 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 che viene utilizzato per verificare i suggerimenti relativi all'ora ricevuti dal servizio time_detector. Il valore inferiore del vincolo temporale utilizzato per i suggerimenti automatici viene impostato dal timestamp della compilazione. Questa procedura si basa sul principio che un orario valido non può essere precedente all'orario è stata creata l'immagine di sistema. Se un suggerimento di orario precede il limite di tempo inferiore, il servizio time_detector lo ignora perché non può essere valido se il timestamp della compilazione è corretto.

Per i dispositivi con Android 11 o versioni precedenti, il servizio time_detector non convalidare i suggerimenti temporali in arrivo per l'epoca Unix.

Tempo di debug e test

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 time_detector servizio, usa:

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 utilizzato per influire sul comportamento di time_detector per i test o in produzione. Per maggiori dettagli, vedi Configurare un dispositivo mediante il servizio device_config.

Per convalidare il rilevamento automatico del tempo, i tester devono essere a conoscenza delle origini Servizio in uso: time_detector. Di seguito è riportato un esempio dell'output del comando adb shell cmd time_detector dump, con le informazioni sull'origine e sullo stato attuale 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 è abilitato.
mEnvironment.autoTimeLowerBound() Il limite inferiore attuale utilizzato per convalidare i suggerimenti di tempo.
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 ha modificato l'ora dell'epoca Unix corrente del dispositivo.

Le informazioni sulla cronologia dei suggerimenti indicano quali suggerimenti sono stati fatti ciascuna 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 per telefonia e 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 attuale del dispositivo in base alle necessità sia abilitato il rilevamento automatico del fuso orario.

Quando il rilevamento automatico del fuso orario è attivo, time_zone_detector può essere in uno di due stati: incerto e certo.

Quando il servizio time_zone_detector è in un determinato stato, significa che Il servizio time_zone_detector ha ricevuto informazioni sul fuso orario, che potrebbe causare la sostituzione del fuso orario attuale. Quando è incerta, significa che non ha ricevuto informazioni o solo informazioni poco attendibili, il che significa che non sostituisce il fuso orario corrente.

Alcuni stati del servizio time_zone_detector possono includere quelli in cui time_zone_detector non ha informazioni sul fuso orario da utilizzare o in cui ha più fusi orari tra cui scegliere. Gli stati sono i seguenti:

  • Viene inserito uno stato specifico con zero fusi orari quando il dispositivo si trova in un luogo senza fuso orario, ad esempio in acque internazionali o in un'area in discussione. Questo stato è simile a uno stato incerto, ma indica che time_zone_detector non deve effettuare ulteriori azioni per provare a determinare il fuso orario.
  • Viene inserito uno stato con più fusi orari, dove si trovano o le condizioni di confine. In questo stato, se il fuso orario corrente è uno dei fusi orari di cui time_zone_detector è certo, il fuso orario corrente viene lasciato invariato. In caso contrario, viene utilizzato uno dei fusi orari disponibili. Questo conferisce a time_zone_detector un elemento di stickiness se l'utente ha selezionato manualmente il fuso orario in precedenza o come dispositivo si avvicina a un bordo.

Lo stato certo o incerto del servizio time_zone_detector è determinato dai suggerimenti per i fusi orari inviati da un algoritmo.

In generale, i suggerimenti sono di due tipi che corrispondono molto probabilmente agli stati possibili di time_zone_detector: determinato e incerto. Di seguito sono riportate le esempi di tipi di suggerimenti:

  • tipo = uncertain, zoneIds = []

    • L'algoritmo non riconosce il fuso orario.
  • type = certain, zoneIds = ["Europe/London"]

    • L'algoritmo è certo che la zona sia Europa/Londra.
  • type = certain, zoneIds = []`

    • L'algoritmo è certo, ma non ci sono ID zona associati con la posizione corrente.
  • type = certain, zoneIds = ["America/Denver", "America/Phoenix"]

    • L'algoritmo è certo che la risposta è una delle due zone, ma non può scegliere tra "America/Denver" e "America/Phoenix".

Il servizio time_zone_detector tratta le sequenze di suggerimenti come distinte in base al loro algoritmo. A seconda dell'algoritmo, i suggerimenti potrebbero anche contenere metadati che indicano il grado di certezza dell'algoritmo.

Il servizio time_zone_detector è stateful, il che significa che conserva un record dei suggerimenti più recenti fatti 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.

Android supporta due algoritmi per il rilevamento del fuso orario:

  • Telefonia
  • Posizione

In genere il servizio time_zone_detector utilizza un singolo algoritmo per determinare il fuso orario. Quando l'algoritmo di geolocalizzazione è 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 solitamente non utilizza i suggerimenti di un altro algoritmo. I suggerimenti associati agli 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 riserva per la telefonia.

Modalità di riserva per la telefonia

Sui dispositivi con Android 13 e versioni successive, la Il servizio time_zone_detector supporta la modalità telefonia di riserva. Questa modalità consente ad Android di utilizzare temporaneamente i suggerimenti di rilevamento della telefonia nelle situazioni in cui il rilevamento della posizione non è in grado di rilevare il fuso orario o in cui il rilevamento della posizione richiede più tempo rispetto al rilevamento della telefonia.

La modalità di riserva per la telefonia si applica ai dispositivi su cui sia impostata la telefonia e la il rilevamento è supportato e se l'utente ha attivato l'opzione Usa posizione per impostare fuso orario in 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 per la telefonia può essere attivato tramite le API di generazione di report sullo stato del LTZP, ovvero se un LTZP segnala che è incerto e la sua capacità di rilevare la posizione o il fuso orario è ridotta dal suo ambiente, viene attivata la modalità di fallback per la telefonia.

In modalità di riserva per la telefonia, il servizio time_zone_detector utilizza i suggerimenti di telefonia come se il rilevamento della posizione fosse disattivato fino a quando l'algoritmo di geolocalizzazione non fa un determinato suggerimento. Dopo aver ricevuto un determinato suggerimento, la modalità di riserva è disattivata e vengono utilizzati esclusivamente i suggerimenti sulla posizione.

Per i dettagli di configurazione della modalità di riserva per la telefonia, consulta 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.

Rilevamento automatico del fuso orario nelle Impostazioni

Figura 2. Rilevamento automatico del fuso orario nelle Impostazioni.

La tabella seguente descrive i controlli utente per il rilevamento del fuso orario nell'app Impostazioni AOSP.

*Su Android 11 e versioni precedenti, l'etichetta è etichettata Usare il fuso orario fornito dalla rete

Posizione impostazioni AOSP Nome impostazioni AOSP Ambito Comportamento
Sistema > Data e ora Imposta automaticamente il fuso orario* Tutti gli utenti

Un pulsante di attivazione/disattivazione.

Se l'opzione è On, il dispositivo è responsabile del rilevamento del fuso orario corrente. Se l'opzione è off, gli utenti hanno a disposizione i controlli per impostare manualmente il fuso orario del dispositivo.

Sistema > Data e ora Usa la posizione per impostare il fuso orario Utente corrente

Un pulsante di attivazione/disattivazione.

Disponibile da Android 12. Il pulsante di attivazione/disattivazione è visualizzato solo quando il rilevamento del fuso orario in base alla posizione è supportato sul dispositivo.

Per le modifiche introdotte in Android 14, consulta 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

    • [Località] 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

        • Gli indicatori di telefonia vengono utilizzati per rilevare il fuso orario.

Dispositivi con più utenti

Poiché molte delle 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 riguarda l'utente corrente e non è limitata dai criteri relativi ai dispositivi, il che significa che gli utenti possono sempre anche quando l'opzione Imposta il fuso orario automaticamente è disattivata o se i controlli di orario o fuso orario sono limitati dal controller dei criteri dei dispositivi.

 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 la posizione dell'algoritmo.

  • 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 basata sugli utenti location_time_zone_detection_enabled 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 disattivare l'opzione. Se l'opzione è disattivata, il dispositivo non rileverà automaticamente il fuso orario.

Comportamento quando si passa dal rilevamento automatico e viceversa

Quando l'utente passa dal rilevamento del fuso orario manuale ad automatico,time_zone_detector potrebbe già essere certo del fuso orario corrente. Se sì, Se l'utente attiva il rilevamento automatico, il fuso orario del dispositivo potrebbe cambiare per soddisfare l'opinione del servizio time_zone_detector.

Analogamente, quando l'utente apporta una modifica nelle Impostazioni che comporta una modifica dell'algoritmo corrente del servizio time_zone_detector, time_zone_detector potrebbe già aver ricevuto suggerimenti per il nuovo algoritmo, pertanto l'ora del dispositivo potrebbe essere modificata in modo da corrispondere immediatamente all'opinione del servizio time_zone_detector.

Rilevamento del fuso orario per la telefonia

Il rilevamento del fuso orario relativo alla telefonia utilizza i segnali telefonici per determinare la durata attuale fuso orario. Per ulteriori informazioni, vedi Fuso orario della telefonia Rilevamento.

Rilevamento del fuso orario in base alla posizione

Il rilevamento del fuso orario in base alla posizione è disponibile su Android 12 o superiore. Si tratta di una funzionalità facoltativa di rilevamento automatico del fuso orario che consente ai dispositivi di utilizzare la propria posizione per determinare il fuso orario corrente.

Il servizio location_time_zone_manager, introdotto in Android 12, funziona server di sistema e contiene il codice responsabile dell'invio della posizione di suggerimenti dell'algoritmo al servizio time_zone_detector. Per ulteriori informazioni, consulta Rilevamento del fuso orario della posizione.

Considerazioni sull'adozione delle funzionalità

Questa sezione descrive aspetti della funzionalità di rilevamento del fuso orario per Per aiutare il produttore del dispositivo a decidere se adottare la funzionalità su un dispositivo.

Confrontare la telefonia e il rilevamento della posizione

La tabella seguente mette a confronto i vantaggi e gli svantaggi di utilizzo della posizione anziché dei segnali di telefonia per il rilevamento del fuso orario.

Rilevamento della telefonia Rilevamento della posizione
Correttezza Varia in base al paese.

Dipende dal Centro clienti, dalla correttezza e dalla disponibilità di NITZ.
Dipende dalla configurazione delle funzionalità o dai componenti del plug-in.

La correttezza varia in base a:
  • Precisione e regolarità del fornitore di servizi di geolocalizzazione.
  • La qualità dei dati della mappa del fuso orario.
Aggiornabilità Il rilevamento della telefonia si basa sui file contenuti nell'intervallo Time aggiornabile Modulo Zone Data (com.android.tzdata APEX). Dipende dalla configurazione della funzionalità o dai componenti del plug-in.

L'aggiornabilità in genere dipende dal fatto che il dispositivo utilizzi un server o un client i dati delle mappe dei fusi orari.

Nota: 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 inoltre considerare la coerenza della versione tra le regole dei fusi orari e i dati della mappa dei fusi orari.
Utilizzo dell'alimentazione Assente o basso consumo energetico Dipende dalle impostazioni di geolocalizzazione dell'utente, dai plug-in utilizzati e in genere quali altre app richiedono la posizione.
Disponibilità Solo dispositivi di telefonia. In genere richiede una SIM funzionante. Il rilevamento della posizione dipende dai fornitori di servizi di geolocalizzazione 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 Conoscenza della condivisione della propria posizione 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 possono dedurre un'idea imprecisa della posizione del dispositivo da queste informazioni.

Nello specifico, il rilevamento del fuso orario può funzionare in modalità passiva o attiva significa:

  • Passivo: un elemento nell'ambiente del dispositivo indica al dispositivo il fuso orario da utilizzare in quell'ambiente.
  • Attivo: il dispositivo deve calcolare il fuso orario per se stesso e in base alle esigenze impostazioni della privacy e il suo consenso, ottiene il la posizione del dispositivo. Può quindi condividere la sua posizione con i servizi di machine learning. Consulta la discussione di seguito per maggiori dettagli sulla privacy dell'utente e sul consenso.

Il rilevamento passivo, come ad esempio con l'algoritmo di telefonia, non ha ulteriori e implicazioni per la privacy degli utenti.

Il rilevamento attivo, ad esempio con l'algoritmo di geolocalizzazione, prevede 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 dell'utente per il rilevamento del fuso orario offre all'utente di disattivare singolarmente gli algoritmi che dovrebbero essere attivi. Inoltre, il codice della piattaforma AOSP non gestisce direttamente la posizione stessa: il rilevamento della posizione e la mappatura della posizione agli ID fuso orario sono lasciati ai componenti plug-in configurati dai produttori di dispositivi.

Per ulteriori dettagli sulle funzionalità per la privacy dell'utente, consulta Fuso orario posizione Rilevamento.

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 gli algoritmi di rilevamento del fuso orario e della telefonia, consulta Rilevamento del fuso orario relativo alla telefonia e 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_supportTelephonyTimeZoneFallback true Quando true, time_zone_detector utilizza la telefonia la modalità di riserva. 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 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.

Test e debug 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 un comportamento modificabile utilizzando valori che in genere vengono estratti da un server remoto tramite 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 time_zone_detector servizio, usa:

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 da utilizzare 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 viene utilizzato da time_zone_detector. Per comprendere e influenzare l'algoritmo corrente del time_zone_detector, utilizza una delle seguenti opzioni:

  • Controlla visivamente 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, usa adb shell cmd time_zone_detector dump
    • Per modificare l'impostazione del dispositivo, utilizza altri comandi time_zone_detector. Per ulteriori informazioni, usa adb shell cmd time_zone_detector help.

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 correnti 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 all'utente viene impedito di controllare le impostazioni di data e ora. Controller dei criteri dei dispositivi.
mTelephonyDetectionSupported Indica se il dispositivo dispone del rilevamento del fuso orario per la telefonia.
mGeoDetectionSupported Indica se il dispositivo supporta il rilevamento del fuso orario in base alla posizione. Si tratta dello stato effettivo in base alla configurazione e alla presenza di almeno un LTZP.
mAutoDetectionEnabled Indica se il rilevamento automatico del fuso orario è attivo.
mLocationEnabled Il pulsante di attivazione/disattivazione della posizione principale.
mGeoDetectionEnabled L'opzione di impostazione dell'algoritmo: false indica l'algoritmo di telefonia e true indica l'algoritmo di geolocalizzazione.

Le informazioni sulla cronologia dei suggerimenti indicano quali suggerimenti sono stati forniti. tramite le Impostazioni (manuale) e tramite gli algoritmi di telefonia e di geolocalizzazione.