使用DDMS emulator控件将欺骗位置发送到平板电脑android设备

使用DDMS emulator控件将欺骗位置发送到平板电脑android设备,android,android-emulator,gps,ddms,Android,Android Emulator,Gps,Ddms,我想测试我在android平板电脑上开发的GPS应用程序,所以我需要使用DDMS从KML文件向它发送欺骗位置。我想使用物理设备,而不是模拟器 问题是,当我在设备视图中选择我的外部设备(正在运行的应用程序进程)时,DDMS中的Emulator控制部分被禁用(灰显)。如果选择emulator,则emulator控件显示为已启用,但与物理设备无关 我的申请表有 <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATI

我想测试我在android平板电脑上开发的GPS应用程序,所以我需要使用DDMS从KML文件向它发送欺骗位置。我想使用物理设备,而不是模拟器

问题是,当我在设备视图中选择我的外部设备(正在运行的应用程序进程)时,DDMS中的Emulator控制部分被禁用(灰显)。如果选择emulator,则emulator控件显示为已启用,但与物理设备无关

我的申请表有

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

我的物理平板电脑配置有:

  • USB调试
  • 允许模拟位置
我使用的是SDK r20,我的平板电脑有android 4.0.3

有什么想法吗


非常感谢您提供您可以使用的简单
欺骗
,但正如您在问题中所说的,您希望从
KML
文件中获得
欺骗
位置,因此您必须购买我已经拼凑出了此问题的解决方案

  • 转到设置->应用程序->开发并选择“允许模拟位置

  • 添加对AndroidManifest.xml的访问权限:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android">
    
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION">
    
注意:无论设备或清单权限如何,都无法从DDMS->Emulator Control->Location Control向真实设备发送模拟位置,这是错误建议的


资料来源:

-有关清单权限和使用telnet命令行、链接和代码段的替代解决方案的信息

-更详细,包含一些死链接


-Android官方文档

我曾广泛使用GPS应用程序,但从未成功将模拟位置从DDMS发送到物理设备。相反,我将KML(或其他文件格式)添加到了应用程序资源中,并编写了一个解析器从文件中读取数据,并将其插入到我的应用程序中,以代替位置更新以进行测试。感谢您的回复。我在想你的想法。你知道我可以用什么例子吗?谢谢。我测试了这个pro版本,似乎没有很好地阅读我用上一个版本的Google Earth创建的一个小KML文件。我不确定KML文件是否有不同的版本,因此,该应用程序可能存在兼容性问题。不客气,我从未测试过专业版,只需阅读一次说明,我看到了您的问题,认为它可能会对您有所帮助,因此我与您共享了该应用程序。我也测试了该应用程序的KML路由,但现在我使用的KML文件存在问题。开发人员说我正在完成一个新的更正版本。好的,但现在你可以通过在spoofer中输入lat lon来测试你的应用程序。我阅读了一些教程,发现如果你在某个特定KML文件上遇到问题,请确保它有以下内容:。我说的,已经更新,修复了KML文件的最后一个问题。我用最后一个版本的Google Earth创建的一个小KML文件测试了最后一个版本,结果是成功的。我可以模拟整个路线。非常感谢你的帮助。
// start using mock locations
try {
   mockLocationCreator = new MockLocationCreator(this.getApplicationContext());
   try {
       mockLocationCreator.openLocationList();

       mockLocationThread = new Thread(mockLocationCreator);
       mockLocationThread.start();

       Toast.makeText(this.getApplicationContext(), 
                      "Mock locations are in use", 
                      Toast.LENGTH_LONG)
            .show();

   } catch (IOException e) {
       Toast.makeText(this.getApplicationContext(), 
                      "Error: Unable to open / read data file", 
                      Toast.LENGTH_LONG)
            .show();
       mockLocationCreator = null;
   }
} catch(SecurityException e) {
   Toast.makeText(this.getApplicationContext(), 
                  "Error: Insufficient Privileges", 
                   Toast.LENGTH_LONG)
        .show();
   Log.e(TAG, "unable to use mock locations, insufficient privileges", e);
}