手机传感器问题(onSensorChanged)
我写了个获取手机重力感应的小程序
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);// TYPE_GRAVITY
if (null == mSensorManager) {
Log.d(TAG, "deveice not support SensorManager");
}
mSensorManager.registerListener(this, mSensor,
SensorManager.SENSOR_DELAY_NORMAL);/
在注册SensorManager 检测精度用的SENSOR_DELAY_NORMAL 我查看延迟时间应该是200MS也就是0.2秒
在onSensorChanged 方法里 获取重力数值XYZ
public void onSensorChanged(SensorEvent event) {
if (event.sensor == null) {
return;
}
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
int x = (int) event.values[0];
int y = (int) event.values[1];
int z = (int) event.values[2];
}
}
我统计onSensorChanged 里运行的次数 和时间 发现 onSensorChanged的运行频率远大于上边注册的0.2秒
按理说onSensorChanged 里边应该1秒钟运行5次,可实际运行了几十次。
这是什么原因。
mSensorManager.registerListener(this, mSensor,
SensorManager.SENSOR_DELAY_NORMAL);/
为什么不起作用
还是我理解错误。延迟调用时间是隔0.2秒调用一次,而调用的是一组数据吗?只要传感器发生改变就会运行onSensorChanged吗?