所有文档
开发指南
挖掘各类模拟定位方式对百度定位sdk内部信息的影响特征,综合多源数据信息,有效识别模拟卫星定位结果,为签到、运动、出行、游戏等场景的位置真实性提供有力保障。
在签到类场景中,如果设置了单次定位setoncelocation(true),则不会返回卫星定位结果,不需进行防定位作弊配置。
防定位作弊配置具体步骤如下:
在使用定位sdk进行具体开发工作之前,需, 并对开发工程进行环境配置工作。详细介绍请参考项目创建部分的说明。 此外, google在android 6.0中引入了动态权限获取机制,开发者在使用定位sdk之前, 请详细了解关于android 6.0系统开发须知。
请在主线程中声明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);//注册监听函数}
要实现定位防作弊功能,需要利用locationclientoption类配置定位sdk参数。
核心代码及注释说明如下:
locationclientoption option = new locationclientoption();option.setscanspan(1000);//可选,设置发起定位请求的间隔,int类型,单位ms//如果设置为0,则代表单次定位,即仅定位一次,默认为0option.setopengnss(true);//可选,设置是否使用卫星定位,默认false//使用高精度和仅用设备两种定位模式的,参数必须设置为trueoption.setcoortype("bd09ll");//可选,设置返回经纬度坐标类型,默认gcj02//gcj02:国测局坐标;//bd09ll:百度经纬度坐标;//bd09:百度墨卡托坐标;//海外地区定位,无需设置坐标类型,统一返回wgs84类型坐标option.setenablesimulategnss(false);//可选,设置是否需要过滤卫星定位仿真结果,默认需要,即参数为falsemlocationclient.setlocoption(option);//mlocationclient为第二步初始化过的locationclient对象//需将配置好的locationclientoption对象,通过setlocoption方法传递给locationclient对象使用//更多locationclientoption的配置,请参照类参考中locationclientoption类的详细说明
android定位sdk自v7.2版本起,对外提供了abstract类型的监听接口bdabstractlocationlistener, 用于实现定位监听。原有bdlocationlistener暂时保留, 推荐开发者升级到abstract类型的新监听接口使用, 该接口会异步获取定位结果,核心代码如下:
public class mylocationlistener extends bdabstractlocationlistener{@overridepublic voidonreceivelocation(bdlocation location){//此处的bdlocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果//以下只列举部分获取位置描述信息相关的结果//更多结果信息获取说明,请参照类参考中bdlocation类中的说明double latitude = location.getlatitude();//获取纬度信息double longitude = location.getlongitude();//获取经度信息float radius = location.getradius();//获取定位精度,默认值为0.0fstring coortype = location.getcoortype();//获取经纬度坐标类型,以locationclientoption中设置过的坐标类型为准int errorcode = location.getloctype();// 获取定位类型、定位错误返回码,具体信息可参照类参考中bdlocation类中的说明int strategy = location.getmockgnssstrategy();// 防作弊策略识别码,用于辅助分析排查问题int probability = location.getmockgnssprobability();// 此定位点作弊概率,3代表高概率,2代表中概率,1代表低概率,0代表概率为0bdlocation 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();// 真实位置坐标系}}}
调用locationclient的start()方法,发起请求,在bdabstractlocationlistener接口中,便可获得。 详细信息请参考获取经纬度中第五步的介绍。
上一篇
下一篇
本篇文章对您是否有帮助?