繁体   English   中英

Android BLE:将 ScanResult timestampNanos 转换为 System nanoTime

[英]Android BLE: Convert ScanResult timestampNanos to System nanoTime

扫描低功耗蓝牙数据包时,我收到 ScanCallback 并设置了 ScanResult。 我可以通过 result.getTimestampNanos() 获得“观察到扫描结果时的设备时间戳”,但这次与 Systems.nanoTime() 不一致。 有没有办法从一种转换到另一种?

使用以下代码通过 SystemClock.elapsedRealtime() 将 getTimestampNanos() 转换为系统毫秒:

long rxTimestampMillis = System.currentTimeMillis() - 
                         SystemClock.elapsedRealtime() +
                         scanResult.getTimestampNanos() / 1000000;

这可以轻松转换为 Date 对象:

Date rxDate = new Date(rxTimestampMillis);

然后你将时间作为一个字符串:

String sDate = new SimpleDateFormat("HH:mm:ss.SSS").format(rxDate);

更优雅的方式来做到这一点

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM