Есть ли способ синхронизировать время эмулятора и системное время с точностью до миллисекунды? Таким образом, вызов System.currentTimeMillis()
будет возвращаться в то же время, что и звонок gettimeofday()
в C?Синхронизация времени эмулятора android
4
A
ответ
0
Я не уверен, что я понимаю вопрос 100%.
Если вы посмотрите в dalvik/vm/native/java_lang_System.c
вы увидите:
static void Dalvik_java_lang_System_currentTimeMillis(const u4* args, JValue* pResult)
{
struct timeval tv;
UNUSED_PARAMETER(args);
gettimeofday(&tv, (struct timezone *) NULL);
long long when = tv.tv_sec * 1000LL + tv.tv_usec/1000;
RETURN_LONG(when);
}
Так System.currentTimeMillis() вызывает gettimeofday() - по крайней мере, в реализации Dalvik, что я смотрю.
Как использовать приложение, например ClockSync, чтобы установить время на эмулятор. Он использует протокол ntp, который вы также можете использовать на своем ПК.
0
К сожалению, Android делает notallow время, которое будет установлено приложением без root. Таким образом, вы можете установить время, только если вы root the emulator.