入门指南 最后更新时间: 2021年01月22日
本指南是向 Android 应用添加室内地图的快速入门指南。
第 1 步:下载并安装 Android Studio
按照 Android Studio 编译器安装指南下载并安装 Android Studio。(注:下载地址为Google官方网站)
第 2 步:获取高德Key
使用高德室内地图 SDK 需要您在官网控制台获取Key。
如果您第一次使用,可以按照获取 Key 指南注册生成高德 Key。
第 3 步:创建项目
按以下步骤新建一个 Empty Activity 的应用项目。
- 启动 Android Studio。如果您看到 Welcome to Android Studio 对话框,请选择 Start a new Android Studio project,否则,请点击 Android Studio 菜单栏中的 File,然后点击 New->New Project,按提示输入您的应用名称、公司域和项目位置。 然后点击 Next。
- 选择您的应用所需的机型。 如果您不能确定自己的需要,只需选择 Phone and Tablet。然后点击 Next。
- 在“Add an activity to Mobile”对话框中选择 Empty Activity。 然后点击 Next。
- 按提示输入 Activity 名称、布局名称和标题。 使用默认值即可。 然后点击 Finish。
第 4 步:下载并安装定位开发包
从官网下载按照需求下载开发包并解压。
解压后,会得到一个jar文件,请您将jar文件添加到工程中,操作步骤请参考开发指南的 Android Stuido jar 文件安装步骤。
第 5 步:Hello AMapindoorLocation!
请查看 Android Studio 项目中的下列文件。
1、配置 AndroidManifest.xml 文件
默认情况下,AndroidManifest.xml 位于所设置项目目录main文件下。主要用于配置申请权限:
在AndroidManifest.xml中配置权限:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
2、实现定位
定位功能分成三个阶段来进行:
首先,需要对定位引擎进行初始化,初始化成功之后,定位引擎会在后台开启一个定位线程用于执行定位请求。
然后,当初始化定位线程成功反馈消息给客户端之后,客户端再注册一个监听handler,用于接收定位线程返回的结果。
最后,如果用户不再使用定位的时候,可以取消注册,甚至直接销毁定位引擎。
1)初始化定位引擎
初始化的时候,我们需要提供一个配置信息,最主要的两项配置是用户定位类型是wifi还是蓝牙,以及用户申请的Key。
代码如下:
Configuration.Builder mConfigBuilder= new Configuration.Builder(context);
mConfigBuilder.setLocationProvider(Configuration.LocationProvider.WIFI);
mConfigBuilder.setLBSParam("xxxxxx");
配置对象构建完成之后,我们执行具体的初始化工作。
代码如下:
ILocationManager mLocationManager = OnlineLocator.getInstance();
mLocationManager.init(strBuildNameId, mConfigBuilder.build(), mSDKInitHandler);
其中, strBuildNameId 是建筑物的ID,如果用户不知道当前所在建筑的id,可以提供一个空字符串,此时定位引擎首先进行去定位用户所在的建筑物,定位到建筑物之后再进一步的进行室内定位。
mSDKInitHandler是用户创建的一个handler,用于接收初始化的结果,因为初始化工作需要创建另外一个线程,所以我们通过handler机制来接收异步的初始化结果。
Handler示例如下:
private static class SDKInitHandler extends Handler {
private final WeakReference<OnlineActivity> mParent;
public SDKInitHandler(OnlineActivity parent) {
mParent = new WeakReference<>(parent);
}
@Override
public void handleMessage(Message msg) {
final OnlineActivity parent = mParent.get();
if (parent == null ) {
return;
}
parent.mIsLocating = false;
parent.mTextView2.setText("初始化失败");
if (msg.what == MessageCode.MSG_THREAD_PREPARED){
//初始化成功,请注册位置回调"
}
else {
// 初始化失败
}
}
}
2)添加监听
在上一步获取到初始化成功之后我们就可以注册一个监听:
mLocationManager.requestLocationUpdates(mInnerHandler);
其中参数mInnerHandler,是用于处理返回定位结果,举例如下:
private static class InnerHandler extends Handler {
private final WeakReference<OnlineActivity> mParent;
public InnerHandler(OnlineActivity parent) {
mParent = new WeakReference<OnlineActivity>(parent);
}
@Override
public void handleMessage(Message msg)
{
OnlineActivity mParent = this.mParent.get();
if (mParent == null)
return;
switch (msg.what) {
case MessageCode.MSG_REPORT_ONLINE_LOCATION: {
LocationResult result = (LocationResult)msg.obj;
// result中保存了定位的结果的经纬度坐标以及楼层信息等。
break;
}case MessageCode.MSG_ONLINE_BUILDING_LOCATED:{
mParent.strBuildNameId =(String)msg.obj;
// 如果在初始化的时候用户没有指定建筑物bid,当定位到建筑物成功之后,首先会收到建筑定位成功消息
break;
}
}
}
}
3) 取消监控及销毁引擎
当用户不再使用室内定位的时候,可以调用下面的接口取消监听,此时如果没有没有任何监听客户端在监听室内定位,引擎将停止wifi或者蓝牙扫描,减少系统的功耗。当用户后面再需要室内定位的时候,重新注册一下即可。
mLocationManager.removeUpdates(mInnerHandler);
如果以后都不再使用的时候,调用下面接口直接销毁定位引擎。后面如果需要使用定位引擎,就必须重新进行初始化引擎以及注册监听。一般当用户在wifi定位和蓝牙定位之间切换的时候,需要执行一次销毁操作。
mLocationManager.destroy();
第 6 步:连接 Android 设备
了解您的应用实际运行情况的最简单方法是将 Android 设备与计算机相连。 按照说明在您的 Android 设备上启用开发者选项,并配置您的应用和系统以检测设备。
因为室内定位需要扫描wifi或者蓝牙信息,一般不建议在Android模拟器上进行测试,在模拟器上会导致定位失败。
第 7 步:构建和运行您的应用
在 Android Studio 中,点击 Run 菜单选项(或 play 按钮图标)运行您的应用。
提示您选择设备时,选择下列选项之一:
选择与您的计算机相连的 Android 设备,点击 OK。 Android Studio 将调用 Gradle 构建您的应用,然后在设备显示结果。应用打开可能需要几分钟的时间。
后续步骤
您可能想观摩一些示例代码,可以前往相关下载下载官方示例Demo。
或者您也可以前往开发指南,阅读更多相关内容。