如何检测手机倾斜?

时间:2012-05-01 12:45:45

标签: android rotation tilt

如何确定一个平面中手机方向的角度?

现在我通过SensorManager实现:

mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mOrientation = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

...

public void onSensorChanged(SensorEvent event) {
    xy_angle = event.values[0]; 
    xz_angle = event.values[1]; 
    zy_angle = event.values[2]; 

这里我得到不同的角度,但我只需要一个角度,这个角度随着手机的旋转而变化,同时沿着蓝线行驶。

怎么计算或如何得到这个角度?

http://i.stack.imgur.com/kCElj.jpg

How can I use SensorManager.getOrientation for tilt controls like "My Paper Plane"? - 这里有类似的问题,但我不明白作者如何解决他的问题。

3 个答案:

答案 0 :(得分:2)

您需要的是SensorManager.getOrientation()

答案 1 :(得分:2)

我看到这篇文章有点陈旧,所以现在可能已经回答了,但Sensor.TYPE_ORIENTATION现已弃用,而不是SensorManager.getOrientation()

我已经完成了基本上你正在寻找的内容的全文:http://blog.samsandberg.com/2015/05/10/tilt-for-android/

希望它有助于某人寻找同样的事情!

答案 2 :(得分:0)

该问题的作者通过切换参数顺序解决了他的问题:

 if (SensorManager.getRotationMatrix(m_rotationMatrix, null,
                                    m_lastMagFields, m_lastAccels)) {

为:

if (SensorManager.getRotationMatrix(m_rotationMatrix, null,
                                m_lastAccels, m_lastMagFields)) {