安卓Android集成百度地图sdk


上周刚刚给公司的app集成了百度地图的sdk,所以现在把方法整理一下,希望对各位有帮助。

想要在app中使用百度地图有下边几个步骤:

1
2
3
注册百度开发者账号,创建应用获取id,指定路径
下载对应功能的SDK包并导入自己的项目
照猫画虎让程序跑起来

注册百度开发者账号

注册

我记得以前还能用邮箱注册百度账号的,现在好像只能用手机了。

传送门1|传送门2(先进1号门注册百度账号,再进2号门注册百度开放平台开发者)

注册成功
注册成功后去邮箱验证一下,点击申请密钥,进入配置界面。

感谢微信打码

根据你需要的功能勾选,不想挑的同学全选也行。
这里获取SHA1比较麻烦,可以参考这篇博文

通过keytool工具可以快速获取开发版SHA1,你如果只是自己学习一下,那么开发版和发布版都填这个也可以。密钥默认是:android

灵魂打码
灵魂打码

完成后点击提交,如下图所示成功,进入第二步。
配置完成

下载sdk数据包

百度提供了许多官方的例子,大家可以下载看看,基本上所有的基础功能都有演示。

下载sdk数据包

压缩包里有4项,我们首先要将libs文件夹里的所有东西添加到自己程序的libs中,如下图。

下载sdk数据包

再将上图中的BaiduNavi_AndroidSDK.zip解压,将jniLibs文件夹添加到我们自己项目的src/main下(这里的libs现在不加也没事,用到其中的方法再加即可)
直接在src/main下创建jniLibs目录即可

下载sdk数据包

下载sdk数据包

项目配置

接下来给app下的bulid.gradle加入:

1
2
3
4
5
6
7
8
9
10
11
12
sourceSets{
main{
jniLibs.srcDir 'libs'
//说明so的路径为该libs路径,关联所有地图SDK的so文件
}
}

...
dependencies{
compile files('libs/BaiduLBS_Android.jar')//添加jar依赖
}
...

这段的意思是将libs下的os文件加载到src/main/jniLibs中。

AndroidManifest中添加开发密钥、所需权限信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
...
//开发者信息
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
</application>
...
//百度sdk所需权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.INTERNET"/>
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//读取设备硬件信息,统计数据
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//获取统计数据
<uses-permission android:name="android.permission.CAMERA" />
//使用步行AR导航,配置Camera权限
...

安卓6.0以后有些权限不能直接申请了,得在代码里动态获取,请注意!

编译通过后,配置阶段就完成了。

代码

首先写布局文件,需要加入百度提供的MapView:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//layout
...
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
...

//java
...
//DemoApplication.class
public class DemoApplication extends Application {

@Override
public void onCreate() {
super.onCreate();
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
SDKInitializer.initialize(this);
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
SDKInitializer.setCoordType(CoordType.BD09LL);
}
}
...
//MainActivity.class
...
public class MainActivity extends Activity {
private MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
}
...

DemoApplication最好在项目启动时就加载。

百度地图SDK接入已完成,具体功能请参照开发文档官方demo,跑起来吧。
map

如果出现白屏请检查网络连接和开发者信息是否正确。

如果出现类似found libBaiduMapSDK_map_v5_2_1.so error这种错误,请检查你的sdk版本!不同组件的版本必须一致!!

除此之外一些老项目可能会遇到“65k错误”:
map
在我另一篇博文中单独解决这个问题。

如有错误请指正(右侧栏有联系方式)~

-------------本文结束,感谢您的阅读-------------

本文标题:安卓Android集成百度地图sdk

文章作者:饭饭君~

发布时间:2018年11月28日 - 13:34

最后更新:2019年04月23日 - 10:51

原始链接:https://yangcf.github.io/2018/11/28/安卓Android集成百度地图sdk/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

如果我的文章有帮助到你,欢迎打赏~~
0%