问题:我们是一个海外app,市场部去马来西亚打开那边的市场,发现了一个问题,就是我们的app定位有问题,还是成都的定位,主要原因是在马来西亚使用这个app,请求中带的经纬度参数是成都的,导致服务器返回了成都的定位。
一、Android定位方式
Android常用的三种定位方式有:基于GPS定位、基于基站定位、基于wifi定位
1)基于GPS定位
GPS定位需要GPS模块(硬件)的支持,没有GPS模块是无法进行GPS定位的。
GPS定位最大的优点就是其定位精确度高;缺点就是耗电高、定位慢、室内和地下室基本定位不到。
2)基于基站定位
根据采集到手机所处基站信息和手机相关信息(MNC、MCC、LAC)进行定位,基站定位最大的优点就是:定位速度快,缺点就是:定位精度稍微较差,无网络信号不能使用。
3)基于wifi定位:
和基站定位类似,根据当前设备获取的wifi信息来进行定位。
可以从Androidmanifest.xml查看程序优先使用的定位方式:
android.permission.ACCESS_FINE_LOCATION → GPS定位
android.permission.ACCESS_COARSE_LOCATION → 网络定位
二、Android应用定位原理
LocationManager是用于管理Android的用户定位服务,使用它来监听获取当前的位置信息并定义要返回的信息,如经纬度、方位等
注意点:
1、如果程序拥有打开GPS的权限,用户设置关闭GPS后但又获取位置的需求则会自动打开GPS来进行定位,定位后会自动关闭GPS;
2、定位时一定要设置超时时间,要不然遇到定位不到的情况则会一直卡在定位上还无法退出使用其他功能;
3、如果超时可以上一次定位的位置(LocationManager有方法可以得到上次定位的位置),如果上次定位位置为空则提示用户定位失败。
三、测定位时该从哪些角度考虑
1、检查三种定位方式定位是否能成功,定位精度准确且无报错;
2、三种定位正交组合,检查定位功能和定位精度;
3、程序有打开GPS权限时,关闭网络和GPS,检查能否定位和定位精度;
4、定位失败的两种处理情况(失败提示和是否返回上一次位置);
5、定位过程中与来电、短彩信、蓝牙的冲突;
6、定位过程中与功能键交互;
7、不同网络环境(移动、联通、电信中3G/2G)下的定位速度和精度;
8、不同环境(室内、室外、电梯)的定位和精度;
9、本地测试外地定位(DDMS模拟)
特别是第9点,我这次就是坑了,没测试到