浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

Android 定位SDK

开发者在自己的Android移动应用中集成定位SDK,可轻松实现获取当前位置信息的功能。获取当前位置信息,即我们常说的定位。其中位置信息主要包括经纬度、地址、位置描述、周边POI等

简介

利用定位SDK,不仅可以室外定位的经纬度信息、周边POI信息等,也可以获取室内建筑的定位信息。
目前百度已覆盖全国4000多家火车站、机场、商场、客运汽车站、博物馆、综合医院、图书馆等多种场景,利用三角定位技术、增强Wi-Fi指纹模型技术、地磁技术、蓝牙技术等,提供精度1-3m的室内精准定位服务。
注:如百度未覆盖您的室内地图数据、室内店铺等信息变更第一时间更新定位信息,或其他室内图室内定位相关需求,您可以联系我们

使用百度定位SDK室内定位功能步骤如下:

1第一步,准备工作
在使用定位SDK进行具体开发工作之前,需获取开发密钥(AK),并对开发工程进行环境配置工作。详细介绍请参考项目创建部分的说明。 此外,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 void onCreate() {
    mLocationClient = new LocationClient(getApplicationContext());     
    //声明LocationClient类
    mLocationClient.registerLocationListener(myListener);    
    //注册监听函数
}
3第三步,配置定位SDK参数
使用百度定位sdk的室内定位功能无需特别配置,初始化过程跟使用普通定位模式是完全一样的,配置好之后,调用mLocationClient.start()即可。
因为支持百度高精度室内定位的地点是有限的,因此要想开启室内定位模式,必须先要判断哪里支持室内定位,在支持的地方开启才是有用的。
4第四步,判断支持室内定位地点并开启室内定位模式
开发者可以通过回调的BDLocation中的getFloor()是否为空,判断当前是否已经处于室内定位区域。核心代码如下:
public LocationClient mLocationClient = null;
public class MyLocationListener implements BDAbstractLocationListener{
    @Override
    public void onReceiveLocation(BDLocation location){
         //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
           if (location.getFloor() != null) {
               // 当前支持高精度室内定位
              String buildingID = location.getBuildingID();// 百度内部建筑物ID
              String buildingName = location.getBuildingName();// 百度内部建筑物缩写
              String floor = location.getFloor();// 室内定位的楼层信息,如 f1,f2,b1,b2
              mLocationClient.startIndoorMode();// 开启室内定位模式(重复调用也没问题),开启后,定位SDK会融合各种定位信息(GPS,WI-FI,蓝牙,传感器等)连续平滑的输出定位结果;
              }
      }
}

在普通定位模式下,实际上开发者也会收到floor不为空的location结果,只不过需要调用startIndoorMode()方法,开启针对高精度室内定位专门优化过的定位模式,该模式开启后,可以对外输出连续、平滑的室内定位结果,极大优化用户室内定位体验与效果。

5第五步,关闭室内定位模式
调用mLocationClient.stopIndoorMode()方法即可。