今天交大家咋么来接入百度地图的SDK,步骤其实和百度官网上的开发指南一样,写下来做做总结。
1. 注册百度开发者账号,直接到官网注册就行,如果没有注册,你在获取秘钥的时候系统会提醒你注册。百度的LBS的首页网址是:
http://developer.baidu.com/map/index.php?title=%E9%A6%96%E9%A1%B5
2. 有了百度开发者账户后就可以去申请要开发的APP,由于百度SDK需要和App绑定,在创建APP的时候需要提供android秘钥和package包名,可参考链接:
http://developer.baidu.com/map/index.php?title=androidsdk/guide/key
(1)创建应用页面:
(2)安全码获取方式:(上面百度链接里面有,我这里采用的是eclipse方法)
选择Window -> preferences -> Android -> Build -> 红色框区域(红色框区域就是sha1的值)
需要填入的安全码是: sha1 秘钥 + " ; " + 包名
sha1 秘钥:
包名:
然后确定就可以生成apk:(图中红色框框住的就是接下来步骤我们需要配置进注册app的key
3. 下载百度地图SDK:
http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download
下载解压之后是下面这三个包: 文档 -> lib库 -> 实例
然后解压lib库就可以得到我们要的jar包 和 so文件:
4. 在项目中引入百度地图:
1. 创建项目,这里注意,我们前面申请app的时候其实就应该已经注册好了项目,app和sdk应该是绑定好的,所以这里我们用前面注册好的项目。我的项目叫MapDemo.
2. 在项目文件夹下创建 libs/ 文件夹,如果用eclipse的创建项目的话,应该已经有了。
这里有两个步骤:(1)将 baidumapapiXXXXXX.jar 拷贝到 libs/ 的根目录 ; (2)在lib/ 下创建文件夹 armeabi/ 目录,并且把 libbaiduMapXXX.so 拷贝进去。 完成之后
3. 项目右键 -> Properties -> Java Build Path -> Libraries -> add External Jars -> 选择硬盘目录下的jar包文件,然后引入
4. 引入包之后我们就可以使用百度SDK来开发了:
这里先贴一个官方文档的地址:http://developer.baidu.com/map/index.php?title=androidsdk/guide/hellobaidumap
(1) 首先在 AndroidMainefest.xml 文件中添加:
<1> 在application标签下添加:
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="刚刚申请app时候产生的ak值" />
<2>添加权限:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
图:
(2) 修改layout配置文件,引入百度map控件:
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
(3) 修改MainActivity.java
package com.example.baidumapdemo;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
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
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}
}
这段代码应该很简单,就是初始化库,并且在activity 生命周期中调用 MapView的生命周期,好了,这样就完事儿了:
SDKInitializer.initialize(getApplicationContext());
5. 运行app程序:(注意这里千万不要在模拟器上运行,会报不能加载SDK库的错误,直接在真机上运行就OK了),运行结果:
OK,大功告成,结束。