我想测试我在我的Android平板电脑开发GPS应用程序,所以我需要使用DDMS它KML文件加载发送给它恶搞的位置。 我想用一个物理设备,而不是模拟器。
的问题是,在DDMS模拟器控制部分被禁用(变灰)当我选择中的设备视图我的外部装置(该应用过程正在运行)。 insted的,如果我选择了仿真器,则仿真器控件显示启用,但不与物理设备。
我的一个应用有
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
而我的身体平板电脑配置有:
我使用的SDK R20和我的平板电脑运行的是Android 4.0.3。
有任何想法吗?
非常感谢你
我拼凑起来解决这个问题。
进入设置- >应用程序- >开发 ,选择“ 允许模拟地点 ”。
ACCESS_MOCK_LOCATION许可加入的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">
实现它使用一类的LocationManager .addTestProvider()函数。 这将指示它应该使用的数据从一个文件来构建新的位置对象的应用程序。
新位置然后可以使用LocationManager.setTestProviderLocation()函数创建。
// 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); }
注意:这是不可能的模拟地点从DDMS-发送到真实设备>模拟器控制- >位置,无论设备或舱单的权限控制是被错误地认为这里 。
资料来源:
在设备上的Android模拟位置? - 有关清单权限和替代的解决方案使用telnet命令线,链接和代码段的信息。
在Android中使用模拟位置 -更详细,包含了一些死链接。
的LocationManager文档 -官方Android文档
对于简单的spoofing
,你可以使用这个免费的版本,但是当你在你的问题说你想spoof
从位置KML
文件,你必须购买专业版