我正在尝试构建一个自动化测试框架,用于检查应用程序应该响应的基本内容,而不会崩溃。其中之一是检查应用程序是否正确响应配置更改。现在,由于它是自动化的,我必须以编程方式在横向和纵向之间切换模拟器的方向,并观察它是否崩溃。 [大写,因为有很多与 ctrl+F12 或数字键盘 7 相关的问题]
我正在尝试找出 adb 或模拟器控制台命令来完成此操作。
我远程登录到 localhost:5554 并输入以下命令:
$sensor status // gives the enabled/disabled status of all sensors
acceleration: enabled.
magnetic-field: enabled.
orientation: enabled.
temperature: enabled.
proximity: enabled.
OK
$sensor get orientation
orientation = 0:0:0
$sensor set orientation 90:0:0
OK
我尝试了不同的组合,但没有响应。为了获取横向模式下设置的值,我使用 ctrl+F12 手动更改方向,并尝试再次获取方向传感器状态,令我沮丧的是,该值没有改变。
A certain blog also mentioned this particular command in ADB
$service call window 18 i32 1
$service call window 18 i32 0
用于切换方向。但是,我收到此错误消息
Result: Parcel(fffffffc ffffffff '........')
如果我能找到解决方案,那就太好了。
最佳答案
终于我找到了一个办法。
首先我会尝试澄清一下这个问题:
通常人们谈论“旋转”AVD 屏幕实际上意味着将皮肤布局更改为纵向/横向(模仿平板电脑的旋转)。这可以通过按数字键盘上的“7/9”键或按 ctrl+Fn+F12 来完成。在这种情况下,显示的方向不会改变,有时显示会是烦人的从左到右或从右到左,而不是自然的从上到下。这可以通过在 android 设置中取消选中自动旋转来解决。
但是,在某些情况下我们希望看到重力传感器的效果。我认为这实际上与OP的问题有关。与 GPS 不同,Eclipse 没有 GUI 工具可以执行此操作。 OP非常接近解决问题。然而,方向传感器并不正确,我们需要使用重力/加速度传感器来自动旋转屏幕。 尝试以下命令并观察自动旋转打开时的显示方向:
sensor set acceleration 9.77622:0:0
sensor set acceleration 0:9.77622:0
sensor set acceleration 0:0:9.77622
关于通过模拟器控制台或 ADB 更改 Android 模拟器方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11184503/