Android系统中提供了模拟GPS坐标的功能,可以很方便的帮助我们测试不同地理位置下应用中各个功能效果。
模拟器中模拟位置方法
模拟器与真机中的模拟手段有所差异,在模拟器中,可以通过Android的调试工具,或是命令行来修改GPS坐标点。
首先通过adb命令的修改方法:
adb geo fix 116.813752 39.820015
注意如果链接了多个设备,adb命令需要添加-s参数指定模拟器设备。
同样原理,可以使用Android SDK中的DDMS工具来修改GPS坐标;打开DDMS,可以看到Emulator面板中的GPS设置选项,
当打开模拟器运行时,这里就会变成可操作状态。
对于第三方模拟器,Genymotion也提供了这样的功能。不仅可以通过GenyMotion虚拟机的控制面板调节GPS参数(截图略),还可以通过Genymotion提供的Java API修改坐标点:
Context mContext = getActivity();
GenymotionManager genymotion = GenymotionManager.getGenymotionManager(mContext);
genymotion.getGps()
.setLatitude(39.820015)
.setLongitude(116.813752);
真机中模拟位置方法
真机中模拟GPS位置的方法稍复杂一点。
首先,需要到系统设置中“开发者选项”处,将其中的“允许模拟位置”打开。
然后我们需要编写一个简单的APP,来通过系统API修改GPS坐标值。
这涉及了一个权限:
在Eclipse环境下,直接修改AndroidManifest即可;
在Android Studio环境下,需要建立src/debug这个文件夹,然后在里面创建一个debug版本的AndroidManifest.xml文件,才能添加这个权限。
然后来编写代码:
在LocationManager中,提供了一个接口