使用DDMS emulator控件将欺骗位置发送到平板电脑android设备
我想测试我在android平板电脑上开发的GPS应用程序,所以我需要使用DDMS从KML文件向它发送欺骗位置。我想使用物理设备,而不是模拟器 问题是,当我在设备视图中选择我的外部设备(正在运行的应用程序进程)时,DDMS中的Emulator控制部分被禁用(灰显)。如果选择emulator,则emulator控件显示为已启用,但与物理设备无关 我的申请表有使用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
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
我的物理平板电脑配置有:
- USB调试
- 允许模拟位置
非常感谢您提供您可以使用的简单
欺骗
,但正如您在问题中所说的,您希望从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">
资料来源: -有关清单权限和使用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);
}