下面是一个简单的例子,这将返回重力的载体。请注意,你可以改变传感器类型和采样的速度,更多的细节here
SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
double total = Math.sqrt(x * x + y * y + z * z);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}, sensor, SensorManager.SENSOR_DELAY_FASTEST);
谢谢你的答案:)你的解决方案听起来值得尝试。那我可以直接使用从android API获得的旋转矩阵吗?遗憾的是,我不知道3D是如何工作的,因此我无法弄清楚是否需要在“纯”旋转矩阵上进行某些操作。 – 2011-04-09 04:26:33
这取决于你如何做你的旋转。我从未使用Android。如果你使用OpenGL进行轮播(我猜你是这样做的),你可能需要添加几个零和一个,从41:58在youtube视频中看到。但除此之外,“纯粹”旋转矩阵就足够了。祝你好运! – Ali 2011-04-09 11:14:20
你能否举一个例子说明如何使用旋转矩阵而不用欧拉角?我似乎无法弄清楚^^ – 2012-05-18 14:42:14