传感器ACCELEROMETER无法正常工作

时间:2016-03-09 06:51:38

标签: android android-sensors

下面是我在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上的预期效果。这意味着它在屏幕关闭时给出预期的速度值。 提前谢谢。

0 个答案:

没有答案