我正在使用ACCELEROMETER传感器,并已通过为其注册了一个侦听器

mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mAcceleratorSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    mSensorManager.registerListener(this, mAcceleratorSensor , SensorManager.SENSOR_DELAY_NORMAL);


这就是我的onSensorChanged的样子

@Override
public final void onSensorChanged(SensorEvent event) {
    int sensorType = event.sensor.getType();
    switch(sensorType){
        case Sensor.TYPE_ACCELEROMETER:
            float valueX = event.values[0];
            float valueY = event.values[1];
            float valueZ = event.values[2];
            Log.d(TAG, "Sensor Changed value:"+valueX+":"+valueY+":"+valueZ);
            break;

    }


但是,这就是我在日志中看到的

01-12 02:01:18.063 19691-19691/com.taxis.locationupdates2 D/LocationActivity: Sensor Changed value:2.0:2.0:2.0
01-12 02:01:18.129 19691-19691/com.taxis.locationupdates2 D/LocationActivity: Sensor Changed value:2.0:2.0:2.0


即使值没有变化,它也会无限循环地调用onSensorChanged。我还没有用真正的设备对其进行过测试。是否有任何设置可以控制相同。

最佳答案

该方法的命名很差。

the android docsonSensorChanged


  发生新的传感器事件时调用。请注意,“更改后”是
  有点用词不当,因为如果我们有一个新的
  从具有完全相同的传感器值的传感器读取(但较新
  时间戳记)。

10-05 18:28