Sensor.TYPE_GRAVITY - 有没有办法获得重力值(9.8)?

时间:2017-04-13 10:18:33

标签: android accelerometer android-sensors

我无法找到达到重力值本身的方法,只能找到不接近9.8的x,y,z值。 可能我错过了什么。 我想做一些简单的事情 - 在TextView中显示重力值。

在onCreate()方法的主要活动中我有:

gravityView = (TextView) findViewById(R.id.gravity);
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
sensorGravity =  mSensorManager.getSensorList(Sensor.TYPE_GRAVITY).get(0);
mSensorManager.registerListener(this, sensorGravity, SensorManager.SENSOR_DELAY_GAME);

然后我重写onSensorChanged方法:

    @Override
    public void onSensorChanged(SensorEvent event) {
        switch (event.sensor.getType()){
             case Sensor.TYPE_GRAVITY:

                float alpha = 0.8f;
                float x, y, z;

                gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
                gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
                gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];

                x = event.values[0] - gravity[0];
                y = event.values[1] - gravity[1];
                z = event.values[2] - gravity[2];

                double gravity = Math.sqrt( Math.pow(x,2) + Math.pow(y,2) + Math.pow(z, 2));
                gravityView.setText("GRAVITY= " + gravity + "\n" + x + "\n " +  y + "\n " + z );

                break;
          }
    }

但重力,x,y和z的值不接近9.8。 有人可以解释一下我错过了什么吗? 感谢

0 个答案:

没有答案