android - getRotation 始终返回零

标签 android orientation

getRotation 始终返回零,无论屏幕朝向哪个方向。我在运行 2.3 的真实设备上运行它。有什么理由吗?

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

最佳答案

getRotation 仅在应用具有 UI 并且允许 UI 旋转时才有效。操作系统有一个设置可以防止任何应用程序自动旋转:

设置 > 显示 > 自动旋转屏幕

这必须启用。在我的设备上它被禁用了。尽管如此,有关 getRotation 的 Android 文档不仅没有指出这一点,甚至还假设即使没有 UI,getRotation 也会返回旋转。你需要一个用户界面。对于没有 UI 但出于与用户交互无关的目的需要知道设备方向的服务之类的服务,这当然是一个问题。就个人而言,我一直被谷歌激怒,因为谷歌雇佣了业余程序员,他们认为访问硬件功能几乎总是需要某种用户界面。这种问题在很多场合都出现过,比如必须有一个 SurfaceView 才能录制视频。

最后,应用程序显然不需要 getRotation 来确定设备是否旋转了 0、90、180 或 270 度。关闭自动旋转屏幕后,默认相机应用程序仍然能够计算出角度旋转,因此它不能来自 getRotation,除非它能够以某种方式打开自动旋转屏幕设置。

关于android - getRotation 始终返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14626066/

相关文章:

android - 如何在终端中使用不同的 SIGN 凭据构建 apk

android - 如何在 View 层次结构中使用点击事件

android - 如何在没有颜色资源的情况下更改 SwipeRefreshLayout 进度背景颜色?

ios - 如何在 iPhone 中以纵向/横向锁定屏幕?

android - 如何使用搜索栏在 ListView 中获取建议

android - 如何在可通过 USB 访问的外部存储中创建文件/文件夹?

Android:如何在方向更改时保存自定义手指绘画 View

java - 获取手机的实际方向

iphone - 支持多界面,但主屏幕只有单一界面,在 iOS8 + iPhone 中不工作

html - 如何在 CSS 上确定 android 的大小以使其适合屏幕