我无法找到达到重力值本身的方法,只能找到不接近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。 有人可以解释一下我错过了什么吗? 感谢