下面是我在android中感知动作的代码:
senSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
senAccelerometer = senSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
senSensorManager.registerListener(this, senAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
Sensor mySensor = sensorEvent.sensor;
if (mySensor.getType() == Sensor.TYPE_ACCELEROMETER) {
float x = sensorEvent.values[0];
float y = sensorEvent.values[1];
float z = sensorEvent.values[2];
long curTime = System.currentTimeMillis();
if ((curTime - lastUpdate) >= 1000) {
long diffTime = (curTime - lastUpdate);
lastUpdate = curTime;
float speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000;
//Log.d("DEBUG", String.valueOf(speed));
Log.d("DEBUG",String.valueof(speed));
}
}
}
此代码在屏幕打开时正常工作。这意味着当屏幕打开时,我在空闲期间获得速度值0-4并且在移动期间获得> 5。但奇怪的是,当屏幕关闭时,速度值起伏太大,有时它就像100 ..有时甚至0设备闲置。我不知道为什么我的加速度计在空闲时屏幕关闭时感应太多。你有什么解决方案吗? N.B我的平板电脑是阿尔卡特Pixi 7;操作系统:lolipop。另外一个重要的事情是这个代码在我的三星Galaxy s6上的预期效果。这意味着它在屏幕关闭时给出预期的速度值。 提前谢谢。