【问题标题】:How can I get a notification when my device changes orientation to portrait upside down (180 degrees)?当我的设备将方向更改为纵向倒置(180 度)时,如何获得通知?
【发布时间】:2014-02-12 19:29:02
【问题描述】:

当我的设备旋转 180 度时,我需要激活一些东西(getRotation() 应该返回 2)。但是,我阅读的帖子仅说 0、90 和 270 度是收到通知的唯一角度。这个设备是特定的吗? 什么设备返回 2?

【问题讨论】:

  • 只对180度感兴趣,还是风景检测能解决你的问题?
  • 我现在和以前的手机都没有倒置肖像,所以我猜是设备特定的。

标签: java android android-layout android-orientation android-screen


【解决方案1】:

每当您旋转您的设备时,您的活动的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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多