首先,當然是把需要用到的包導入到工程項目中。(沒有包的自己去百度API官網下載)
把 baidumapapi_v3_0_0.jar 和 locSDK_4.2.jar復制粘貼到項目的libs目錄下,
然后,在libs目錄下創建一個armeabi文件夾(有就不創建了),把libBaiduMapSDK_v3_0_0.so 和 liblocSDK4d.so賦值粘貼到armeabi目錄下。
導入之后的目錄結構如圖所示:
右鍵剛才導入的jar包,單機Build Path -->Add To Build Path,兩個jar包都要添加
接下來就是AndroidManifest.xml的application節點下配置你申請的key:
android:name="com.baidu.lbsapi.API_KEY"
android:value="你申請的key" />
把這段代碼放到application節點下面。
配置好key之后,還需要配置另外一個服務
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
也是直接放到application節點下面,這是必須用到的。
然后把需要用到的權限加上去:
都配置好之后,就只剩寫代碼了!
代碼比較簡單,注釋也比較詳細,所以,直接上代碼了:
package com.example.baidumap_demo;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
public class MainActivity extends Activity {
private final String TAG = "MainActivity";
private LocationClient mLocationClient;
private BDLocationListener mBDLocationListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 聲明LocationClient類
mLocationClient = new LocationClient(getApplicationContext());
mBDLocationListener = new MyBDLocationListener();
// 注冊監聽
mLocationClient.registerLocationListener(mBDLocationListener);
}
/** 獲得所在位置經緯度及詳細地址 */
public void getLocation(View view) {
// 聲明定位參數
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);// 設置定位模式 高精度
option.setCoorType("bd09ll");// 設置返回定位結果是百度經緯度 默認gcj02
option.setScanSpan(5000);// 設置發起定位請求的時間間隔 單位ms
option.setIsNeedAddress(true);// 設置定位結果包含地址信息
option.setNeedDeviceDirect(true);// 設置定位結果包含手機機頭 的方向
// 設置定位參數
mLocationClient.setLocOption(option);
// 啟動定位
mLocationClient.start();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
// 取消監聽函數
if (mLocationClient != null) {
mLocationClient.unRegisterLocationListener(mBDLocationListener);
}
}
private class MyBDLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// 非空判斷
if (location != null) {
// 根據BDLocation 對象獲得經緯度以及詳細地址信息
double latitude = location.getLatitude();
double longitude = location.getLongitude();
String address = location.getAddrStr();
Log.i(TAG, "address:" + address + " latitude:" + latitude
+ " longitude:" + longitude + "---");
if (mLocationClient.isStarted()) {
// 獲得位置之后停止定位
mLocationClient.stop();
}
}
}
}
}
主要操作是在onReceiveLocation()方法里面。下面是Logcat控制台輸出的定位地址信息。
activity_main.xml:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="getLocation"
android:text="定位" />
大家可以根據自己的需求來定制自己的代碼!