getRotation始终返回零

And*_*Dev 4 android orientation

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

 Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
 int rotation = display.getRotation();
Run Code Online (Sandbox Code Playgroud)

And*_*Dev 8

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

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

必须启用此功能.在我的设备上它已被禁用.尽管如此,getRotation上的Android文档不仅没有指出这一点,甚至还假设即使没有UI,getRotation也会返回旋转.你需要一个UI.这当然是类似于没有UI但需要知道设备方向的服务的问题,其目的与用户交互无关.就我个人而言,我一直很生气,因为招聘那些认为访问硬件功能几乎总是需要某种UI的业余程序员.许多场合都出现了这种问题,比如必须使用SurfaceView来录制视频.

最后,应用程序显然不需要getRotation来确定设备是旋转0度,90度,180度还是270度.在自动旋转屏幕关闭的情况下,默认的相机应用程序仍然可以计算出角度旋转,因此它不能来自getRotation,除非它能够以某种方式启用自动旋转屏幕设置.