Android我想获得设备的旋转角度

时间:2012-12-09 17:18:13

标签: android orientation

例如,我启动了应用程序然后设备被90度并排。我想为设备上的每个平面检测此事件。

4 个答案:

答案 0 :(得分:12)

您可以像这样获取屏幕方向(例如在您的onResume()方法中):

private static final int ORIENTATION_0 = 0;
private static final int ORIENTATION_90 = 3;
private static final int ORIENTATION_270 = 1;





Display display = ((WindowManager)
          getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int screenOrientation = display.getRotation();

switch (screenOrientation)
{
default:
case ORIENTATION_0: // Portrait
   // do smth.
break;
case ORIENTATION_90: // Landscape right
   // do smth.
break;
case ORIENTATION_270: // Landscape left
   // do smth.
break;
}

答案 1 :(得分:0)

我认为你必须使用传感器管理器来计算每个点的x,y,z。并使用方程式找出两点之间的角度。考虑你的起点(0,0,0);

答案 2 :(得分:0)

您可以将 OrientationEventListener 用于平面

OrientationEventListener mOrientationListener = new OrientationEventListener(
            getApplicationContext()) {
        @Override
        public void onOrientationChanged(int orientation) {

        }
    };

    if (mOrientationListener.canDetectOrientation()) {
        mOrientationListener.enable();
    }

答案 3 :(得分:-1)

使用SensorManager和TYPE_GYROSCOPE / TYPE_ROTATION_VECTOR / TYPE_ORIENTATION /获取这些值。

查看this page了解详情。