美文网首页
利用高德地图判断是否模拟定位

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

作者: CoolKin | 来源:发表于2022-01-26 16:43 被阅读0次

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

    相关文章

      网友评论

          本文标题:利用高德地图判断是否模拟定位

          本文链接:https://www.haomeiwen.com/subject/qlmnhrtx.html