前言
现在基本上每个人手机都有地图这一APP把,常用的就属谷歌地图,百度地图,高德地图等等,它带来了我们意想不到的方便,比如IT程序员去面试,都遇到过找不到路的囧境把,如果面试的途中,手机突然没电,那么没有地图的指引是很少能找到正确地点的,害羞的人连问路都不好意思问~~2333333
百度地图开放平台
百度地图SDK文档中心
简介
百度地图 Android SDK是一套基于Android 4.0及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。
(一)申请密钥,百度API控制台页面
创建应用,该套地图SDK免费对外开放,接口使用无次数限制。在使用前,您需先申请密钥(ak)才可使用
将应用类型选择为“Android SDK”,要填写应用名称、发布版本SHA1、开发版本SHA1,所以我建议现在就创建好你的应用项目,也好查看所需要填写的信息。在这里我的应用名称为“Baidu Map”,包名为”com.zk.baidumap”
发布、开发版本的SHA1的查看方式:
获取开发版SHA1:
输入命令 :cd .android 回车,cd keytool -list -v -keystore debug.keystore 回车。
获取发布版SHA1:
创建自己的签名文件,Android Studio软件中选择Build->Generate Signed APK。点击Next按钮
这里可以选择Create New Key Store或者Choose Existing Key Store,选择存在的KeyStore文件也是可以的,直接选择即可,这里,我介 绍一下创建新的KeyStore的步骤,点击Create new Key Store按钮
Key store path:选择KeyStore的文件路径与名称。
Password:密码
Confirms:再次输入密码
Alias:别名
Password:key的密码
Confirms:再次输入密码
Validity(years):密钥的有效期
First and Last Name:你的名字
Organizational Unit:单位
Organization:组织
City or Locality:城市或者所在地
State or Province:省份
Country Code (XX):国家
填写完成之后点击”ok”按钮,返回到了Generate Signed APK的界面,这个时候发现界面的Key store password、Key alias、Key Password已经自动填写好了,点击”Next”按钮,出现了Enter Master Password界面(有的可能不会出现这个界面)
填写密码即可,点击“OK”按钮
Build Type的选项是release,还要记得勾选Signature Versions的选项。点击Finish按钮,到这里开发版本的keystore文件就创建好了。
输入命令:cd “Jdk bin 目录地址” 回车, cd keytool -list -v -keystore “创建的发布版的keystore文件的地址”,回车。
输入密钥库口令:输入你生成.jks文件中 自己填写的密码。
(二)AS工程配置
开发包复制到工程中
百度SDK下载连接
根据项目需求选择对应的功能包,点击开发包下载,是一个解压包,解压完之后,是这样的
官方指出,有两种导入功能包的方式。常用的是在src/main/目录下新建jniLibs目录,工程会自动加载src目录下的so动态库;libs包放jar文件,导入所依赖的对应的jar文件即可
应用混淆
-keep class com.baidu.** {*;} -keep class vi.com.** {*;} -dontwarn com.baidu.**
至此,配置工程大部分已经完结。
使用
1.在AndroidManifest中添加开发密钥AK值、所需权限等信息
添加访问应用AK
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
</application>
2.添加权限(6.0另配置)
<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.GET_TASKS" />
//鉴权所需该权限获取进程列表
<uses-permission android:name="android.permission.CAMERA" />
//使用步行AR导航,配置Camera权限
3.在布局xml文件中添加地图控件
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
4.在应用程序创建时初始化 SDK引用的Context 全局变量,建议在Application的初始化方法
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
initBaiduMap();
}
private void initBaiduMap() {
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
}
}
5.创建地图Activity,管理地图生命周期
public class MainActivity extends AppCompatActivity{
private MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
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();
}
}
完成以上步骤后,运行程序,即可在您的应用中显示地图
效果图: