Android 传感器采样率之间的差异

时间:2021-05-20 19:50:36

标签: android accelerometer android-sensors gyroscope magnetometer

我正在尝试将加速度计、陀螺仪和磁力计传感器值写入 txt 文件。我将此传感器值写入不同的文件。但我意识到,当我将传感器的延迟设置为 fastest 时,加速度计和陀螺仪传感器的采样数相同,但与它们不同的是,磁力计传感器的采样数几乎是一半。然后我尝试将所有传感器延迟数设为 200000 ms 并且它们的采样数几乎相同。我想知道为什么会造成这种差异。我是 Android 和传感器的新手,因此非常感谢您的帮助。

谢谢。

     if(sensor.getType() == Sensor.TYPE_ACCELEROMETER) {

            x_axis = event.values[0];
            y_axis = event.values[1];
            z_axis = event.values[2];

            try {
                writeToFile("accelerometer.txt", letter + " " + subject + " " + timestamp + " " + x_axis + " " + y_axis + " " + z_axis + "\n");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        if(sensor.getType() == Sensor.TYPE_GYROSCOPE) {

            gyro_x_axis = event.values[0];
            gyro_y_axis = event.values[1];
            gyro_z_axis = event.values[2];

            try {
                writeToFile("gyroscope.txt", letter + " " + subject + " " + timestamp + " " + gyro_x_axis + " " + gyro_y_axis + " " + gyro_z_axis + "\n");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        if(sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
            mag_x_axis = event.values[0];
            mag_y_axis = event.values[1];
            mag_z_axis = event.values[2];

            try {
                writeToFile("magnetometer.txt", letter + " " + subject + " " + timestamp + " " + mag_x_axis + " " + mag_y_axis + " " + mag_z_axis + "\n");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

1 个答案:

答案 0 :(得分:0)

传感器是物理设备。这意味着它们都以不同的速率响应输入。例如,加速度计传感器可能能够在 2ms 内检测到变化,而光传感器可能需要 100ms。因此,您有两种选择 - 以设备上最慢传感器的速率进行采样(在这种情况下,在本例中您会丢失来自加速度计的 98% 的数据),或者让每个传感器对 FASTEST 具有不同的采样率。 Android 选择了第二个,否则你会丢失很多有价值的数据。

每个设备和传感器的 FASTEST 是什么会有所不同 - 不同的设备会有不同的传感器实现,以不同的方式工作。