android定位sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
防定位作弊
下载开发文档
简介

挖掘各类模拟定位方式对百度定位sdk内部信息的影响特征,综合多源数据信息,有效识别模拟卫星定位结果,为签到、运动、出行、游戏等场景的位置真实性提供有力保障。
在签到类场景中,如果设置了单次定位setoncelocation(true),则不会返回卫星定位结果,不需进行防定位作弊配置。

防定位作弊配置具体步骤如下:

1. 第一步,准备工作

在使用定位sdk进行具体开发工作之前,需, 并对开发工程进行环境配置工作。详细介绍请参考项目创建部分的说明。 此外, google在android 6.0中引入了动态权限获取机制,开发者在使用定位sdk之前, 请详细了解关于android 6.0系统开发须知。

2. 第二步,初始化locationclient类

请在主线程中声明locationclient类对象,该对象初始化需传入context类型参数。 推荐使用getapplicationconext()方法获取全进程有效的context。
核心代码段如下:

public locationclient mlocationclient = null;
private mylocationlistener mylistener = new mylocationlistener();
//bdabstractlocationlistener为7.2版本新增的abstract类型的监听接口
//原有bdlocationlistener接口暂时同步保留。具体介绍请参考后文中的说明
public voidoncreate(){
mlocationclient = new locationclient(getapplicationcontext());
//声明locationclient类
mlocationclient.registerlocationlistener(mylistener);
//注册监听函数
}
3. 第三步,配置定位sdk参数

要实现定位防作弊功能,需要利用locationclientoption类配置定位sdk参数。
核心代码及注释说明如下:

locationclientoption option = new locationclientoption();
option.setscanspan(1000);
//可选,设置发起定位请求的间隔,int类型,单位ms
//如果设置为0,则代表单次定位,即仅定位一次,默认为0
option.setopengnss(true);
//可选,设置是否使用卫星定位,默认false
//使用高精度和仅用设备两种定位模式的,参数必须设置为true
option.setcoortype("bd09ll");
//可选,设置返回经纬度坐标类型,默认gcj02
//gcj02:国测局坐标;
//bd09ll:百度经纬度坐标;
//bd09:百度墨卡托坐标;
//海外地区定位,无需设置坐标类型,统一返回wgs84类型坐标
option.setenablesimulategnss(false);
//可选,设置是否需要过滤卫星定位仿真结果,默认需要,即参数为false
mlocationclient.setlocoption(option);
//mlocationclient为第二步初始化过的locationclient对象
//需将配置好的locationclientoption对象,通过setlocoption方法传递给locationclient对象使用
//更多locationclientoption的配置,请参照类参考中locationclientoption类的详细说明
4. 第四步,实现bdabstractlocationlistener接口

android定位sdk自v7.2版本起,对外提供了abstract类型的监听接口bdabstractlocationlistener, 用于实现定位监听。原有bdlocationlistener暂时保留, 推荐开发者升级到abstract类型的新监听接口使用, 该接口会异步获取定位结果,核心代码如下:

public class mylocationlistener extends bdabstractlocationlistener{
@override
public voidonreceivelocation(bdlocation location){
//此处的bdlocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
//以下只列举部分获取位置描述信息相关的结果
//更多结果信息获取说明,请参照类参考中bdlocation类中的说明
double latitude = location.getlatitude();//获取纬度信息
double longitude = location.getlongitude();//获取经度信息
float radius = location.getradius();//获取定位精度,默认值为0.0f
string coortype = location.getcoortype();
//获取经纬度坐标类型,以locationclientoption中设置过的坐标类型为准
int errorcode = location.getloctype();
// 获取定位类型、定位错误返回码,具体信息可参照类参考中bdlocation类中的说明
int strategy = location.getmockgnssstrategy();
// 防作弊策略识别码,用于辅助分析排查问题
int probability = location.getmockgnssprobability();
// 此定位点作弊概率,3代表高概率,2代表中概率,1代表低概率,0代表概率为0
bdlocation realloc = location.getrealllocation();
if(location.getmockgnssstrategy()>0&& null != realloc){
double dis = location.getdistoreallocation();
// 虚假位置和真实位置之间的距离
int realloctype = realloc.getloctype();
// 真实定位结果类型
string realloctime = realloc.gettime();
// 真实位置定位时间
double reallat = realloc.getlatitude();
// 真实纬度
double reallng = realloc.getlongitude();
// 真实经度
string realloccoortype = realloc.getcoortype();
// 真实位置坐标系
}
}
}
5. 第五步,获取定位经纬度

调用locationclient的start()方法,发起请求,在bdabstractlocationlistener接口中,便可获得。 详细信息请参考获取经纬度中第五步的介绍。

示例demo

上一篇

地理围栏

下一篇

场景定位

本篇文章对您是否有帮助?

网站地图