如何在Android模拟器中模拟加速度计?

45

我现在没有安卓手机。但是在我的应用程序中,我需要使用加速度计数值。如何在模拟环境中实现此功能?

5个回答

38

Android模拟器本身不支持,但OpenIntents的SensorSimulator填补了这个空缺。下载并解压缩zip文件,然后启动独立的jar文件:

$ java -jar bin/sensorsimulator.jar

接下来,使用SDK中提供的adb工具在模拟器上安装SensorSimulatorSettings:

$ adb -s <emulator device> install bin/SensorSimulatorSettings.apk

运行adb devices命令以查找模拟器设备名称。最后,在模拟器中运行已安装的SensorSimulatorSettings应用程序,并输入IP地址10.0.2.2(尽管SensorSimulator应用程序可能会建议其他方式)。这是一个指向开发主机环回设备的别名,因此应始终有效。


3
我已经做了所有的事情,但当我尝试用SensorSimulator控制模拟器的加速度计时,没有任何反应。 - IgorGanapolsky
这是一个可供下载的链接,用于下载zip文件 here,但由于最后一次提交已经是几年前了,我不推荐尝试使用它。 - juhlila

20

最近的模拟器版本支持加速度计和其他传感器模拟功能。您可以通过telnet localhost 5554命令:

尝试连接到 127.0.0.1...
已连接到本地主机。
转义字符为 '^]'。
Android 控制台:键入“help”获取命令列表
OK

sensor
允许您请求模拟器传感器

可用的子命令:
status 列出所有传感器及其状态。
get 获取传感器值
set 设置传感器值

KO:缺少子命令

sensor status
acceleration: enabled.
magnetic-field: enabled.
orientation: enabled.
temperature: enabled.
proximity: enabled.
OK

如何准确模拟摇晃,我不知道。请尝试快速发送以下两个命令:

sensor set acceleration 0:0:0
sensor set acceleration 99:99:99

“adb shell dumpsys sensorservice <>” 可以用于模拟吗? - ransh

6
我也试图让SensorSimulator工作,我想我终于让它工作了。
上述步骤: "...java -jar bin/sensorsimulator.jar

接下来,使用SDK自带的adb工具在模拟器上安装SensorSimulatorSettings: $ adb -s install bin/SensorSimulatorSettings.apk

...最后,在模拟器中运行已安装的SensorSimulatorSettings应用程序并输入IP地址10.0.2.2..."

是一个很好的开始,但我需要做更多的事情。
显然,你需要修改你的应用程序以使用SensorSimulator。你可以访问http://code.google.com/p/openintents/wiki/SensorSimulator并滚动到"How to use the SensorSimulator in your application"部分。
即使这样,我在编译时仍然遇到了一些错误,所以你可能想看看这个页面:Vintage Thermometer component + SensorSimulator on the Android emulator - 我必须删除对android.hardware.Sensor、SensorEvent和SensorEventListener的引用。
然后它在调用connectSimulator时失败了。显然,我需要在清单文件中授予我的应用程序使用Internet的权限。
经过所有这些,我能够使用SensorSimulator虚拟旋转我的手机,并在我的应用程序中获得相应的传感器读数。

1

我发现针对目标10的模拟器不支持加速度计,但是针对目标15的模拟器支持。我不知道是否有办法让目标10也支持加速度计。 因此,在测试您的应用程序时,请创建针对目标15的项目和AVD。


0

我建议您使用Genymotion应用程序,它集成了一个完整的工具,用于测试加速度计并使用更快的模拟器:Genymotion


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接