android scanresult时间戳字段-它有多准确?

m0rkklqb  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(515)

我一直在使用wifimanager.startscan();从附近的wi-fi接入点接收数据。这将作为scanresult列表返回。该类可在以下位置找到:http://developer.android.com/reference/android/net/wifi/scanresult.html#timestamp
我知道scanresult的时间戳字段是
上次看到此结果时的时间戳(自启动后),单位为微秒。
因此,我使用一些计算来获得智能手机设备看到接入点的实际时间戳:

long actualTimestamp = System.currentTimeMillis() - SystemClock.elapsedRealtime() + (scanResult.timestamp / 1000);

这很好,但我有一些罕见的有趣的结果:
15:04:01 28-03-2016 - 1459173841
22:50:44 07-06-2016 - 1465336244
15:04:21 28-03-2016 - 1459173861
请注意上面的条目2016年6月,这是一个未来的日期,它被放置在从列表中收集的其他读数中。
这里会发生什么?我的代码有点错吗?时间戳值是否偶尔不准确?以前有人经历过吗?
编辑:我正在Nexus5棉花糖设备上测试。minsdk 18,目标23

erhoui1w

erhoui1w1#

我似乎有一个解释:这是一个错误。
我偶尔会看到.timestamp(重启后的微秒数)将等于.seen(epoch后的秒数)。现在,如果重新解释为微秒时间段,纪元时间约为17天。
因为两个值显然不能相等,所以我将其提交给android:https://code.google.com/p/android/issues/detail?id=225218 请随时启动该问题:)

kxeu7u2r

kxeu7u2r2#

这个适合我

long actualTime = System.currentTimeMillis() - TimeUnit.MILLISECONDS.convert(SystemClock.elapsedRealtimeNanos() - scanResult.getTimestampNanos(), TimeUnit.NANOSECONDS)

相关问题