Android 导入百度地图SDK 详细步骤

今天交大家咋么来接入百度地图的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,大功告成,结束。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。