時間總覽

本頁面說明 Android 的時間與時區偵測功能的運作方式。包括 Android 如何自動偵測時間與時區、裝置製造商的設定選項,以及測試資訊。

時間與時區總覽

為確定使用者在狀態列等位置顯示的當地時間,Android 會追蹤兩個相關但各自獨立的狀態:

  • 目前的 Unix Epoch 時間
  • 目前時區

目前的 Unix Epoch 紀元時間和目前時區為裝置層級狀態,代表裝置的所有使用者都會共用。

目前的 Unix 紀元時間不是固定值。系統會自動更新以反映時間的段落。除了正常的時間段之外,如果裝置目前的 Unix 紀元時間有誤 (例如裝置沒電),則系統會調整裝置目前的 Unix 紀元時間。

目前的時區會決定要進行調整,將目前的 Unix 紀元時間轉換為當地時間。舉例來說,在洛杉磯的夏天,裝置會從目前的 Unix 紀元時間減去 7 小時,而進行冬季時則減去 8 小時。

為了支援這些當地時間計算,所有 Android 裝置都有包含所有全球時區規則的資料庫。如要進一步瞭解時區規則,請參閱時區規則

使用者前往不同時區的新地點時,不需調整目前的 Unix 紀元時間,但使用者通常會希望查看當地時間,而非先前位置的時間。變更目前的時區,可確保系統將正確的偏移量套用至目前的 Unix 紀元時間,以便顯示新位置的正確當地時間。

Android 開放原始碼計畫可讓使用者透過下列機制獨立控制是否要自動為其設定時間和時區。

  • 自動偵測時間:確保裝置目前的 Unix 紀元時間正確無誤。
  • 自動偵測時區:確保裝置目前採用正確的目前時區。

自動偵測時間

本節概略說明 time_detector 服務,用於管理自動偵測時間、使用者控制項、設定選項和測試詳細資料。

time_Detector 服務

在搭載 Android 10 以上版本的裝置上,time_detector 服務可管理自動偵測時間。啟用自動偵測時間功能後,系統會視需要調整裝置目前的 Unix Epoch 時間。

time_detector 服務一律為以下兩種狀態之一:不確定確定。服務的確定或不確定狀態取決於服務從各種來源收到的時間建議

如果 time_detector 服務確定,表示收到了 Unix Epoch 紀元時間資訊的建議,如果時間建議與目前的 Unix 紀元時間不同,就會覆寫目前的 Unix 紀元時間。

如果 time_detector 不確定,不會覆寫目前時間。不確定的狀態通常表示 time_detector 服務未收到時間建議。此外,如果 time_detector 服務收到的建議過於老舊,無法確定。考量到建議存在的時間,是因為使用舊 Unix 紀元時間建議提供的調整項,是依據裝置上的即時時鐘,而系統會假設該預測長時間不準確。

為了自動建立目前的 Unix 紀元時間,裝置有各種可用的來源。這在本文件中稱為「來源」time_detector 服務會根據建議來源,將建議序列視為不同的用途。

time_detector 服務有狀態,這表示會記錄每個來源的最新建議。如果來源有較新的 Unix Epoch 紀元時間資訊,就會對 time_detector 提出新建議。time_detector 服務會重新評估新的和現有的建議,並在收到建議時更新裝置狀態。

雖然世界標準時間是國際共識,但基於各種原因,Android 裝置不一定會直接建立目前的 Unix 紀元時間:

  • Unix Epoch 紀元時間是與世界標準時間相差甚遠的計時系統。如要在兩者之間轉換,就必須瞭解閏秒的發生時間,以及來源處理間隔的方式。
  • 來源可能只在特定時間或特定情況下取得。舉例來說,如果來源需要網路連線,或許只能在裝置連上網際網路時使用。
  • 來源可能不正確、不精確,或是包含錯誤。舉例來說,如果電話行動通信基地台無法正確追蹤「全球時間」,電話來源可能會提供不準確的時間建議。
  • 取得 Unix 紀元時間時,資料可能會出現不正確的情形。 例如,網路延遲、緩衝作業或程序排程可能會導致 Unix Epoch 紀元時間不準確。
  • 由於收到的建議可能不準確,因此這個參考時鐘用來調整經過時間的建議。

在 Android 開放原始碼計畫中,有兩種主要時間偵測來源設為預設使用:

  • 網路使用網路時間通訊協定 (NTP) 時間伺服器。
  • 電話:使用網路身分和時區 (NITZ) 電話信號。

電話和網路來源都需要連線至外部網路,而這類網路並非隨時可用。

從 Android 12 開始,Android 也支援下列非預設使用的來源:

  • GNSS使用 GPS 位置提供者,從 GNSS 來源取得時間。
  • 外部可讓裝置製造商整合自有 Unix Epoch 紀元時間來源的一般來源。

時間設定

使用者可以在 Android 開放原始碼計畫設定應用程式中,依序前往「系統」>「日期和時間」啟用自動偵測時間功能。

設定自動偵測時間功能

圖 1 您可以在「設定」中自動偵測時間。

下表列出 Android 開放原始碼計畫「設定」應用程式中的時間偵測使用者控制項。

*在 Android 11 以下版本中,這項設定會標示為「使用網路提供的時間」

Android 開放原始碼計畫設定位置 Android 開放原始碼計畫設定名稱 範圍 行為
系統 > 日期和時間 自動設定時間* 所有使用者

切換鈕。

如果開啟,裝置會負責偵測目前的 Unix 紀元時間。如果關閉,系統會為使用者提供可手動設定裝置時間的控制項。

使用者手動輸入時間時,請輸入當地時間,而不是 Unix Epoch 紀元時間。目前的 Unix 紀元時間是以目前的時區導出 Unix 紀元時間計算得出。

設定

裝置製造商可以透過各種方式設定 time_detector 服務,例如要使用的來源以及如何排定信號的優先順序。

來源優先順序

自 Android 12 起,裝置製造商可變更 core/res/res/values/config.xml 設定檔,指定自動偵測時間來源要納入哪些時間來源,以及 time_detector 在何種優先順序中考量這些來源。

如果裝置搭載 Android 11 以下版本,來源優先順序會硬式編碼為 ["telephony", "network"]。也就是說,電話建議的優先順序會高於網路建議。

預設的 Android 開放原始碼計畫設定如下:

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

在 Android 12 中,網路和電話建議功能會預設為要使用的來源。網路時間建議的優先順序高於通話時間建議。裝置製造商可以變更來源順序,還原為 Android 11 以下版本的行為,其中電話的優先順序會較高。

根據預設,如果優先順序最高的有效建議與裝置目前的系統時鐘時間相符至幾秒內,則裝置時間「不會」變更。這是為了避免為監聽 ACTION_TIME_CHANGED 意圖的已安裝應用程式建立工作。

允許的來源值如下:

允許的時間範圍

Android 14 推出了 time_detector 服務收到的時間建議上限。如果裝置支援 32 位元程序,架構會設定時間上限,防止裝置使用可觸發 Y2038 問題的時間建議。

Android 12 引進了較低的時間限制,可用於驗證 time_detector 服務收到的時間建議。自動建議功能使用的時間下限值是從建構時間戳記設定。以上原則是,裝置的系統映像檔建立之前不得有有效時間。如果時間建議早於時限,time_detector 服務會捨棄建議,因為如果建構時間戳記正確,該建議就會失效。

如果裝置搭載 Android 11 以下版本,time_detector 服務不會驗證傳入的 Unix 紀元時間建議。

時間偵錯與測試

本節說明如何偵錯及測試 time_detector 服務的行為,以及所有來源共用的其他元件的行為。

與 time_Detector 服務互動

如要查看 time_detector 服務的 time_detector 服務設定和狀態,請使用:

adb shell cmd time_detector dump

如要查看偵錯及測試時區偵測的其他指令,請使用:

adb shell cmd time_detector help

說明輸出內容也會描述 device_config 服務屬性,這類屬性可用來影響 time_detector 進行測試或實際工作環境的行為。詳情請參閱「使用 device_config 服務設定裝置」一節。

如要驗證自動偵測時間功能,測試人員必須知道 time_detector 服務使用的來源。以下是 adb shell cmd time_detector dump 指令的輸出內容範例,目前來源和服務狀態的相關資訊以粗體顯示:

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

這些資訊可以按照以下方式解讀:

mEnvironment.isAutoTimeDetectionEnabled() 是否啟用自動偵測時間。
mEnvironment.autoTimeLowerBound() 目前用來驗證時間建議的時間下限。
mEnvironment.autoOriginPriorities() 使用中的來源和優先順序。

時間變更記錄指出 time_detector 服務變更裝置目前的 Unix Epoch 紀元時間時,會發生什麼情況。

建議記錄資訊會指出各來源所建議的內容。

自動偵測時區

本節概略說明 time_zone_detector 服務如何管理自動偵測時區、使用者控管設定、電話和位置時區偵測,以及測試詳細資料。

time_zone_Detector 服務

在搭載 Android 11 以上版本的裝置上,time_zone_detector 服務可管理自動偵測時區功能。啟用自動時區偵測功能後,系統會視需要調整裝置目前的時區。

啟用自動時區偵測功能時,time_zone_detector 可以處於以下兩種狀態之一:不確定確定

time_zone_detector 服務處於特定狀態時,表示 time_zone_detector 服務已收到高強度時區資訊,因此覆寫了目前的時區。如果不確定,這表示其沒有收到任何資訊,或只有可信度不足的資訊,因此不會覆寫目前的時區。

time_zone_detector 服務的特定狀態可能包含下列狀態: time_zone_detector 沒有可用時區資訊,或在多個時區中可選擇的時區。這些狀態如下所示:

  • 當裝置在沒有時區的地點 (例如國際水或爭議地區) 的地點時,系統會輸入零時區的特定狀態。這個狀態與不確定狀態類似,但表示 time_zone_detector 不需要採取進一步行動即可判斷時區。
  • 在難以區別或邊框的條件下,會輸入具有多個時區的特定狀態。在這個狀態下,如果目前時區為 time_zone_detector 其中一個時區,就會保留目前時區。否則,就會使用其中一個可用的時區。如此一來,如果使用者先前已手動選取時區,或在裝置接近邊框時,time_zone_detector 就能為固定式元素設定黏著度。

time_zone_detector 服務的確定或不確定狀態取決於演算法傳送的時區建議

一般來說,建議有兩種類型,與 time_zone_detector 的可能狀態極為吻合:「不確定」和「不確定」。以下是建議類型的範例:

  • 類型 = uncertainzoneIds = []

    • 演算法不知道時區為何。
  • 類型 = certainzoneIds = ["Europe/London"]

    • 且確保演算法為歐洲/倫敦。
  • 類型 = certainzoneIds = []`

    • 可以確定此演算法,但目前位置沒有相關聯的區域 ID。
  • 類型 = certainzoneIds = ["America/Denver", "America/Phoenix"]

    • 演算法可確保答案是兩個可用區之一,但無法在「America/Denver」和「America/Phoenix」之間做出選擇。

time_zone_detector 服務會根據演算法將建議序列視為不同的演算法。視演算法而定,建議也可能包含指示演算法的適度中繼資料。

time_zone_detector 服務有狀態,代表會記錄每個演算法提出的最新建議。如果先前的建議不再正確,也就是演算法現在有其他建議,或無法偵測時區,系統就會將新建議傳送至 time_zone_detector 服務。time_zone_detector 服務會重新評估新建議和現有建議,並在收到建議時更新裝置狀態。

Android 支援兩種時區偵測演算法:

  • 電話通訊系統
  • 位置

time_zone_detector 服務通常使用單一演算法來決定時區。如果裝置支援位置演算法,則裝置使用的演算法取決於使用者設定的時區設定。如果使用的演算法無法確定時區,則 time_zone_detector 通常不會使用來自其他演算法的建議。未使用演算法的相關建議可由 time_zone_detector 保存在記憶體中,但除非演算法有所變更,否則這些建議不會使用。當使用者變更自動偵測時區的設定和演算法變更時,系統會使用新演算法適用的最新建議。

如要進一步瞭解使用多項演算法判斷時區的情況,請參閱「電話備用模式」。

電話通訊備用模式

在搭載 Android 13 以上版本的裝置上,time_zone_detector 服務支援電話備用模式。這個模式可讓 Android 暫時使用電話偵測建議功能,例如位置偵測功能無法偵測時區,或是位置偵測功能偵測到時區的時間比電話偵測作業更長。

電話備用模式適用於同時支援電話和位置偵測功能,或是使用者在時區設定中啟用「使用位置資訊設定時區」功能的裝置。當裝置重新啟動及飛航模式停用時,系統會自動啟用這個模式。

在 Android 14 以上版本中,可透過 LTZP 狀態回報 API 觸發電話備用行為。也就是說,如果 LTZP 回報的位置或時區不確定性,「且」環境降低了其位置或時區偵測能力,就會觸發電話備用模式。

在電話備用模式中,time_zone_detector 服務會使用電話建議,如同位置偵測功能「直到」位置演算法提出特定建議為止。在收到特定建議後,系統會停用電話備用模式,地點建議只會使用。

如需電話備用模式的設定詳細資料,請參閱「時區偵測設定」。

時區設定

使用者可以在 Android 開放原始碼計畫的「設定」應用程式中,啟用及設定自動偵測時區功能的設定。

在「設定」中自動偵測時區

圖 2. 在「設定」中自動偵測時區。

下表列出 Android 開放原始碼計畫「設定」應用程式中的時區偵測使用者控制項。

*在 Android 11 以下版本中,這項設定會標示為「使用網路提供的時區」

Android 開放原始碼計畫設定位置 Android 開放原始碼計畫設定名稱 範圍 行為
系統 > 日期和時間 自動設定時區* 所有使用者

切換鈕。

如果設為「on」,裝置會負責偵測目前的時區。如果關閉,系統會為使用者提供可手動設定裝置時區的控制項。

系統 > 日期和時間 使用位置資訊來設定時區 目前使用者

切換鈕。

適用於 Android 12。只有在裝置支援位置時區偵測功能時,系統才會顯示這個切換鈕。

如要瞭解在 14 中導入的變更,請參閱「 僅支援位置時區偵測的裝置」。

位置資訊 使用位置資訊 目前使用者

切換鈕。

允許或禁止系統使用裝置的位置資訊。如果裝置支援位置時區偵測功能,這個值就相當重要。

以下概略說明根據使用者選擇的設定,偵測時區的裝置行為:

  • [日期和時間] 自動設定時區:關閉

    • 使用者必須手動選取時區。
  • [日期和時間] 自動設定時區:開啟

    • [位置] 使用位置資訊:關閉

      • 電話訊號的功用是偵測時區。
    • [位置] 使用位置資訊:開啟

      • [日期和時間] 使用位置資訊設定時區:開啟

        • 系統會使用位置資訊偵測時區。
      • [日期和時間] 使用位置資訊設定時區:關閉

        • 電話訊號用於偵測時區。

多位使用者裝置

由於涉及的多項設定範圍僅限於目前的使用者,因此當目前的使用者在多使用者 Android 裝置上變更時,裝置的時區偵測行為也可能隨之改變。

「使用位置資訊設定時區」切換按鈕的範圍限定為目前的使用者,且不受裝置政策限制,這表示即使「Set time zone」切換功能已關閉,或是其他時間或時區控制項受到 Device Policy Controller 限制,使用者還是可以變更該值。

僅支援位置時區偵測演算法的裝置

本節說明僅支援位置演算法的裝置行為。

  • Android 14 以上版本

    • Android 開放原始碼計畫「設定」應用程式不會向使用者顯示「使用位置資訊」選項,且裝置的行為會像啟用「使用位置資訊」選項時運作。
    • 系統會忽略使用者範圍的 SettingsProvider 設定 location_time_zone_detection_enabled 值。這個值會記錄使用者在其他類型裝置上的偏好設定。
  • Android 12 或 Android 13

    • 使用者會在 Android 開放原始碼計畫的「設定」應用程式中看到「使用位置資訊」選項,且使用者可以停用該選項。如果停用此選項,裝置將不會自動偵測時區。

切換自動偵測與切換時的行為

當使用者將時區偵測功能從「手動」切換為「自動」時,time_zone_detector 可能已經確定了目前的時區。如果是的話,由於使用者啟用自動偵測,系統可能會同時變更裝置的時區,以符合 time_zone_detector 服務的意見。

同樣地,當使用者在「設定」中做出變更,而該變更導致 time_zone_detector 服務目前的演算法發生變化時,time_zone_detector 可能已經收到新演算法的建議,因此裝置的時間可能會立即變更為符合 time_zone_detector 服務的意見。

電話通訊時區偵測

電話時區偵測功能會使用電話訊號來判斷目前的時區。詳情請參閱「電話時區偵測」。

位置時區偵測

位置時區偵測功能適用於 Android 12 以上版本。這是選用的自動偵測時區功能,可讓裝置使用位置資訊判斷目前的時區。

Android 12 中推出的 location_time_zone_manager 服務會在系統伺服器中執行,並包含相關程式碼,負責向 time_zone_detector 服務提交位置演算法建議。詳情請參閱「位置時區偵測」。

功能採用注意事項

本節說明位置時區偵測功能的各個層面,協助裝置製造商判斷是否要在裝置上採用該功能。

比較電話偵測和位置偵測

下表比較使用位置資訊 (而非用於時區偵測的電話訊號) 的優缺點比較。

電話偵測 位置偵測
正確性 隨國家而異。

視 MCC 而定,NITZ 的正確性和可用性而定。
取決於功能設定或外掛程式元件。

正確性通常因以下因素而異:
  • 定位提供者精確度與常規性。
  • 時區地圖資料的品質。
可更新性 電話偵測功能仰賴時區資料模組 (com.android.tzdata APEX) 內含的檔案, 取決於功能設定或外掛程式元件。

可更新性通常取決於裝置使用的是伺服器還是用戶端時區地圖資料。

注意:用於更新 Android 的 TZDB 副本和其他時區資訊的時區資料模組不包含時區地圖資料。

裝置製造商也必須將時區規則和時區地圖資料的版本一致性納入考量。
耗電量 無電源用量或低耗電 取決於使用者的位置資訊設定、使用的外掛程式,以及通常其他應用程式要求位置資訊。
適用國家/地區 僅適用於電話通訊裝置,通常需要一張能正常運作的 SIM 卡。 位置偵測功能取決於可用的定位服務供應商。
使用者隱私

使用者偏好的時區通常取決於使用者的地理位置。位置為機密資料。使用者可能會在偵測時區時得知自己的位置分享資訊,與時區偵測無關:凡是在裝置上執行的應用程式,都能讀取裝置目前的時區,不需具備 Android 權限,應用程式可以根據這項資訊推斷裝置位置的不精確概念。

具體來說,時區偵測功能可以透過被動或主動方式偵測:

  • 被動:裝置環境中的項目會告知裝置要在該環境使用的時區。
  • 啟用:裝置必須自行記住時區,並且根據使用者的隱私權設定和同意聲明,取得裝置的位置資訊。這樣裝置就能與外部服務分享所在位置。如要進一步瞭解使用者隱私權和同意聲明,請參閱以下討論內容。

被動偵測 (例如使用電話演算法) 不會對使用者造成其他隱私影響。

進行偵測時 (例如使用位置演算法),需要判斷裝置的位置、使用者可能不想同意的位置,以及透過網路傳送位置資訊,以便判斷時區 ID。

Android 對於時區偵測處理使用者隱私的做法,可讓使用者個別停用預期會在運作中的演算法。此外,Android 開放原始碼計畫平台程式碼不會直接處理位置本身:位置偵測和時區 ID 的對應位置會留在裝置製造商設定的外掛程式元件。

如要進一步瞭解使用者隱私權功能,請參閱偵測位置時區一文。

設定

裝置製造商可以設定 time_zone_detector 服務來變更行為。本節說明 time_zone_detector 服務一般行為的設定選項。如需電話和時區偵測演算法的設定詳細資料,請參閱「電話時區偵測」和「位置時區偵測」。

基本 Android 開放原始碼計畫設定位於 frameworks/base/core/res/res/values/config.xml

設定金鑰 Android 開放原始碼計畫值 說明
config_supportTelephonyTimeZoneFallback true true 時,time_zone_detector 會使用電話備用模式。適用於 Android 13 以上版本。

變更裝置預設行為

在 Android 開放原始碼計畫中,系統預設會啟用自動時區偵測功能,並將 auto_time_zone 設定設為 true。如要預設停用自動偵測時間功能,請將 frameworks/base/packages/SettingsProvider/res/values/defaults.xml 中定義的 def_auto_time_zone 值設為 false

根據預設,從其他裝置還原備份時,架構會更新 auto_time_zone 設定的值。如要確保這項設定不會從備份還原,請在 frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml 定義的 restore_blocked_global_settings 陣列中加入 auto_time_zone

時區偵錯和測試

本節說明如何偵錯及測試 time_zone_detector 服務的行為,以及所有演算法共用的其他元件的行為。

使用 device_config 服務設定裝置

device_config 服務是 Android 使用的機制,用於設定可修改的行為,這些值通常是由專屬 (非 Android 開放原始碼計畫) 程式碼從遠端伺服器提取的值。使用 device_config 值進行測試時 (尤其是在長時間執行手動測試期間),裝置可能會同步處理標記,進而重設標記並清除用於測試的值。

在 Android 12 以上版本中,如要暫時停止同步處理標記,請使用:

adb shell cmd device_config set_sync_disabled_for_tests persistent

如要在測試後還原旗標同步處理作業,請使用:

adb shell cmd device_config set_sync_disabled_for_tests none

還原旗標同步處理作業後,請重新啟動裝置。

如需更多資訊,請使用 $ adb shell cmd device_config help

與 time_zone_Detector 服務互動

如要查看 time_zone_detector 服務的 time_zone_detector 設定和狀態,請使用:

adb shell cmd time_zone_detector dump

如要查看偵錯及測試時區偵測的其他指令,請使用:

adb shell cmd time_zone_detector help

說明輸出內容也會描述 device_config 服務屬性,這類屬性可用於影響測試或實際工作環境中的 time_zone_detector 服務行為。詳情請參閱「使用 device_config 服務設定裝置」一節。

如要驗證時區偵測結果,測試人員必須知道 time_zone_detector 正在使用哪個演算法。如要瞭解及影響 time_zone_detector 目前的演算法,請使用下列其中一個選項:

  • 透過「設定」使用者介面查看。詳情請參閱時區設定
  • 透過 ADB 使用指令列:

    • 如要轉儲 time_zone_detector 狀態,請使用 adb shell cmd time_zone_detector dump
    • 如要修改裝置設定,請使用其他 time_zone_detector 指令。如需更多資訊,請使用 adb shell cmd time_zone_detector help

以下是 adb shell cmd time_zone_detector dump 指令的輸出內容範例,目前演算法與服務狀態的相關資訊以粗體顯示:

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

這些資訊可以按照以下方式解讀:

mUserConfigAllowed 是否禁止使用者透過 裝置政策控制器控制日期和時間設定。
mTelephonyDetectionSupported 裝置是否具備電話時區偵測功能。
mGeoDetectionSupported 裝置是否支援位置時區偵測功能。這是指根據設定出現至少一個 LTZP 的有效狀態。
mAutoDetectionEnabled 是否啟用自動偵測時區功能。
mLocationEnabled 主要位置切換按鈕。
mGeoDetectionEnabled 演算法切換鈕:false 表示電話演算法,true 表示位置演算法。

建議記錄資訊會指出系統透過「設定 (手動)」和電話和位置演算法提供了哪些建議。