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 (一)的源碼: 源碼點擊下載


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章