Android SensorEvent时间戳常量

Android SensorEvent时间戳常量,第1张

概述我正在编写一个简单的 Android应用程序来计算设备imu的偏差.在这样做时,我遇到了event.timestamp值的问题 使用代码: float dT = (event.timestamp-accel_timestamp)*NS2S; 从Android Reference Guide的例子中计算四元数的旋转矩阵. 当我使用Galaxy Nexus-S运行代码时,我在测量之间得到0.06~0. 我正在编写一个简单的 Android应用程序来计算设备imu的偏差.在这样做时,我遇到了event.timestamp值的问题

使用代码:

float dT = (event.timestamp-accel_timestamp)*NS2S;

从Android Reference Guide的例子中计算四元数的旋转矩阵.

当我使用galaxy nexus-s运行代码时,我在测量之间得到0.06~0.07秒的dT但是当我在LG Nexus 4或Nexus 7上运行相同的代码时,dT总是为0.我知道这个问题,Android SensorEvent timestamp issue,Nexus 7时间戳是一个unix时间戳,但连续测量之间的差异不应总是为零. Nexus 4和Nexus 7都有相同的IMU,这可能是IMU如何创建时间戳的错误?

解决方法 哇,好吧这肯定是个错误!

正在覆盖每个SensorEvent的时间戳,就像它是一个静态变量一样……

当我在事件发生时记录时间戳的字符串时,所有值都不同.

事件以不变的方式存储在数组中.

数组中的每个SensorEvent现在都具有相同的时间戳,但值数组仍然不同(即,它们不是同一个对象并包含不同的信息…时间戳除外).

Google / HTC,请返回我生命中的3个小时!

除非有人能解释这种行为,否则我将提交错误报告.它肯定没有记录在API中.

在此期间,尝试这个解决方案:

import androID.harDWare.Sensor;import androID.harDWare.SensorEvent;public class UnbrokenSensorEvent {    public long timestamp;    public float[] values;    public Sensor sensor;    public UnbrokenSensorEvent(SensorEvent event){        this.timestamp = event.timestamp;        this.values = event.values;        this.sensor = event.sensor;    }}

然后在你的听众中做这样的事情:

ArrayList<UnbrokenSensorEvent> results = new ArrayList<UnbrokenSensorEvent>();public voID onSensorChanged(SensorEvent event) {    results.add(new UnbrokenSensorEvent(event));}

重构应该非常简单,因为SensorEvent和UnbrokenSensorEvent具有相同的公共字段.如果您需要使用其他SensorEvent功能,请继续将其放入Unbroken版本中.

这是Hacky,但恕我直言快速黑客总是比等待API更新更好!

总结

以上是内存溢出为你收集整理的Android SensorEvent时间戳常量全部内容,希望文章能够帮你解决Android SensorEvent时间戳常量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1126859.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存