所有文档
开发指南
重要:为了进一步加强对最终用户个人信息的安全保护措施,从定位SDK v9.2.9版本起, 请开发者务必确保调用SDK任何接口前先调用隐私合规接口setAgreePrivacy, 否则可能会无法正常使用相关功能。具体可参考隐私合规接口说明。
/*** 初始化定位参数配置*/private void initLocationOption() {//定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动LocationClient locationClient = new LocationClient(getApplicationContext());//声明LocationClient类实例并配置定位参数LocationClientOption locationOption = new LocationClientOption();MyLocationListener myLocationListener = new MyLocationListener();//注册监听函数locationClient.registerLocationListener(myLocationListener);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备locationOption.setLocationMode(LocationMode.Hight_Accuracy);//可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;locationOption.setCoorType("gcj02");//可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的locationOption.setScanSpan(1000);//可选,设置是否需要地址信息,默认不需要locationOption.setIsNeedAddress(true);//可选,设置是否需要地址描述locationOption.setIsNeedLocationDescribe(true);//可选,设置是否需要设备方向结果locationOption.setNeedDeviceDirect(false);//可选,默认false,设置是否当卫星定位有效时按照1S1次频率输出卫星定位结果locationOption.setLocationNotify(true);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死locationOption.setIgnoreKillProcess(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”locationOption.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到locationOption.setIsNeedLocationPoiList(true);//可选,默认false,设置是否收集CRASH信息,默认收集locationOption.SetIgnoreCacheException(false);//可选,默认false,设置是否开启卫星定位locationOption.setOpenGnss(true);//可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用locationOption.setIsNeedAltitude(false);//设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者,该模式下开发者无需再关心定位间隔是多少,定位SDK本身发现位置变化就会及时回调给开发者locationOption.setOpenAutoNotifyMode();//设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者locationOption.setOpenAutoNotifyMode(3000,1, LocationClientOption.LOC_SENSITIVITY_HIGHT);//需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用locationClient.setLocOption(locationOption);//开始定位locationClient.start();}/*** 实现定位回调*/public class MyLocationListener extends BDAbstractLocationListener{@Overridepublic void onReceiveLocation(BDLocation location){//此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果//以下只列举部分获取经纬度相关(常用)的结果信息//更多结果信息获取说明,请参照类参考中BDLocation类中的说明//获取纬度信息double latitude = location.getLatitude();//获取经度信息double longitude = location.getLongitude();//获取定位精度,默认值为0.0ffloat radius = location.getRadius();//获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准String coorType = location.getCoorType();//获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明int errorCode = location.getLocType();}}
/*** 初始化定位参数配置*/private void initLocationOption() {//定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动LocationClient locationClient = new LocationClient(getApplicationContext());//声明LocationClient类实例并配置定位参数LocationClientOption locationOption = new LocationClientOption();MyLocationListener myLocationListener = new MyLocationListener();//注册监听函数locationClient.registerLocationListener(myLocationListener);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备locationOption.setLocationMode(LocationMode.Hight_Accuracy);//可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;locationOption.setCoorType("gcj02");//可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的locationOption.setScanSpan(1000);//可选,设置是否需要地址信息,默认不需要locationOption.setIsNeedAddress(true);//可选,设置是否需要地址描述locationOption.setIsNeedLocationDescribe(true);//可选,设置是否需要设备方向结果locationOption.setNeedDeviceDirect(false);//可选,默认false,设置是否当Gnss有效时按照1S1次频率输出Gnss结果locationOption.setLocationNotify(true);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死locationOption.setIgnoreKillProcess(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”locationOption.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到locationOption.setIsNeedLocationPoiList(true);//可选,默认false,设置是否收集CRASH信息,默认收集locationOption.SetIgnoreCacheException(false);//可选,默认false,设置是否开启卫星定位locationOption.setOpenGnss(true);//可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用locationOption.setIsNeedAltitude(false);//设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者,该模式下开发者无需再关心定位间隔是多少,定位SDK本身发现位置变化就会及时回调给开发者locationOption.setOpenAutoNotifyMode();//设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者locationOption.setOpenAutoNotifyMode(3000,1, LocationClientOption.LOC_SENSITIVITY_HIGHT);//需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用locationClient.setLocOption(locationOption);//开始定位locationClient.start();}/*** 实现定位回调*/public class MyLocationListener extends BDAbstractLocationListener{@Overridepublic void onReceiveLocation(BDLocation location){//此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果//以下只列举部分获取经纬度相关(常用)的结果信息//更多结果信息获取说明,请参照类参考中BDLocation类中的说明//获取纬度信息double latitude = location.getLatitude();//获取经度信息double longitude = location.getLongitude();//获取定位精度,默认值为0.0ffloat radius = location.getRadius();//获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准String coorType = location.getCoorType();//获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明int errorCode = location.getLocType();}}
//核心实现代码如下,详细代码请参考官网Demo。//开启前台定位服务:Notification.Builder builder = new Notification.Builder (MainActivity.this.getApplicationContext());//获取一个Notification构造器Intent nfIntent = new Intent(MainActivity.this.getApplicationContext(), MainActivity.class);builder.setContentIntent(PendingIntent.getActivity(MainActivity.this, 0, nfIntent, 0)) // 设置PendingIntent.setContentTitle("正在进行后台定位") // 设置下拉列表里的标题.setSmallIcon(R.mipmap.ic_launcher) // 设置状态栏内的小图标.setContentText("后台定位通知") // 设置上下文内容.setAutoCancel(true).setWhen(System.currentTimeMillis()); // 设置该通知发生的时间Notification notification = null;notification = builder.build();notification.defaults = Notification.DEFAULT_SOUND; //设置为默认的声音mLocClient.enableLocInForeground(1001, notification);// 调起前台定位//停止前台定位服务:mLocClient.disableLocInForeground(true);// 关闭前台定位,同时移除通知栏
public LocationClient mLocationClient = null;public BDNotifyListener myListener = new MyNotifyListener();/***请在主线程中声明LocationClient类对象,该对象初始化需传入Context类型参数。推荐使用getApplicationConext()方法获取全进程有效的Context。*/public void onCreate() {//声明LocationClient类mLocationClient = new LocationClient(getApplicationContext());//注册监听函数mLocationClient.registerNotify(myListener);}/***定义MyNotifyLister类,继承BDNotifyListener,实现位置监听的回调。*/public class MyNotifyLister extends BDNotifyListener {public void onNotify(BDLocation mlocation, float distance){//已到达设置监听位置附近}}//调用BDNotifyListener的setNotifyLocation方法,实现设置位置消息提醒。//设置位置提醒,四个参数分别是:纬度、精度、半径、坐标类型myListener.setNotifyLocation(40.0f, 116.0f, 3000, mLocationClient.getLocOption().getCoorType());//启动定位,SDK便会自动开启位置消息提醒的监听mLocationClient.start();//调用BDNotifyListener的removeNotifyEvent方法,实现取消位置监听mLocationClient.removeNotifyEvent(myListener);
下一篇
本篇文章对您是否有帮助?