我正在尋找一種方法來獲取Android上的高分辨率定時器(時鐘源)。這必須使用本機代碼,並且可能相當不便攜。我想要微秒分辨率,或更好。對於我的特殊應用,分辨率比精度更重要,而單調的計時器是最好的。我一直在用Android 4.0.3測試特定的ARMv7芯片組。如何在Android本機代碼中獲取高分辨率計時器?
我試過到目前爲止:
clock_gettime(CLOCK_MONOTONIC)
:增量1ms的單位在目標硬件上(編輯原本我以爲,由於10ms的錯誤在我的代碼,1ms的是正確的,但仍然不是很好)gettimeofday()
:類似clock_gettime
我還沒有嘗試過:
System.nanoTime()
:這不是原生的。我相信它是基於clock_gettime(),但我更願意找出隱藏的內容並直接使用它。/dev/rtc
- 某種類型的ARM指令/設施,也許
SysTick
(http://web.eecs.umich.edu/~prabal/teaching/eecs373-f10/readings/ARMv7-M_ARM.pdf)或通用定時器(GPT)。
參見(相關的問題,但沒有回答):
你能假設設備的根訪問權限? – 2013-02-20 09:20:38
@Maratyszcza:是的,如果需要,我可以擁有根。 – 2013-02-20 09:50:01
這不是關於Android,而是Linux,這是不可能的。 http://elinux.org/High_Resolution_Timers – auselen 2013-02-20 10:31:23