当我使用onSensorChanged()
测试手机的加速度计时,发现它的响应速度很快。几乎每1〜3ms onSensorChanged()
将被激活。我搜索其他手机的信息感觉有点奇怪,因此我怀疑自己的代码可能是错误的。这是我的代码的一部分:
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〜3ms)非常奇怪。我的代码在哪里可能会出错?请帮我! 最佳答案
如果要使用SENSOR_DELAY_FASTEST
快速更新,则可以设置另一个适合您需要的标志。
有关可使用的不同费率,请参见docs:
默认数据延迟(SENSOR_DELAY_NORMAL)适用于
监控典型的屏幕方向变化并使用延迟
200,000微秒。您可以指定其他数据延迟,例如SENSOR_DELAY_GAME(20,000微秒延迟),SENSOR_DELAY_UI
(延迟60,000微秒),或SENSOR_DELAY_FASTEST(0
微秒!!!延迟)。从Android 3.0(API级别11)开始,您可以
还可以将延迟指定为绝对值(以微秒为单位)。
编辑:看看此方法SensorManager.registerListener(SensorEventListener, Sensor, int),如果没有标志支持您的需求,您可以在其中指定延迟(以毫秒为单位)。从API 9开始可用。如果要特定的频率,请将其作为参数提供。