我正在寻找一种方法来获取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