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

实现禁止模拟定位的几种方法,全部是高德地图定位的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()) {//是否是模拟位置
                      //业务操作
                    }
                    ...
            }
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值