每当您旋转您的设备时,您的活动的onCreate() 方法就会被调用,因此您可以通过调用您的活动的onCreate() 来找到您的设备的旋转:
getWindowManager().getDefaultDisplay().getRotation();
但是,它不会检测旋转常数 2。根据 API,未指定是方向的默认值:
默认值。系统选择方向。它的政策
用途,因此在特定情况下做出的选择可能会有所不同
从设备到设备。
我猜screenOrientation:unspecified 不会检测到所有 4 个角度。从 API 我们还可以看到几个选项,其中之一是“fullsensor”,并且 api 状态:
方向由设备方向传感器确定
4个方向。这类似于“传感器”,除了它允许
4 种可能的屏幕方向中的任何一种,无论是什么
设备通常会这样做(例如,某些设备通常不会使用
反向纵向或反向横向,但这启用了这些)。添加
在 API 级别 9 中。
所以要解决这个问题,请转到您的清单文件并为您的活动添加屏幕方向,如下所示:
<activity
android:name="com.example.androidactivitystart.ActivityA"
android:label="@string/app_name"
android:screenOrientation="fullSensor" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
现在,当您调用 getWindowManager().getDefaultDisplay().getRotation(); 时,它会检测所有角度,这是我运行的试验的 logCat 输出:
02-12 19:45:30.065:D/cenas(26085):开始时调用:1
02-12 19:45:31.433:D/cenas(26085):开始调用:0
02-12 19:45:32.678:D/cenas(26085):开始调用:3
02-12 19:45:34.356:D/cenas(26085):开始调用:2
如您所见,检测到了所有 4 个可能的角度。显然不适用于Android版本低于
如果您需要其他内容,请链接到 API:http://developer.android.com/guide/topics/manifest/activity-element.html#screen