首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓SensorEvent时间戳常量

安卓SensorEvent时间戳常量
EN

Stack Overflow用户
提问于 2013-02-13 05:52:22
回答 3查看 1.8K关注 0票数 4

我目前正在编写一个简单的android应用程序来计算设备imu的偏差。在这样做的时候,我遇到了一个关于event.timestamp的值的问题

使用以下代码:

代码语言:javascript
复制
float dT = (event.timestamp-accel_timestamp)*NS2S;

Android Reference Guide的示例中计算四元数的旋转矩阵。

当我使用Galaxy Nexus-S运行代码时,两次测量之间的dT为0.06~0.07秒,但当我在LG Nexus 4或Nexus7上运行相同的代码时,dT始终为0。我意识到一个问题,Android SensorEvent timestamp issue,Nexus7时间戳是一个unix时间戳,但连续测量之间的差异不应该总是零。Nexus 4和Nexus 7都有相同的IMU,这会不会是从IMU创建时间戳的错误?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-18 13:29:11

哇,好吧,这肯定是个bug!

每个SensorEvent的时间戳都会被覆盖,就好像它是一个静态变量一样……

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

事件原封不动地存储在数组中。

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

除非有人能解释这种行为,否则我会去提交一份bug报告。它肯定没有记录在API中。

同时,尝试这个解决方案

代码语言:javascript
复制
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;
    }
}

然后在你的监听器中这样做:

代码语言:javascript
复制
ArrayList<UnbrokenSensorEvent> results = new ArrayList<UnbrokenSensorEvent>();

public void onSensorChanged(SensorEvent event) {
    results.add(new UnbrokenSensorEvent(event));
}

如果您需要使用其他SensorEvent功能,只需继续并将其放入完整版本中即可。

这很麻烦,但我认为快速修改总比等待API更新要好!

票数 1
EN

Stack Overflow用户

发布于 2013-04-03 00:19:43

还要注意SensorEventListener的onSensorChanged -method上的文档:

注意:应用程序不拥有作为参数传递的事件对象,因此不能持有它。该对象可以是内部池的一部分,并且可以由框架重用。

点击此处:http://developer.android.com/reference/android/hardware/SensorEventListener.html#onSensorChanged%28android.hardware.SensorEvent%29

...which建议人们不应该引用SensorEvent -objects。

票数 1
EN

Stack Overflow用户

发布于 2014-04-09 16:55:40

如果您从here复制了代码片段,请注意它有一个错误。需要更换

代码语言:javascript
复制
private float timestamp;

代码语言:javascript
复制
private long timestamp;

在其他情况下,您增量时间将始终包含奇怪的值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14842537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档