4

有没有办法以毫秒精度同步模拟器时间和系统时间?所以调用System.currentTimeMillis()将与gettimeofday()C 中的调用同时返回?

4

2 回答 2

0

不幸的是,Android不允许没有 root 的应用程序设置时间。因此,只有在您root 模拟器时才能设置时间。

于 2013-03-08T03:04:57.080 回答
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之类的应用程序在模拟器上设置时间怎么样。它使用您也可以在主机 PC 上使用的 ntp 协议。

于 2012-07-16T08:59:16.390 回答