setRequestedOrientation

setRequestedOrientation

我正在尝试编写一个.apk来测量一个android设备的屏幕旋转需要多长时间(通过几个旋转循环)。
我正在使用调用setRequestedOrientation()将屏幕重新定向到4个位置(PORTRAITLANDSCAPEREVERSE_PORTRAITREVERSE_LANDSCAPE)。
我的问题是我不知道什么时候轮换结束。我试过一些解决办法,但每个都有自己的问题。
我试图使用onConfigurationChanged()。问题是,这种方法是在传感器发生方向变化时触发的,而不是从setRequestedOrientation()触发的。实际上,在上一次调用setRequestedOrientation()之后,我必须使用FULL_SENSOR参数调用onConfigurationChanged才能工作。
我试着通过添加while循环来检查屏幕方向(以度为单位),使setRequestedOrientation()有点“阻塞”。我在setRequestedOrientation()之前调用了android.view.Display.getRotation(),并用while循环阻塞,直到它改变为止。不幸的是,它也不起作用。它在用户界面重新显示之前返回。
我试图通过等待再次调用setRequestedOrientation()来跟踪活动的生命周期,以假设已完成旋转。以前,我一直循环直到计数器达到一个值,每次迭代都调用onCreate()。在这个场景中,while循环变成一个if语句,我假设setRequestedOrientation()每次都会调用函数,但是经过两次迭代之后onCreate不会被调用。用户界面似乎也没有重新绘制。
我在网上找到的最后一个解决方案(但还没有完全实现)是在onCreate()之后立即使用waitForIdleSync()方法。setRequestedOrientation()是instrumentation类的一部分,我认为这只是为了测试而不是标准的.apk。
任何想法都是非常受欢迎的。我非常感谢你的帮助。

最佳答案

您应该尝试使用:
http://developer.android.com/reference/android/view/OrientationEventListener.html
您需要先调用enable(),然后在设备发生每次旋转更改时收到通知。

07-27 13:27