Szukam sposobu na uzyskanie zegara o wysokiej rozdzielczości (źródło zegara) na Androida. Musi to być kod natywny i może być dość nieprzenośny. Chciałbym osiągnąć rozdzielczość mikrosekundy lub lepszą. Dla mojego konkretnego zastosowania rozdzielczość jest ważniejsza niż precyzja, a najlepszy jest czasomierz monotoniczny. Testowałem na konkretnym chipsecie ARMv7 z Androidem 4.0.3.Jak uzyskać zegar o wysokiej rozdzielczości w natywnym kodzie systemu Android?
Co próbowałem dotąd:
clock_gettime(CLOCK_MONOTONIC)
: przyrosty w jednostkach 1ms na sprzęcie docelowym (EDIT pierwotnie myślałem 10ms z powodu błędu w kodzie, 1ms jest poprawna, ale nadal nie bardzo dobry)gettimeofday()
: podobne do clock_gettime
Co nie próbowałem:
System.nanoTime()
: To nie jest natywne. Wierzę, że jest on oparty na clock_gettime(), ale wolałbym dowiedzieć się, co jest pod maską i użyć tego bezpośrednio./dev/rtc
- Jakiś ARM Instruction/placówki, może
SysTick
(http://web.eecs.umich.edu/~prabal/teaching/eecs373-f10/readings/ARMv7-M_ARM.pdf) lub General Purpose timera (GPT).
Zobacz także (inne pytania, ale nie odpowiedź):
Czy można założyć dostęp root'a do urządzenia? –
@Maratyszcza: Tak, w razie potrzeby mogę mieć root. –
Nie chodzi o Androida, ale Linuksa, i nie jest to możliwe. http://elinux.org/High_Resolution_Timers – auselen