2013-03-04 26 views
7

我正在做一個研究項目,其中2個android手機必須在同一時間播放相同的聲音文件,要做到這一點我需要每個手機的系統時間都同步到毫秒。 我的問題是,如何在代碼級別實現這一點?現在所有當前的方法只能進行二級同步。在兩部手機中同步系統時間

+5

即使您使用NTP或其他方式獲得時間同步,我也可以確信,您將很難在虛擬機中精確運行您的代碼。 – 2013-03-04 22:20:17

+1

由VM我的意思是Dalvik虛擬機,android用來執行Java代碼,而不是一個android模擬器。 – 2013-03-04 22:25:53

+0

[在多個Android設備上記錄數據的同步時間]的可能重複(http://stackoverflow.com/questions/11190843/sync-time-for-recording-data-on-multiple-android-devices) – Thomas 2015-01-20 09:38:39

回答

8

你不知道。如果你需要的話,你需要一個實時的操作系統,Android不是。太多的東西可能會導致它出錯 - 時鐘偏移,垃圾回收,達爾維克JIT差異等。您可以使用實時時鐘函數來接近它,但是您永遠不會得到那種寫入任何內容的性能保證在多任務操作系統上的虛擬機之上。

+0

謝謝,有沒有其他方法可以做到這一點?我目前的想法是,首先同步系統時間,然後通過套接字發送消息給這兩部手機,在該套接字中我指定了何時播放聲音文件。 – 2013-03-04 22:26:14

+1

@JunfeiWang你可以讓兩個設備都在socket上偵聽消息。然後通過Multi-Cast從同一網絡上的第三臺機器發送消息。根據網絡流量情況,兩者應該大致同時接收消息(足夠接近以至於他們應該同步播放聲音,以至於人耳不會注意到其差異)。 – FoamyGuy 2013-03-04 22:28:04

+0

@FoamyGuy謝謝你的建議,我會嘗試建立一個專用的無線網絡並實現它。 – 2013-03-04 22:34:27