同步加速度计和陀螺仪/Android

同步加速度计和陀螺仪/Android,android,Android,我正在android下开发一个移动应用程序,我需要在同一时间从加速计和陀螺仪中检索数据,也就是说,我需要同步两个传感器以同时读取它们的值。我需要使用服务(不是活动),但两个event.timestamp的值完全不同 public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { xa =event.values[0]

我正在android下开发一个移动应用程序,我需要在同一时间从加速计和陀螺仪中检索数据,也就是说,我需要同步两个传感器以同时读取它们的值。我需要使用服务(不是活动),但两个event.timestamp的值完全不同

public void onSensorChanged(SensorEvent event) {


    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        xa =event.values[0] ;
        ya =event.values[1] ;
        za =event.values[2] ;
        ta= event.timestamp;

    }

    if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
        xg = event.values[0];
        yg = event.values[1];
        zg = event.values[2];
        tg = event.timestamp;
   }

谢谢。

使用两个布尔标志,一个用于加速计,另一个用于陀螺仪,当这两个标志都为真时,表示您至少从这两个标志中获得一次,可能其中一个将有3次或更多次。加速度传感器相当快。当它们都为true时,再次将它们设置为false以再次从它们获取数据。无法将传感器与传感器api同步

boolean isAccelData = false;
boolean isGyroData = false;

public void onSensorChanged(SensorEvent event) {


    if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
        isAccelData = true;
    }
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        isGyroData = true;
    }
    if (isAccelData & isGyroData) {
        // DO something here
        isAccelData = false;
        isGyroData = false;
    }
}

首先感谢您的回复。在开始时,我使用了测试if(ta==tg){将数据保存在数据库中},但即使在5分钟后,我发现我的表几乎是空的(有时我会找到1或2行)。如果我不能使用传感器api进行同步,你会建议使用什么工具。它可以正常工作创建一个新项目实现传感器侦听器并检查一个陀螺仪的加速度计输出。使用log或System.println并设置另一个,这两个选项都已将其标志设置为true。这很有效。如果您检查指南针应用程序,您将看到它用于在从加速度计和磁场传感器获取数据后设置旋转矩阵。我看到3或4个加速度计数据,然后是磁场传感器数据,因此它设置两个标志并为其触发操作,并在执行操作后再次将两个标志设置为false。