示例中心
功能在线体验
控制台

高德 开发 Android 室内定位SDK 开发指南 获取位置 获取室内位置

更新时间:2017年03月07日

1、定位配置

运用定位引擎实现室内定位,就必须提前设置好一些定位需要的参数,必须在定位最开始的时候设置进去,一旦设置之后配置将不能再修改,直到用户销毁定位模块。

配置模块使用Builder模式用来构建,首先创建Configuration.Builder的对象,然后调用对象的一系列set方法设置各种参数,最后调用build() 方法构造最后的配置对象,设置给定位引擎。

客户端需要关注的设置选项参数说明:

参数

类型

说明

setLBSParam

String

设置访问服务时需要的参数KEY

setLocationProvider

LocationProvider

选择是蓝牙/还是WIFI,【WIFI|BLE】,【FUSION_WIFI_BLE】 暂不支持

示例代码:

Configuration.Builder mConfigBuilder=new Configuration.Builder(context);
LocationManager.getInstance().init(mConfigBuilder.build());

用户也可以如上直接创建对象,SDK会直接提供一组相关的默认值。

此外,在开发过程中,如果开发者所处环境不支持室内定位,那么我们可以通过模拟定位方式来测试开发应用的定位效果。

要使用模拟定位,首先需要下载  “模拟定位日志文件” ,或者从Android室内定位SDK的“相关下载”页面下载(http://lbs.amap.com/api/android-indoorlocation-sdk/download/),保存在手机上,然后把详细路径设置到配置对象的public String mSimulateFile 成员上,这样,再次启动定位的时候,SDK将使用模拟文件进行测试。

说明:模拟定位日志文件,暂提供“北京太阳宫凯德mall(B000A8WAWL)”的WIFI和蓝牙两种定位方式日志文件,以供模拟调试使用。

2、定位模块

定位模块根据客户端采集的信息进行定位服务。

创建对象

只需要把indoorutil.jar、indoorpdr.jar和onlinelocation.jar几个jar包引入进来,同时包含libindoorpdr.so和libonlinelocation.so两个so库即可。在创建定位定位引擎的时候使用onlinelocation.jar中的LocationManager.getInstance()。

引擎初始化

函数体:

public void init(String bid, final Configuration config, final Handler initHandler);

功能诠释:

初始化的室内定位模块。

参数诠释:

参数

类型

说明

bid

String

要进行的室内定位建筑,如果是纯在线定位这个参数可以为空,

为空的时候引擎做粗定位,成功之后会把建筑bid返回。

如果不为空则表示在本建筑之内进行室内定位;

config

Configuration

配置信息,如之前所述。

initHandler

Handler

初始化结果handler,

初始化过程中的一些错误和处理结果都通过这个回调函数返回过来。

可能的消息有:

MessageCode.MSG_THREAD_PREPARED、MSG_WIFI_NOT_ENABLED等。

示例代码:

ILocationManager mLocationManager; 
// 获取到实例
mLocationManager = LocationManager.getInstance();
SDKInitHandler mSDKInitHandler = new SDKInitHandler(this);
// 初始化定位引擎
mLocationManager.init(this.strBuildNameId, mConfigBuilder.build(), mSDKInitHandler); 

3、销毁定位模块

函数体:

public void destroy();

功能诠释:

释放所有定位相关资源,并停止、销毁室内定位引擎。

用法备注:

销毁之后,室内定位引擎将不能再被使用,用户需要重新初始化定位引擎。

4、监听/停止监听定位

函数体:

public void requestLocationUpdates(Handler handler); public void removeUpdates(Handler handler)

功能诠释:

注册或删除定位监听,参数handler是回调接口,定位引擎发送定位结果、定位错误等信息到这个handler。在第一次添加监听的时候,引擎会自动启动定位服务,当最后一个监听被删除之后,引擎将自动停止定位模块。

示例代码:

设置监听:
mLocationManager.requestLocationUpdates(mInnerHandler);
取消监听:
mLocationManager.removeUpdates(mInnerHandler);

5、定位结果

定位成功之后,引擎发送消息MSG_REPORT_LOCATION或MSG_REPORT_ONLINE_LOCATION给上层,其中定位结果以LocationResult对象方式保存在msg.obj中。

参数诠释:

参数

数据类型

说明

x

double

经度

y

double

纬度

z

int

楼层

r

float

精度,单位米

a

float

角度,单位度(0-360)

示例中心 功能
在线体验
常见问题