我正在使用 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 。我还没有在真实设备上进行过测试。有没有什么设置可以控制它。
该方法的命名非常糟糕。
From 安卓文档 https://developer.android.com/reference/android/hardware/SensorEventListener.html#onSensorChanged for onSensorChanged
:
当有新的传感器事件时调用。请注意,“更改时”是
有点用词不当,因为如果我们有一个新的,也会这样称呼
从具有完全相同传感器值的传感器读取(但更新的
时间戳)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)