getRotation
无论屏幕朝向哪种方式,始终返回零。我在运行 2.3 的真实设备上运行它。有什么理由吗?
Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
getRotation
无论屏幕朝向哪种方式,始终返回零。我在运行 2.3 的真实设备上运行它。有什么理由吗?
Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
getRotation 仅在应用程序具有 UI 并且允许 UI 旋转时才有效。操作系统有一个设置可以防止任何应用程序自动旋转:
设置 > 显示 > 自动旋转屏幕
这必须启用。在我的设备上它被禁用了。然而,关于 getRotation 的 Android 文档不仅没有指出这一点,甚至还假设 getRotation 即使没有 UI 也会返回旋转。你需要一个用户界面。对于没有 UI 但需要知道设备的方向以实现与用户交互无关的目的的服务,这当然是一个问题。就个人而言,我一直对谷歌雇佣业余程序员感到恼火,他们认为访问硬件功能几乎总是需要某种 UI。这种问题在很多场合都会出现,比如必须有一个 SurfaceView 才能录制视频。
最后,应用程序显然不需要 getRotation 来确定设备是否旋转了 0、90、180 或 270 度。关闭自动旋转屏幕后,默认相机应用程序仍然能够计算出角度旋转,因此它不能来自 getRotation,除非它能够以某种方式打开自动旋转屏幕设置。