java - onSensorChanged() 的频率很奇怪(太快)?

标签 java android android-sensors

当我使用onSensorChanged()测试手机的加速度计时,发现它响应速度很快。几乎每1~3msonSensorChanged()就会被激活。我查了一些其他手机的信息,感觉有点奇怪,所以我怀疑我的代码可能是错误的。这是我的代码的一部分:

   public void onSensorChanged(SensorEvent se_a) { /* 取得x,y,z加速度值 */
    xa = se_a.values[0];
    ya = se_a.values[1];
    za = se_a.values[2];

    final String timeStamp_a = new SimpleDateFormat("HHmmssSSS",
             Locale.UK).format(new Date());

    String tmp_a = "0 " + timeStamp_a + " " + String.valueOf(xa)
    + " " + String.valueOf(ya) + " " + String.valueOf(za) + "\n";

部分结果如下:

0 160106203 9.5385 -0.6895301 1.1109096
0 160106204 9.500193 -0.5746084 1.1109096
0 160106206 9.576807 -0.5746084 1.1875241
0 160106207 9.461885 -0.6895301 1.3024458

我的手机是 LG G2。我将加速度计设置为 SENSOR_DELAY_FASTEST。但是使用google play上的一些应用程序来测试我的加速度计,它显示在SENSOR_DELAY_FASTEST中频率为120Hz,因此发现onSensorChanged()响应如此之快是很奇怪的(1~3毫秒)。我的代码哪里可能有错?请帮助我!

最佳答案

如果使用SENSOR_DELAY_FASTEST更新速率太快,您可以设置另一个适合您需要的标志。

请参阅docs对于您可以使用的不同费率:

The default data delay (SENSOR_DELAY_NORMAL) is suitable for monitoring typical screen orientation changes and uses a delay of 200,000 microseconds. You can specify other data delays, such as SENSOR_DELAY_GAME (20,000 microsecond delay), SENSOR_DELAY_UI (60,000 microsecond delay), or SENSOR_DELAY_FASTEST (0 microsecond!!!! delay). As of Android 3.0 (API Level 11) you can also specify the delay as an absolute value (in microseconds).

编辑:看看这个方法 SensorManager.registerListener(SensorEventListener, Sensor, int)如果没有标志支持您的需求,您可以在其中指定延迟(以毫秒为单位)。自 API 9 起可用。如果您想要特定频率,请将其作为参数提供。

关于java - onSensorChanged() 的频率很奇怪(太快)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23776164/

相关文章:

java - (Spring Boot 2)java.lang.IllegalStateException : Failed to load ApplicationContex

java - AspectJ 构造函数强制工厂模式

Android achartengine,动态改变折线图的点颜色

android - 使用 adb 从损坏的 android 设备中回收传感器

java - 如何设置计步器的步数之间的最短时间?

安卓穿戴: DataItem API vs Channel API

java - getChildNodes() 在 XML 中为我的根返回 NULL

android - 在Android中没有Play商店的自动更新应用程序

android - 如何在 Android 中的位图图像上添加字符串?

java - Java的PriorityQueue构造函数调用和addAll方法的区别