2013-08-19 92 views
8

我試圖同步多個Android設備之間的時間戳,以便我可以同時啓動任務。我認爲我可以使用Timer並根據System.currentTimeMillis()設置Date,但問題似乎是多個設備的時間戳距離彼此遠遠不夠,我沒有得到我想要的精度。跨多個設備同步時間戳

如果可能,我在50-100毫秒範圍內的某個地方查看。我的一個想法是使用Android Beam將一個設備的時間戳發送到其他設備,然後計算增量,但事實證明,我必須在實際發送和接收消息之前獲取時間戳(即,用戶的時間越長等待發送,三角洲將越大),這使得該方案完全崩潰。

如何同步兩個或更多設備,使其內部時鐘間隔不會超過100毫秒?這甚至可以不使用保持時間的外部服務器?

對於儘可能接近同時在多個設備上執行某些操作的技術的任何其他建議也是受歡迎的。

回答

4

爲什麼不使用GPS時間? GPS的時間標記非常準確。

你可以同意所有設備在一定的時間,然後在GPS告訴你時啓動它。

+1

我嘗試使用GPS位置。我能夠得到它,並設置三角洲,雖然我還沒有得到同步,但我不知道這是否將是可行的。在我的實際測試中,我有時需要等待一分鐘以上才能獲得GPS信號。更何況,這將是一個更多的應用程序所需的權限。 我現在會繼續使用GPS時間方法,看看我能否制定出一種可行的同步方案,但我不知道長期使用GPS是否可靠。 –

0

我現在正在努力解決同樣的問題。我試過GPS時間,但我不能保證用戶在室內會有GPS信號。

我的解決辦法是讓所有設備從NIST服務器檢索的時間,然後就加上或減去與System.currentTimeMillis的時間差()

如果設備紮根,你可以嘗試同步時鐘。

​​

2

從本質上講,你有兩個選擇:簡單的方法或艱辛的道路。

簡單的方法是使用一個外部時鐘信號源,例如NIST,另一個互聯網源或GPS,如@Stefan所示。互聯網資源使用NTP,請參閱此Java NTP client問題。

困難的方法是在設備之間做Clock synchronization

0

Android的GPS硬件通常只有幾秒鐘的精度。毫秒浮點數的三個最後時間戳數字是000.