Android 百度地图API(01)_开发环境 HelloBaiduMap

转载于:http://blog.csdn.net/lmj623565791/article/details/37729091

转载于:http://blog.csdn.net/crazy1235/article/details/42614603 

百度地图SDK开发指南:http://developer.baidu.com/map/wiki/index.php?title=androidsdk/guide/introduction

虽然百度地图网上相关代码比较多,大多可能都是比较旧的版本,且百度地图API的改动感觉也比较大,所以在此跟大家分享一下一天的劳动成功。

一、申请AK(API Key)

    要想使用百度地图sdk,就必须申请一个百度地图的api key。申请流程挺简单的。

    首先注册成为百度的开发者,然后打开http://lbsyun.baidu.com/apiconsole/key这个网址,添加应用:


    应用名称可任意,创建应用最重要的一步是【安全码】。安全码是有【数字签名】和【;】和【包名】组成。数字签名指android的签名证书的SHA1值。包名就是你所创建的项目的包的结构,是指AndroidManifest.xml中的manifest标签下的package的值。

    例如:E6:20:57:A9:D9:E9:0C:A4:C5:51:17:B7:C1:E1:F2:D7:CC:37:D7:B1;com.example.bdmap_sample_01

    获取数字签名有两种方法:

    1. 第一种方法:使用eclipse查看。

    打开eclipse的Windows->Preferences菜单,在Android下的【Build】中可以看到SHA1的值,如下图:

    2. 第二种方法:使用keytool工具(jdk自带)查看。

    在控制台下,输入【cd .android】,然后输入【keytool -list -v -keystore debug.keystore】回车,然后提示你输入【秘钥库口令】,输入【android】回车然后就会显示SHA1的值。

数字签名搞定了,然后创建应用就ok了。创建完成之后,应用列表中会显示相应的AK,也就是api key。

二、下载SDK开发包

    打开http://lbsyun.baidu.com/sdk/download网址下载sdk,可以全部下载,也可以自定义下载。从V2.3.0之后的版本,SDK的开发包以可定制的形式提供下载,用户可以根据自己的项目需要勾选相应的功能下载对应的SDK开发包。

三、在android项目中引用百度SDK

    1. 将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs/armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),并通过右击项目->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。如此就可以正常使用百度地图SDK为您提供的全部功能了,拷贝完成后的工程目录如下图所示;

    注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。
    注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:
1). 在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;
2). Project -> clean-> clean all .

    2. 在AndroidManifest.xml的application中添加开发秘钥。

<!-- 添加开发秘钥   -->
<meta-data  
	android:name="com.baidu.lbsapi.API_KEY"  
	android:value="填写你申请的AK" />
    在AndroidManifest.xml中添加百度API所需权限:
<!-- 百度API所需权限 -->  
<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" />
    3. 在布局文件中添加地图控件:
<!-- 添加地图控件 -->
<com.baidu.mapapi.map.MapView  
    android:id="@+id/bmapview"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:clickable="true" /> 
    4. 在应用程序创建时初始化SDK引用的Context全局变量。
public 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); 
	
}

好了,经过这四步就能显示地图了~~

注意:在SDK各功能组件使用之前都需要调用

SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法中

    5. 不过地图很耗电,所以有必要管理其声明周期
package com.example.bdmap_sample_01;

import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;

import android.os.Bundle;
import android.app.Activity;
import android.view.Window;

public class MainActivity extends Activity {
	
	private MapView mMapView;	// 百度地图控件 
	
	@Override
	public 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); 
		
	}

    protected void onDestroy()  {  
        super.onDestroy();  
        // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
        mMapView.onDestroy();  
        mMapView = null;  
    }  
  
    @Override  
    protected void onResume()  {  
        super.onResume();  
        // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
        mMapView.onResume();  
    }  
  
    @Override  
    protected void onPause()  {  
        super.onPause();  
        // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
        mMapView.onPause();  
    }  
}

好了,完成。其实百度开发指南上对HelloBaiduMap这篇也极其清楚~~~~


 Android 百度地图 SDK v3.0.0 (一)的源码: 源码点击下载


posted on 2015-08-21 22:16  anyuan9  阅读(280)  评论(0编辑  收藏  举报

导航