天天看點

Android 程式開發——百度地圖的使用(一) 基礎配置

分為四步:密鑰申請、開發包下載下傳、環境配置、Hello地圖

@1.密鑰申請

申請網址 :http://lbsyun.baidu.com/apiconsole/key

Android 程式開發——百度地圖的使用(一) 基礎配置

前提:已經配置好應用程式的密鑰  就是   xxx.jks,放在項目根目錄下

包名在 app  下 build.gradle

釋出版SHA1擷取方式   : Android Studio 底部 Terminal的編輯器内輸入指令 keytool -v -list -keystore xxx.jks    密鑰即為你建立jks設定的

開發闆SHA1擷取方式   :window  運作 cmd    指令如下:  cd .android       keytool -v -list -keystore debug.keystore  密鑰為 android

Android 程式開發——百度地圖的使用(一) 基礎配置

生成百度密鑰後的截圖

Android 程式開發——百度地圖的使用(一) 基礎配置

@2開發包下載下傳

http://lbsyun.baidu.com/sdk/download?selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar

Android 程式開發——百度地圖的使用(一) 基礎配置

@3環境配置

1.引入包:

Eclipse:

第一步:在工程裡建立libs檔案夾,将開發包裡的baidumapapi_vX_X_X.jar拷貝到libs根目錄下,将libBaiduMapSDK_vX_X_X.so拷貝到libs\armeabi目錄下(官網demo裡已有這兩個檔案,如果要內建到自己的工程裡,就需要自己添加),拷貝完成後的工程目錄如下圖所示;

Android 程式開發——百度地圖的使用(一) 基礎配置

第二步:在工程屬性->Java Build Path->Libraries中選擇“Add External JARs”,標明baidumapapi_vX_X_X.jar,确定後傳回。

通過以上兩步操作後,您就可以正常使用百度地圖SDK為您提供的全部功能了。

注意:由于adt插件更新,若您使用Eclipse adt 22的話,需要對開發環境進行相應的設定,方法如下:

1. 在Eclipse 中選中工程,右鍵選 Properties->Java Build Path->Order and Export 使 Android Private Libraries處于勾選狀态;

2. Project -> clean-> clean all .

Android Studio

下載下傳的開發包解壓後 進入lib目錄,截圖如下

Android 程式開發——百度地圖的使用(一) 基礎配置

Android Studio的截圖

Android 程式開發——百度地圖的使用(一) 基礎配置

其中  .jar包放入 app下的 libs裡   注意:使用 軟體右側的

Android 程式開發——百度地圖的使用(一) 基礎配置

進行引入,不要使用 add as library  

.so檔案  則需要在main目錄下建立 jniLibs檔案夾,将.so檔案全部放入這裡

2.添加混淆:

內建地圖SDK的應用,在打包混淆的時候,需要注意與地圖SDK相關的方法不可被混淆。混淆方法如下:

-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}    
-dontwarn com.baidu.**      

保證百度類不能被混淆,否則會出現網絡不可用等運作時異常

3.清單檔案配置

添加密鑰:

<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="開發者 key" />  
</application>      

權限配置:

<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.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />      

@4 Hello地圖

在布局xml檔案中添加地圖控件;

<com.baidu.mapapi.map.MapView  
    android:id="@+id/bmapView"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:clickable="true" />      

在應用程式建立時初始化 SDK引用的Context 全局變量:

public class MainActivity extends Activity {  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各元件之前初始化context資訊,傳入ApplicationContext  
        //注意該方法要再setContentView方法之前實作  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
    }  
}      

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

SDKInitializer.initialize(getApplicationContext());,是以我們建議該方法放在Application的初始化方法中

建立地圖Activity,管理地圖生命周期;

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  
    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();  
        }  
    }      

繼續閱讀