Java 如何在android上设置加速度计和陀螺仪的50 Hz采样率?
我想存储安卓手机的加速度计和陀螺仪收集的数据。具体来说,我想在50赫兹的频率下对它们进行采样,不多不少 我如何在Android Java上指定这一点 我看到过他们使用的其他帖子:Java 如何在android上设置加速度计和陀螺仪的50 Hz采样率?,java,android,accelerometer,sampling,gyroscope,Java,Android,Accelerometer,Sampling,Gyroscope,我想存储安卓手机的加速度计和陀螺仪收集的数据。具体来说,我想在50赫兹的频率下对它们进行采样,不多不少 我如何在Android Java上指定这一点 我看到过他们使用的其他帖子: mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_FASTEST); 这是传感器可以采集的最大样本量。虽然有时传感器的容量可以达到50hz以上,但我怎么能只取50hz?根据,您可以指定“事件之间的期望延迟
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_FASTEST);
这是传感器可以采集的最大样本量。虽然有时传感器的容量可以达到50hz以上,但我怎么能只取50hz?根据,您可以指定“事件之间的期望延迟(以微秒为单位)”,因此它应该是:
mSensorManager.registerListener(this, mAccelerometer, 20000); // 20000 = 50Hz in microseconds
编辑:根据文档:
速率传感器事件在以下位置传递。这只是对系统的一个提示。接收事件的速度可能快于或慢于指定的速率。通常事件接收速度更快。该值必须是SENSOR_DELAY_NORMAL、SENSOR_DELAY_UI、SENSOR_DELAY_GAME或SENSOR_DELAY_faster中的一个,或者是事件之间所需的以微秒为单位的延迟
至少在这个API中,似乎没有办法做到精确。但是这个延迟会与每个传感器设备的采样能力成比例吗?我的意思是,我将在一个通用设备上运行应用程序,它的采样能力可能是50 Hz,也就是说,如果将延迟设置为20000,采样率为25Hz?@RabbitBadger这是事件之间所需的延迟,因此它应该是一个绝对值,但正如文档所述,它“只是一个提示”。