首页 > 解决方案 > 模拟物理设备旋转

问题描述

我想模拟 Android 设备的物理旋转。我在编写一些测试(仪器测试或 Robolectric 测试)时需要它。

我尝试了几种方法来做到这一点,但似乎都没有按预期工作。

  1. Activity.setRequestedOrientation()

这会导致 Activity 被销毁然后重新创建。

设备旋转时不会重新创建具有锁定方向的 Activity,并且我的一个测试对具有锁定方向的 Activity 进行操作,因此使用这种方法不起作用。

  1. UiDevice.setOrientation*()

这对具有锁定方向的正在运行的 Activity 具有与上述方法类似的效果。所以这种方法也行不通。

  1. UiAutomation.setRotation()

与(1)和(2)类似的结果。

  1. ShadowSensorManager.sendSensorEventToListeners(sensorEvent)

我曾经ShadowSensorManager写过一个 Robolectric 测试,我明确地改变了传感器的方向。我认为这会触发/模拟物理设备旋转,但事实并非如此。在具有解锁方向的 Activity 上使用这种方法不会导致它被销毁然后重新创建。

我觉得我缺少一个简单的解决方案,这似乎是 Android 中的一个常见问题。任何帮助,将不胜感激。

标签: androidui-automationrobolectricandroid-instrumentation

解决方案


推荐阅读