首先最重要的當然是去官方下載相關的sdk文件,以及導入的項目中。再申請祕鑰,不同APP不同的祕鑰。這裏不再做詳細描述了。
- 當導入包以後,就是配置AndroidManifest.xml文件了,首先是需要相關權限,然後配置祕鑰。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- 還有註冊百度服務
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
<intent-filter>
<action android:name="com.baidu.location.service_v2.2" >
</action>
</intent-filter>
</service>
- 別忘了還要配置祕鑰
<!-- meta-data需要寫在application中 -->
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="這裏填寫你從百度地圖官網申請到的祕鑰" />
等導完包、配置完AndroidManifest.xml文件後就是進行代碼的定位了
重中之中,需要在Activity綁定頁面,也就是
setContentView(R.layout.main);
之前需要對百度sdk
進行註冊,就是SDKInitializer.initialize(getApplicationContext());
這麼一行代碼,否則會報錯。接下來就需要實例化百度地圖定位非常關鍵的一個類LocationClient。
LocationClient mlocationClient = new LocationClient(getApplicationContext());
- 再使用LocationClientOption類對LocationClient進行一些屬性的配置
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);// 可選,默認高精度,設置定位模式,高精度,低功耗,僅設備
option.setCoorType("bd09ll");// 可選,默認gcj02,設置返回的定位結果座標系
int span = 1000;
option.setScanSpan(span);// 可選,默認0,即僅定位一次,設置發起定位請求的間隔需要大於等於1000ms纔是有效的
option.setIsNeedAddress(true);// 可選,設置是否需要地址信息,默認不需要
option.setOpenGps(true);// 可選,默認false,設置是否使用gps
option.setLocationNotify(true);// 可選,默認false,設置是否當gps有效時按照1S1次頻率輸出GPS結果
option.setIsNeedLocationDescribe(true);// 可選,默認false,設置是否需要位置語義化結果,可以在BDLocation.getLocationDescribe裏得到,結果類似於“在北京天安門附近”
option.setIsNeedLocationPoiList(true);// 可選,默認false,設置是否需要POI結果,可以在BDLocation.getPoiList裏得到
option.setIgnoreKillProcess(false);// 可選,默認true,定位SDK內部是一個SERVICE,並放到了獨立進程,設置是否在stop的時候殺死這個進程,默認不殺死
option.SetIgnoreCacheException(false);// 可選,默認false,設置是否收集CRASH信息,默認收集
option.setEnableSimulateGps(false);// 可選,默認false,設置是否需要過濾gps仿真結果,默認需要
mlocationClient.setLocOption(option);//添加設置
- 最後就是定位的監聽Listener,通過location就可以點出人任意想要的定位城市、經緯度等相關信息
BDLocationListener bdLocationListener = new BDLocationListener() {
@Override
public void onReceiveLocation(BDLocation location) {
Toast.makeText(MainActivity.this,
arg0.getLatitude() + "/" + arg0.getLongitude(), 100).show();
}
};
- 當然,還需要給定位類綁定監聽才行
mlocationClient.registerLocationListener(bdLocationListener);
當然不能忘了要啓動服務,我就是有一回忘了啓動服務,糾結了很久,需要在OnStart()和OnDestory()方法中對定位服務分別啓動與停止。代碼如下:
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
//啓動定位服務
if (!mlocationClient.isStarted()) {
mlocationClient.start();
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
//停止定位服務
mlocationClient.stop();
}
- 完成。