通过模拟器控制台或 ADB 更改 Android 模拟器方向

标签 android console orientation emulation adb

我正在尝试构建一个自动化测试框架,用于检查应用程序应该响应的基本内容,而不会崩溃。其中之一是检查应用程序是否正确响应配置更改。现在,由于它是自动化的,我必须以编程方式在横向和纵向之间切换模拟器的方向,并观察它是否崩溃。 [大写,因为有很多与 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/

相关文章:

Linux守护进程与前台应用程序

console - 无法在谷歌云控制台上创建新项目 - "You must select a parent organization or folder"

ios - 如何阻止 Sprite Kit 使用 iAd 横幅重新初始化场景

纵向和横向的 CSS 移动导航更改

ios - 返回错误的设备方向

java - 如何修复此错误 AAPT2 错误 : check logs for details?

android - 像健身应用程序中的位置跟踪

php - 来自 Controller 的控制台/Symfony 调用命令

android - 如何根据语音命令打开Activity

Android NDK jshortArray 没有宣传的那么长