1. 程式人生 > >“日期和時間->自動確定日期和時間->使用網路提供時間”功能是怎樣實現的?

“日期和時間->自動確定日期和時間->使用網路提供時間”功能是怎樣實現的?

[DESCRIPTION]

介紹“使用網路提供時間”這個功能的實現方法及可能會遇到的問題

[SOLUTION]

現在android通過網路同步時間有兩種方式:NITZ和NTP,它們使用的條件不同,可以獲取的資訊也不一樣;勾選這個功能後,手機首先會嘗試NITZ方式,若獲取時間失敗,則使用NTP方式

1.NITZ(network identity and time zone)同步時間

NITZ是一種GSM/WCDMA基地臺方式,必須插入SIM卡,且需要operator支援;可以提供時間和時區資訊

中國大陸運營商基本是不支援的

2.NTP(network time protocol)同步時間

NTP在無SIM卡或operator不支援NITZ時使用,單純通過網路(GPRS/WIFI)獲取時間,只提供時間資訊,沒有時區資訊(因此在不支援NITZ的地區,自動獲取時區功能實際上是無效的)

NTP還有一種快取機制:當前成功獲取的時間會儲存下來,當用戶下次開啟自動更新時間功能時會結合手機clock來進行時間更新。這也是沒有任何網路時手機卻能自動更新時間的原因。

此外,因為NTP是通過對時的server獲取時間,當同步時間失敗時,可以檢查一下對時的server是否有效,並替換為其他server試一下。

3.如何判斷手機通過哪種方式更新時間

設定一個錯誤的時區,檢視時區是否有被更新正確,若時間和時區都有更新正確,那麼就是GSM網路有送NITZ訊息上來;

若只有時間更新,而時區沒有變化,就是NTP方式,即它通過網路(GPRS/WIFI)連線到server去獲取時間。