通过DDMS在Android设备上模拟虚拟位置

12

我正在开发一款适用于Android 2.3.3的GPS导航应用程序,并尝试通过DDMS使用GPX文件来模拟位置。虽然这在Android模拟器上完美运行,但我无法在实际设备上运行。

我能够在“设备”选项卡下看到设备,但是由于“仿真控制”选项卡下的选项被灰显,因此无法发送任何模拟位置数据或GPX数据。

我注意到StackOverflow上以前的问题提到这是不可能的,然而Google文档《使用DDMS》- http://developer.android.com/tools/debugging/ddms.html 在页面底部声明:

  

设置手机位置      

如果您的应用程序依赖于手机位置,则可以让DDMS发送mock location到您的设备或AVD。如果您希望测试应用程序位置特定功能的不同方面而不进行物理移动,则此功能非常有用。以下地理位置数据类型可供您选择:

我只想知道如何通过DDMS向设备发送虚假位置数据。

非常感谢您的帮助。


在我的手机中,开发人员选项中有一个配置可以接受模拟位置。我不知道你的手机是否有这个功能,但如果有的话,请尝试启用它。 - Yury
@Yury:感谢您的及时回复。我已经设置了该配置,以及ACCESS_MOCK_LOCATION权限。根据我所听到/阅读的内容,它只允许您使用setTestProviderLocation(..)方法从应用程序本身创建模拟位置(我可能是错误的)。 - Bilzac
2个回答

12

Bilzac,你的理解是正确的。简单来说,Android的文档是误导人的。许多开发者因此感到困惑。与文档所示的相反,你不能像在模拟器上那样加载gpx文件并发送到设备。


4
如果您在设备上激活模拟位置,则可以实现。然后将ACCESS_MOCK_LOCATION权限添加到您的清单中。
您现在可以编写自己的MockLocationManager来生成模拟位置。
最简单的方法是使用一个为您生成模拟位置的应用程序。 GPS路线模拟器 运行得相当不错。可以在sdCard上存储kml文件或定义自己的路线。

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