使用setRequestedOrientation了解何时完成旋转

use*_*907 6 android rotation

我正在尝试编写一个.apk来测量旋转Android设备屏幕所需的时间(循环几次旋转).

我使用的调用setRequestedOrientation()来reoriente在4个位置的屏幕(PORTRAIT,LANDSCAPE,REVERSE_PORTRAITREVERSE_LANDSCAPE).

我的问题是我无法分辨轮换结束的时间.我尝试了一些解决方案,但每个解决方案都存在问题.

  1. 我试着用onConfigurationChanged().问题是当方向改变从传感器发生时,此方法被触发,而不是从setRequestedOrientation().其实,我调用setRequestedOrientation()FULL_SENSOR参数onConfigurationChanged我以前的呼吁后工作setRequestedOrientation().
  2. 我尝试setRequestedOrientation()通过添加while循环来检查屏幕方向(以度为单位)来进行"阻塞".android.view.Display.getRotation()之前我打过电话setRequestedOrientation()并用while循环阻塞,直到它发生了变化.不幸的是,它也不起作用.它在重新显示UI之前返回.
  3. 我试图通过等待onCreate()再次调用来跟随活动的生命周期,以假设旋转已完成.以前,我正在循环,直到我的计数器达到一个值,在每次迭代调用setRequestedOrientation().在这种情况下,我的while循环变为if语句,并且我假设onCreate每次都会调用该函数,但是onCreate()在几次迭代后不会调用它.用户界面似乎也没有重新绘制.
  4. 我在网上找到的最终解决方案(但还没有完全实现)就是立即使用该waitForIdleSync()方法setRequestedOrientation().waitForIdleSync()是Instrumentation类的一部分,我认为这只是用于测试而不是标准的.apk.

任何想法都会非常受欢迎.我将衷心感谢您的帮助.

Eya*_*sha 0

您应该尝试使用: http://developer.android.com/reference/android/view/OrientationEventListener.html

您需要首先调用enable(),然后您会收到设备发生的每次旋转更改的通知。