本帖最后由 liu 于 2019-1-8 16:31 编辑
Android新手开发之旅目录
百度地图 Android SDK是一套基于Android 4.0及以上版本设备的应用程序接口。 我们可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。
步骤:
一、注册百度账号,申请AK(API Key),申请地址 http://lbsyun.baidu.com/apiconsole/key
点击创建应用后进入如下界面:
然后去创建一个Android项目,复制包名
然后回到网页填写应用名称、应用类型注意选择“Android SDK”、正确填写安全码,点击确认,系统将会自动帮您生成相应的开发密钥:
获取SHA1值的方法请看http://www.sufeinet.com/thread-24743-1-1.html
点击提交后:
这样AK已经准备好了
二、下载SDK开发包
下载地址:http://lbsyun.baidu.com/index.phptitle=sdk/download&action#selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar
选择并下载
三、在项目中引用百度SDK
将开发包拷贝至工程
1、添加jar文件
打开解压后的开发包文件夹,找到BaiduLBS_Android.jar文件将其拷贝至工程的app/libs目录下,如图:
2、选中jar包,右键→Add As Library
3、添加so文件
在下载的开发包中拷贝需要的CPU架构对应的so文件文件夹到app/libs目录下,如图:
4、在app目录下的build.gradle文件中android块中配置sourceSets标签,如果没有使用该标签则新增,详细配置代码如下:
[Java] 纯文本查看 复制代码 sourceSets {
main {
jniLibs.srcDir 'libs'
}
}
注意:Jar文件和so文件的版本号必须一致,并且保证Jar文件与so文件是同一版本包取出的。
完整配置:
5、应用混淆
现在我们的应用中已经集成了百度地图SDK,当我们在打包混淆的时候需要注意于BaiduMap SDK 相关的内容不应该被混淆,所以我们需要配置混淆文件。 首先打开app目录下的build.gradle文件,在release代码块中添加如下内容(若已经由Android Studio自动生成,则不用手动配置)proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
如在上面我们创建的MapActivity项目中:
然后编写混淆文件,打开app目录下的proguard-rules.pro文件,添加如下代码
[Java] 纯文本查看 复制代码 -keep class com.baidu.** {*;}
-keep class mapsdkvi.com.** {*;}
-dontwarn com.baidu.**
四、添加代码
1、在AndroidManifest中添加开发密钥、所需权限等信息
[Java] 纯文本查看 复制代码 <application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
</application>
2、添加所需权限
[C#] 纯文本查看 复制代码 //获取设备网络状态,禁用后无法获取网络状态
<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" />
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//获取统计数据
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//使用步行AR导航,配置Camera权限
<uses-permission android:name="android.permission.CAMERA" />
注意: 权限应添加在 appliction 之外,如添加到appliction 内部,会导致无法访问网络,不显示地图
3、在布局xml文件中添加地图控件
[XML] 纯文本查看 复制代码 <com.baidu.mapapi.map.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
4、在应用程序创建时初始化 SDK引用的Context 是全局变量
[Java] 纯文本查看 复制代码 import android.app.Application;
import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
/**
* Created by Administrator on 2019/1/8.
*/
public class MyApplication 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);
}
}
注意:initialize方法中必须传入的是ApplicationContext,不然会报运行时异常,所以建议把该方法放到Application的初始化方法中
在AndroidManifest中修改
所有工作都已完成,我们来看下运行效果:
之后的帖子会说一说怎么搜索周边、定位等功能如何实现
Android新手开发之旅目录
|