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

Android我想获取设备的旋转角度,android,orientation,Android,Orientation,例如,我启动了应用程序,然后将设备并排旋转90度。我想为设备上的每个平面检测此事件。您可以获得如下屏幕方向(例如在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)

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

您可以获得如下屏幕方向(例如在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;
}

使用传感器管理器和类型\陀螺仪/类型\旋转\矢量/类型\方向/获取这些值


查看详细信息。

我认为您必须使用传感器管理器来计算每个点的x、y、z。并用方程求两点之间的夹角。考虑你的起始点(0,0,0); 您可以对平面使用方向EventListener

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

        }
    };

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

谢谢,但我想得到电话的X,Y,Z平面。这是Z平面的解决方案。它不包括其他平面。如果要检查所有3个平面,则可以注册SensorEventListener并在其“onSensorChanged(SensorEvent)”方法中检索值。有关更多详细信息,请查看此处:此处发布解决方案而非链接,此链接可能在将来被破坏,例如,下面的答案请添加一个与其他答案类似的适当解决方案。请查看此链接