Panoramica temporale

In questa pagina viene descritto come funziona il rilevamento di ora e fuso orario su Android. Ciò include il modo in cui Android rileva automaticamente fusi orari e orari, opzioni di configurazione per i produttori di dispositivi e informazioni sui test.

Panoramica di fusi orari e 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 corrente dell'epoca Unix
  • Il fuso orario attuale

L'ora dell'epoca Unix e il fuso orario corrente sono stati a livello di dispositivo, ovvero sono condivisi da tutti gli utenti di un dispositivo.

L'ora dell'epoca Unix attuale non è un valore fisso. Si aggiorna automaticamente per riflettere il passare del tempo. Oltre al normale passaggio del tempo, l'ora dell'epoca Unix attuale di un dispositivo viene regolata se risulta errata, ad esempio in seguito a un'interruzione dell'alimentazione del dispositivo.

Il fuso orario attuale determina l'aggiustamento da apportare per convertire l'ora dell'epoca Unix attuale in un'ora locale. Ad esempio, durante l'estate a Los Angeles, il dispositivo sottrae 7 ore dall'ora dell'epoca Unix attuale, mentre in inverno sottrae 8 ore.

Per supportare i calcoli 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, non è necessario regolare l'ora dell'epoca Unix attuale, ma in genere l'utente vuole visualizzare l'ora locale anziché quella della posizione precedente. La modifica del fuso orario attuale assicura che all'ora dell'epoca Unix venga applicato l'offset corretto 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: garantisce che il dispositivo abbia l'ora dell'epoca Unix attuale corretta.
  • Rilevamento automatico del fuso orario: verifica che il fuso orario attuale sia corretto.

Rilevamento automatico dell'ora

Questa sezione fornisce una panoramica del servizio time_detector che gestisce il rilevamento automatico del tempo, 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 del tempo. Consente di regolare l'attuale epoca Unix del dispositivo in base alle esigenze quando il rilevamento automatico dell'ora è abilitato.

Il servizio time_detector è sempre in uno di questi due stati: incerto o certo. Lo stato certo o incerto del servizio è determinato dai suggerimenti temporali che riceve da varie fonti.

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

Quando il valore di time_detector è incerto, non sostituisce l'ora attuale. Lo stato incerto di solito indica che il servizio time_detector non ha ricevuto suggerimenti sull'ora. Inoltre, il servizio time_detector non è chiaro se i suggerimenti ricevuti sono considerati troppo vecchi per essere utilizzati. L'età dei suggerimenti viene considerata perché le modifiche che utilizzano i suggerimenti temporali della precedente epoca Unix si basano sull'orologio in tempo reale trascorso sul dispositivo, che si presume sia impreciso nel lungo periodo.

Per stabilire automaticamente l'ora dell'epoca Unix attuale, un dispositivo ha varie origini che può utilizzare. In questo documento vengono chiamate 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 conserva un record del suggerimento più recente apportato da ogni origine. Vengono aggiunti nuovi suggerimenti a time_detector se per un'origine sono disponibili informazioni più recenti sull'epoca di Unix. Il servizio time_detector rivaluta i suggerimenti nuovi ed esistenti e aggiorna lo stato del dispositivo alla ricezione dei suggerimenti.

Anche se l'ora UTC viene concordata a livello internazionale, esistono vari motivi per cui stabilire l'ora dell'epoca Unix attuale non è sempre facile per un dispositivo Android:

  • L'ora Unix epoch è un sistema di cronometraggio leggermente diverso rispetto all'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 momenti o in determinate circostanze. Ad esempio, se l'origine richiede connettività di rete, potrebbe essere disponibile solo quando il dispositivo è connesso a internet.
  • Le origini potrebbero essere imprecise, imprecise o potrebbero presentare errori. Ad esempio, se una torre cellulare di telefonia non monitora correttamente il "tempo universale ", l'origine della telefonia potrebbe fornire suggerimenti orari imprecisi.
  • Potrebbero essere introdotte inesattezze durante il recupero dell'ora dell'epoca Unix. Ad esempio, un ritardo di rete, un buffering o una pianificazione dei processi potrebbero far sì che il tempo dell'epoca di Unix non sia preciso.
  • L'orologio di riferimento utilizzato per regolare un suggerimento per il tempo trascorso dopo la ricezione del suggerimento potrebbe non essere preciso.

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

  • Rete: utilizza i server di orario NTP (Network Time Protocol).
  • Telefonia: utilizza gli indicatori di telefonia di identità di rete e fuso orario (NITZ).

Sia le origini della telefonia che quelle delle reti 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 provider di localizzazione GPS per ottenere un orario da una sorgente GNSS.
  • Esterna: origine generica che consente ai produttori di dispositivi di integrare la propria fonte di tempo di Unix.

Impostazioni temporali

Gli utenti possono attivare il rilevamento automatico dell'ora in Sistema > Data e ora nell'app Impostazioni AOSP.

Rilevamento automatico dell'ora nelle Impostazioni

Figura 1. Rilevamento automatico dell'ora nelle Impostazioni.

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

*Su Android 11 e versioni precedenti, l'impostazione è etichettata Utilizza l'ora fornita dalla rete.

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

Un pulsante di attivazione/disattivazione.

Se è attivato, il dispositivo è responsabile del rilevamento dell'ora dell'epoca Unix attuale. Quando è impostata su Off, agli utenti vengono forniti i controlli per impostare manualmente l'ora del dispositivo.

Quando l'utente inserisce l'ora manualmente, inserisce l'ora locale, non l'ora dell'epoca in Unix. L'ora dell'epoca Unix attuale viene calcolata utilizzando il fuso orario attuale per ricavare il tempo dell'epoca Unix.

Configurazione

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

Priorità dell'origine

A partire da Android 12, i produttori di dispositivi possono modificare il core/res/res/values/config.xmlfile di configurazione 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 è impostata come hardcoded su ["telephony", "network"], il che significa che i suggerimenti relativi alla 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 sono configurati come origini da utilizzare per impostazione predefinita. I suggerimenti di tempo per la rete hanno la priorità rispetto ai suggerimenti per i tempi di telefonia. I produttori di dispositivi possono modificare l'ordine delle origini per ripristinare il comportamento su Android 11 o versioni precedenti, in cui la telefonia ha una priorità maggiore.

Per impostazione predefinita, se il suggerimento valido con priorità più alta corrisponde all'ora dell'orologio di sistema attuale del dispositivo entro un paio di secondi, l'ora del dispositivo non verrà modificata. Questo evita di creare lavoro per le app installate che ascoltano l'intent ACTION_TIME_CHANGED.

I valori dell'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 processi a 32 bit, il framework imposta un limite di tempo superiore per impedire al dispositivo di utilizzare un suggerimento relativo all'ora che potrebbe attivare il problema di Y2038.

Android 12 ha introdotto un limite di tempo inferiore utilizzato per convalidare i suggerimenti di orario ricevuti dal servizio time_detector. Il valore del limite di tempo inferiore utilizzato per i suggerimenti automatici viene impostato a partire dal timestamp della build. Questo funziona in base al principio che non può esistere un periodo di tempo valido prima della creazione dell'immagine di sistema del dispositivo. Se un suggerimento di orario è precedente al limite di tempo inferiore, il servizio time_detector lo ignora perché non può essere valido se il timestamp di build è corretto.

Per i dispositivi con Android 11 o versioni precedenti, il servizio time_detector non convalida i suggerimenti relativi al tempo di epoca Unix in arrivo.

Tempi 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, utilizza:

adb shell cmd time_detector dump

Per visualizzare comandi aggiuntivi 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 influenzare il 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 del tempo, i tester devono essere a conoscenza delle origini utilizzate dal servizio 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 del servizio attuali 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 Conveniente
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 all'ora indica le occasioni in cui il servizio time_detector ha modificato l'ora dell'epoca Unix attuale del dispositivo.

Le informazioni sulla cronologia dei suggerimenti indicano quali suggerimenti sono stati fatti da 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 della 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 attuale del dispositivo in base alle necessità quando è abilitato il rilevamento automatico del fuso orario.

Quando il rilevamento automatico del fuso orario è abilitato, lo stato di time_zone_detector può essere incerto e certo.

Quando il servizio time_zone_detector è in un determinato stato, significa che il servizio time_zone_detector ha ricevuto informazioni efficaci sul fuso orario, il che può causare l'override del fuso orario attuale. Quando è incerta, significa che non ha ricevuto informazioni o che è poco attendibile, il che significa che non sostituirà il fuso orario attuale.

Gli 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:

  • Un determinato stato senza fusi orari viene inserito quando il dispositivo si trova in un luogo privo di fuso orario, ad esempio in acque internazionali o in un'area contestata. Questo stato è simile a uno stato incerto, ma indica che time_zone_detector non richiede 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 di confine. In questo stato, se il fuso orario attuale è uno dei fusi orari di cui time_zone_detector è certo, il fuso orario attuale viene lasciato invariato. In caso contrario, viene utilizzato uno dei fusi orari disponibili. Ciò conferisce a time_zone_detector un elemento di fidelizzazione se l'utente ha selezionato manualmente il proprio fuso orario in precedenza o quando il dispositivo si avvicina a un bordo.

Lo stato certo o incerto del servizio time_zone_detector è determinato dai suggerimenti relativi al fuso orario inviati da un algoritmo.

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

  • tipo = uncertain, zoneIds = []

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

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

    • L'algoritmo è certo, ma non esiste nessun ID zona associato alla posizione corrente.
  • tipo = certain, zoneIds = ["America/Denver", "America/Phoenix"]

    • L'algoritmo è certo che la risposta sia 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 relativo algoritmo. A seconda dell'algoritmo, i suggerimenti potrebbero contenere anche metadati che indicano il grado di certezza dell'algoritmo.

Il servizio time_zone_detector è stateful, il che significa che conserva un record del suggerimento più recente creato 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 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 diventa incerto sul fuso orario, time_zone_detector di solito non utilizza suggerimenti di un altro algoritmo. I suggerimenti associati ad algoritmi non in uso possono essere conservati in memoria 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 sul caso in cui vengono utilizzati più algoritmi per determinare il fuso orario, consulta la sezione Modalità di telefonia di riserva.

Modalità di riserva per telefonia

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

La modalità di riserva per la telefonia si applica ai dispositivi che supportano sia la telefonia che il rilevamento della posizione e in cui l'utente ha attivato l'opzione Usa la posizione per impostare il fuso orario in Impostazioni fuso orario. La modalità viene attivata automaticamente quando si riavvia un dispositivo e quando la modalità aereo è disattivata.

In Android 14 e versioni successive, la telefonia di riserva può essere attivata tramite le API di segnalazione dello stato del LTZP. In altre parole, se un LTZP segnala di non essere sicura e la sua capacità di rilevare la posizione o il fuso orario è ridotta dall'ambiente, viene attivata la modalità di riserva della 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 finché l'algoritmo di localizzazione non fornisce un determinato suggerimento. Dopo aver ricevuto un determinato suggerimento, la modalità di riserva di telefonia viene disattivata e vengono utilizzati esclusivamente i suggerimenti sulla posizione.

Per i dettagli sulla 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 seguente tabella descrive i controlli utente per il rilevamento del fuso orario nell'app Impostazioni AOSP.

*Su Android 11 e versioni precedenti, l'impostazione è etichettata come Usa il fuso orario fornito dalla rete

Posizione impostazioni AOSP Nome impostazioni AOSP Ambito Comportamento
Sistema > Data e ora Impostazione automatica del fuso orario* Tutti gli utenti

Un pulsante di attivazione/disattivazione.

Se impostato su On, il dispositivo è responsabile del rilevamento del fuso orario attuale. Quando è disattivata, agli utenti vengono forniti 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. Questa opzione viene visualizzata solo quando il rilevamento del fuso orario della posizione è supportato sul dispositivo.

Per le modifiche introdotte nella versione 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.

In generale consente o impedisce l'utilizzo della posizione del dispositivo. Il valore è rilevante se il rilevamento del fuso orario della 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

        • I segnali di telefonia vengono utilizzati per rilevare il fuso orario.

Più dispositivi degli utenti

Poiché diverse impostazioni interessate hanno come ambito l'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 ha come ambito l'utente corrente e non è limitata dai criteri relativi ai dispositivi, il che significa che gli utenti possono sempre modificare il relativo valore, anche se l'opzione Imposta automaticamente il fuso orario è disattivata o se altri controlli relativi a ora 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 l'algoritmo di località.

  • 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 attiva.
    • Il valore dell'impostazione SettingsProvider con ambito utente 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 possono disattivarla. Se l'opzione è disattivata, il dispositivo non rileverà automaticamente il fuso orario.

Comportamento durante il passaggio da e verso il rilevamento automatico

Quando l'utente passa da manuale a automatico per il rilevamento del fuso orario, time_zone_detector potrebbe già essere certo del fuso orario attuale. In questo caso, se l'utente attiva il rilevamento automatico, il fuso orario del dispositivo potrebbe essere modificato nello stesso momento per soddisfare l'opinione del servizio time_zone_detector.

Allo stesso modo, quando l'utente apporta una modifica alle impostazioni che comporta una modifica all'algoritmo attuale del servizio time_zone_detector, time_zone_detector potrebbe aver già ricevuto suggerimenti per il nuovo algoritmo, quindi l'ora del dispositivo potrebbe essere modificata in modo che corrisponda immediatamente all'opinione del servizio time_zone_detector.

Rilevamento del fuso orario per le telefonate

Il rilevamento del fuso orario relativo alle telefonate utilizza i segnali telefonici per determinare il fuso orario attuale. Per ulteriori informazioni, consulta 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. È una funzionalità facoltativa di rilevamento del fuso orario che consente ai dispositivi di usare 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 dei suggerimenti dell'algoritmo di posizione al servizio time_zone_detector. Per ulteriori informazioni, consulta la sezione Rilevamento del fuso orario in base alla posizione.

Considerazioni sull'adozione delle funzionalità

Questa sezione descrive aspetti della funzionalità di rilevamento del fuso orario della posizione per aiutare un produttore di dispositivi a determinare se adottare la funzionalità su un dispositivo.

Confrontare servizi di telefonia e rilevamento della posizione

La tabella seguente offre un confronto dei vantaggi e degli svantaggi dell'utilizzo dei segnali di posizione anziché 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 solitamente varia in base a:
  • Precisione e regolarità del fornitore di servizi di localizzazione.
  • La qualità dei dati della mappa del fuso orario.
Aggiornabilità Il rilevamento della telefonia si basa sui file contenuti nel modulo Time Zone Data aggiornabile (com.android.tzdata APEX). Dipende dalla configurazione delle funzionalità o dai componenti del plug-in.

L'aggiornabilità in genere dipende dal fatto che il dispositivo utilizzi i dati delle mappe del fuso orario del server o del client.

Nota: i dati delle mappe dei fusi orari non sono contenuti nel modulo Dati del fuso orario utilizzato per aggiornare la copia di Android di TZDB e altre informazioni sul fuso orario.

I produttori dei dispositivi devono inoltre considerare la coerenza delle versioni tra le regole relative ai fusi orari e i dati delle mappe dei fusi orari.
Consumo energetico Assente o basso consumo energetico Dipende dalle impostazioni di geolocalizzazione dell'utente, dai plug-in utilizzati e, in genere, da 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 posizione disponibili.
Privacy degli utenti

Il fuso orario preferito di un utente è in genere determinato dalla sua posizione geografica. La località include dati sensibili. Gli utenti potrebbero nutrire dubbi sul fatto che la propria posizione venga condivisa nell'ambito del rilevamento del fuso orario. Non correlate al rilevamento del fuso orario, tutte le app in esecuzione su un dispositivo possono leggere il fuso orario attuale del dispositivo senza richiedere un'autorizzazione Android e le app possono dedurre un'idea imprecisa della posizione del dispositivo da queste informazioni.

Più precisamente, il rilevamento del fuso orario può utilizzare mezzi passivi o attivi:

  • Passiva: qualcosa nell'ambiente del dispositivo indica al dispositivo il fuso orario da utilizzare nell'ambiente.
  • Attivo: 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. Consulta la discussione di seguito per maggiori dettagli sulla privacy dell'utente e sul consenso.

Il rilevamento passivo, come quello dell'algoritmo di telefonia, non ha ulteriori implicazioni sulla privacy degli utenti.

Il rilevamento attivo, ad esempio con l'algoritmo di localizzazione, comporta la determinazione della posizione del dispositivo, su cui 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 la possibilità di disattivare singolarmente gli algoritmi che si prevede saranno attivi. Inoltre, il codice della piattaforma AOSP non riguarda direttamente la posizione: il rilevamento della posizione e la mappatura della posizione agli ID dei fusi orari vengono lasciati per collegare i componenti configurati dai produttori dei dispositivi.

Per ulteriori dettagli sulle funzionalità di privacy dell'utente, consulta Rilevamento del fuso orario in base alla 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 informazioni dettagliate sulla configurazione degli algoritmi di rilevamento del fuso orario e della telefonia, consulta Rilevamento del fuso orario della telefonia e Rilevamento del fuso orario in base alla posizione.

La configurazione AOSP di base è su 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 riserva per la telefonia. Questa opzione è 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 mediante valori che vengono generalmente estratti da un server remoto tramite codice proprietario (non AOSP). Quando utilizzi i valori device_config per i test, soprattutto durante i test manuali a lunga esecuzione, il dispositivo potrebbe sincronizzare i flag, il che comporta la reimpostazione dei flag e la cancellazione dei valori impostati per i test.

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, usa $ 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 comandi aggiuntivi 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 essere a conoscenza dell'algoritmo utilizzato da time_zone_detector. Per comprendere e influenzare l'algoritmo attuale di time_zone_detector, utilizza una delle seguenti opzioni:

  • Controlla visivamente l'interfaccia utente delle Impostazioni. Per ulteriori informazioni, consulta la sezione Impostazioni del fuso orario.
  • Dalla 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 le impostazioni del dispositivo, utilizza altri comandi di 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 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 Conveniente
mUserConfigAllowed Indica se all'utente viene impedito il controllo delle impostazioni di data e ora da parte del controller dei criteri dei dispositivi.
mTelephonyDetectionSupported Se il dispositivo ha il rilevamento del fuso orario relativo alle telefonate.
mGeoDetectionSupported Se il dispositivo supporta il rilevamento del fuso orario in base alla posizione. Questo è lo stato effettivo basato sulla configurazione e sulla presenza di almeno un LTZP.
mAutoDetectionEnabled Se il rilevamento automatico del fuso orario è abilitato.
mLocationEnabled Pulsante di attivazione/disattivazione della posizione principale.
mGeoDetectionEnabled Cambiamento dell'algoritmo: false indica l'algoritmo di telefonia, mentre true indica l'algoritmo di geolocalizzazione.

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