利用高德地图判断是否模拟定位

实现禁止模拟定位的几种方法,全部是高德地图定位的API
第一种: 可判断手机是否安装了高危位置模拟软件 首次定位可能没有结果
isInstalledHighDangerMockApp()

是否安装了高危位置模拟软件 首次定位可能没有结果

AMapLocationQualityReport 个类下的 isInstalledHighDangerMockApp() 方法,true为已安装,false为未安装,只要安装了,不管是否使用都会返回true,实际需求中,一般不会要求这样判断,对用户来说不太友好,而且这种方法在前几次定位中有可能获取不到结果,不太建议使用。一般使用方法:

AMapLocationClient locationClient = new AMapLocationClient(this.getApplicationContext());
...
locationClient.getLastKnownLocation().getLocationQualityReport().isInstalledHighDangerMockApp()

第二种:禁止模拟定位
setMockEnable(boolean isMockEnable)
设置是否允许模拟位置
3.4.0开始,默认值为true,允许模拟;
3.4.0之前的版本,默认值为false,不允许模拟
AMapLocationClientOption类下的setMockEnable方法,设置成false时,即使使用了模拟定位,获取的地址都是真实地址。
使用方法:

AMapLocationClientOption locationOption = new AMapLocationClientOption();
...
locationOption.setMockEnable(false);
locationClient.setLocationOption(locationOption);

第三种:判断获取的地址是否是模拟地址
此方法在官方文档上没找到,但确实是公共方法(看源码找到的)
AMapLocation类下isMock()方法,true为模拟地址,false为真实地址
使用方法,在定位回调中判断:

 AMapLocationListener locationListener = new AMapLocationListener() {
        @Override
        public void onLocationChanged(AMapLocation location) {
            if (null != location) {
                   ...
                    if (location.isMock()) {//是否是模拟位置
                      //业务操作
                    }
                    ...
            }
        }
}

你可能感兴趣的:(利用高德地图判断是否模拟定位)