getRotation 始终返回零

2024-03-13

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

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

getRotation 始终返回零 的相关文章

随机推荐