我正在开发一个项目,旨在使用Android手机和附近的电台的GPS功能,使用RTK DGPS技术计算更精确度(cm)的定位.
到目前为止,我还没有看到有人说他们实际上设法执行了类似的任务(除了@GPSmaster,没有解释如何),并且APK似乎没有提供来自GPS芯片的任何信息除了位置和NMEA消息更新.如果可能,我需要伪距和载波相位.
我想知道是否:
有任何想法吗?
我一直在读取传感器读数的时间戳值,但由于它们以纳秒为单位提供,我认为我会将它们转换为加倍并进行转换.结果数字是一个17位数值加上分隔符.
试图直接打印它会产生科学记数法,这是我不想要的,因此我使用DecimalFormat类将其输出到4位小数的预期值.问题是,即使调试器显示了17个十进制数字,即使在'doubleValue()'调用之后,输出字符串也会显示15个数字.
码:
...
Double timestamp = (new Date().getTime()) + // Example: 1.3552299670232847E12
((event.timestamp - System.nanoTime()) / 1000000D);
DecimalFormat dfmt = new DecimalFormat("#.####");
switch(event.sensor.getType()){
case Sensor.TYPE_LINEAR_ACCELERATION:
case Sensor.TYPE_ACCELEROMETER:
accel = event.values.clone();
String line = "A" + LOGSEPARATOR +
dfmt.format(timestamp.doubleValue()) + // Prints: 1355229967023.28
...
Run Code Online (Sandbox Code Playgroud)
我认为这可能是一个Android精度问题,但调试器的格式化程序也显示错误的精度.我在本地java程序中测试了这个,并且两个调用具有相同的数字量.
这是一个DecimalFormat错误/限制吗?或者我做错了什么?
java android string-formatting floating-accuracy double-precision