在Android Studio中使用BaiduMap SDK實(shí)時(shí)獲取當(dāng)?shù)匚恢眯畔?/h1>
更新時(shí)間:2016年03月15日 09:56:35 作者:傻啦吧唧的程序員丶
這篇文章主要介紹了在Android Studio中使用BaiduMap SDK實(shí)時(shí)獲取當(dāng)?shù)匚恢眯畔?的相關(guān)資料,需要的朋友可以參考下
配置BaiduMap 環(huán)境
1.在百度API中新建自己的一個(gè)APP包名和APP名需要注意和自己Android Studio 中的包名和APP名保持一致;
2.百度地圖中還需要填寫(xiě)一個(gè)SHA1 數(shù)字簽名:
a、輸入keytool -list -v -keystore debug.keystore,會(huì)得到三種指紋證書(shū),選取SHA1類型的證書(shū)(密鑰口令是android),這個(gè)獲取到的SHA1的值和ecplise中獲取的值是一樣的,是作為debug用的。
b、輸入keytool -list -v -keystore XXX.keystore,(這個(gè)地方xxx.keystore是你生成app簽名時(shí)的keystore),密鑰庫(kù)口令:為給APP簽名時(shí)生成xxx.keystore期間所輸入的密碼,此時(shí)獲取的SHA1是release版的。
(以上主要是為了得到AppKey,沒(méi)有AppKey讀取的值會(huì)有問(wèn)題)
3.根據(jù)需要在(http://lbsyun.baidu.com/sdk/download?selected=location)下載自己需要的SDK包,因?yàn)橹粚?shí)現(xiàn)定位所以我這里只下載了定位功能的包;
4.解壓下載好的包,為了讓app兼容性更好,我把libs下的所有文件及文件夾復(fù)制到了app中l(wèi)ibs中;
5.配置Manifest文件,首先在Application中添加你獲得的AppKey:
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="這里是你申請(qǐng)的AppKey" />
然后緊接著需要注冊(cè)一個(gè)專門供BaiDuMap使用的service(自己不用實(shí)現(xiàn)):
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote"/>
最后再配置權(quán)限,定位所需要用到的一系列權(quán)限(這一塊在官方文檔上也是有的):
<!-- 這個(gè)權(quán)限用于進(jìn)行網(wǎng)絡(luò)定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- 這個(gè)權(quán)限用于訪問(wèn)GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- 用于訪問(wèn)wifi網(wǎng)絡(luò)信息,wifi信息會(huì)用于進(jìn)行網(wǎng)絡(luò)定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- 獲取運(yùn)營(yíng)商信息,用于支持提供運(yùn)營(yíng)商信息相關(guān)的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- 這個(gè)權(quán)限用于獲取wifi的獲取權(quán)限,wifi信息會(huì)用來(lái)進(jìn)行網(wǎng)絡(luò)定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!-- 用于讀取手機(jī)當(dāng)前的狀態(tài)-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- 寫(xiě)入擴(kuò)展存儲(chǔ),向擴(kuò)展卡寫(xiě)入數(shù)據(jù),用于寫(xiě)入離線定位數(shù)據(jù)-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 訪問(wèn)網(wǎng)絡(luò),網(wǎng)絡(luò)定位需要上網(wǎng)-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡讀取權(quán)限,用戶寫(xiě)入離線定位數(shù)據(jù)-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
至此環(huán)境配置完成。
實(shí)現(xiàn)功能代碼
1.在layout寫(xiě)一個(gè)TextView用來(lái)存放自己定位的信息:
<TextView
android:id="@+id/mytext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
2.在定位中需要用到一個(gè)定位回調(diào)接口BDLocationListener和類LocationClient:
① BDLocationListener中一個(gè)定位回調(diào)函數(shù)onReceiveLocation(BDLocation location)返回一個(gè)BDLocation定位結(jié)果;
② LocationClient類實(shí)例化并實(shí)現(xiàn)一個(gè)定位監(jiān)聽(tīng)函數(shù)(registerLocationListener(BDLocationListener listener));
定義TextView控件和其他方法類:
private TextView textView = null;
private Button button = null;
private LocationClient locationClient = null;
public BDLocationListener myListener = new MyBdlocationListener();
實(shí)現(xiàn)BDLocationListener(里面的一些判斷可以自己去考慮和添加或者需要什么定位信息自行去嘗試,這里只是得到了當(dāng)前地址):
public class MyBdlocationListener implements BDLocationListener{
@Override
public void onReceiveLocation(BDLocation location) {
textView.setText(location.getAddrStr()); } }
分別得到所有控件和實(shí)例:
textView = (TextView) findViewById(R.id.mytext);
button = (Button) findViewById(R.id.mybtn);
locationClient = new LocationClient(getApplicationContext());
locationClient.registerLocationListener(myListener);
initLocation();//初始化LocationgClient
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (locationClient.isStarted()){
locationClient.stop();
}
locationClient.start();
}
});
初始化LocationgClient:
private void initLocation(){
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy
);//可選,默認(rèn)高精度,設(shè)置定位模式,高精度,低功耗,僅設(shè)備
option.setCoorType("bd09ll");//可選,默認(rèn)gcj02,設(shè)置返回的定位結(jié)果坐標(biāo)系
int span=1000;
option.setScanSpan(span);//可選,默認(rèn)0,即僅定位一次,設(shè)置發(fā)起定位請(qǐng)求的間隔需要大于等于1000ms才是有效的
option.setIsNeedAddress(true);//可選,設(shè)置是否需要地址信息,默認(rèn)不需要
option.setOpenGps(true);//可選,默認(rèn)false,設(shè)置是否使用gps
option.setLocationNotify(true);//可選,默認(rèn)false,設(shè)置是否當(dāng)gps有效時(shí)按照1S1次頻率輸出GPS結(jié)果
option.setIsNeedLocationDescribe(true);//可選,默認(rèn)false,設(shè)置是否需要位置語(yǔ)義化結(jié)果,可以在BDLocation.getLocationDescribe里得到,結(jié)果類似于“在北京天安門附近”
option.setIsNeedLocationPoiList(true);//可選,默認(rèn)false,設(shè)置是否需要POI結(jié)果,可以在BDLocation.getPoiList里得到
option.setIgnoreKillProcess(false);//可選,默認(rèn)true,定位SDK內(nèi)部是一個(gè)SERVICE,并放到了獨(dú)立進(jìn)程,設(shè)置是否在stop的時(shí)候殺死這個(gè)進(jìn)程,默認(rèn)不殺死
option.SetIgnoreCacheException(false);//可選,默認(rèn)false,設(shè)置是否收集CRASH信息,默認(rèn)收集
option.setEnableSimulateGps(false);//可選,默認(rèn)false,設(shè)置是否需要過(guò)濾gps仿真結(jié)果,默認(rèn)需要
locationClient.setLocOption(option);
}
至此所有步驟完成,可以嘗試運(yùn)行一下!
在Android Studio中使用BaiduMap SDK實(shí)時(shí)獲取當(dāng)?shù)匚恢眯畔⒌南嚓P(guān)知識(shí)就給大家介紹到這里,希望對(duì)大家有所幫助!
相關(guān)文章
-
詳解Retrofit2.0 公共參數(shù)(固定參數(shù))
這篇文章主要介紹了Retrofit2.0 公共參數(shù)(固定參數(shù)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧 2018-04-04
-
解決Android 5.1限制外置SD卡寫(xiě)入權(quán)限的問(wèn)題
今天小編就為大家分享一篇解決Android 5.1限制外置SD卡寫(xiě)入權(quán)限的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 2018-08-08
-
Android學(xué)習(xí)之AppWidget高級(jí)效果
這篇文章主要為大家詳細(xì)介紹了Android學(xué)習(xí)之AppWidget高級(jí)效果的相關(guān)資料,感興趣的小伙伴們可以參考一下 2016-08-08
-
Android中RecyclerView實(shí)現(xiàn)商品分類功能
這篇文章主要為大家詳細(xì)介紹了Android中RecyclerView實(shí)現(xiàn)商品分類功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2022-02-02
-
解決RecyclerView無(wú)法onItemClick問(wèn)題的兩種方法
這篇文章主要介紹了解決RecyclerView無(wú)法onItemClick問(wèn)題的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧 2016-07-07
-
Android中創(chuàng)建類似Instagram的漸變背景效果
這篇文章主要介紹了Android中創(chuàng)建類似Instagram的漸變背景效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下 2017-12-12
-
Android Viewpager實(shí)現(xiàn)輪播廣告圖
這篇文章主要為大家詳細(xì)介紹了Android Viewpager實(shí)現(xiàn)輪播廣告圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2018-05-05
-
Android實(shí)現(xiàn)瘋狂連連看游戲之實(shí)現(xiàn)游戲邏輯(五)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)瘋狂連連看游戲之實(shí)現(xiàn)游戲邏輯,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2017-03-03
最新評(píng)論
配置BaiduMap 環(huán)境
1.在百度API中新建自己的一個(gè)APP包名和APP名需要注意和自己Android Studio 中的包名和APP名保持一致;
2.百度地圖中還需要填寫(xiě)一個(gè)SHA1 數(shù)字簽名:
a、輸入keytool -list -v -keystore debug.keystore,會(huì)得到三種指紋證書(shū),選取SHA1類型的證書(shū)(密鑰口令是android),這個(gè)獲取到的SHA1的值和ecplise中獲取的值是一樣的,是作為debug用的。
b、輸入keytool -list -v -keystore XXX.keystore,(這個(gè)地方xxx.keystore是你生成app簽名時(shí)的keystore),密鑰庫(kù)口令:為給APP簽名時(shí)生成xxx.keystore期間所輸入的密碼,此時(shí)獲取的SHA1是release版的。
(以上主要是為了得到AppKey,沒(méi)有AppKey讀取的值會(huì)有問(wèn)題)
3.根據(jù)需要在(http://lbsyun.baidu.com/sdk/download?selected=location)下載自己需要的SDK包,因?yàn)橹粚?shí)現(xiàn)定位所以我這里只下載了定位功能的包;
4.解壓下載好的包,為了讓app兼容性更好,我把libs下的所有文件及文件夾復(fù)制到了app中l(wèi)ibs中;
5.配置Manifest文件,首先在Application中添加你獲得的AppKey:
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="這里是你申請(qǐng)的AppKey" />
然后緊接著需要注冊(cè)一個(gè)專門供BaiDuMap使用的service(自己不用實(shí)現(xiàn)):
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"/>
最后再配置權(quán)限,定位所需要用到的一系列權(quán)限(這一塊在官方文檔上也是有的):
<!-- 這個(gè)權(quán)限用于進(jìn)行網(wǎng)絡(luò)定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <!-- 這個(gè)權(quán)限用于訪問(wèn)GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!-- 用于訪問(wèn)wifi網(wǎng)絡(luò)信息,wifi信息會(huì)用于進(jìn)行網(wǎng)絡(luò)定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <!-- 獲取運(yùn)營(yíng)商信息,用于支持提供運(yùn)營(yíng)商信息相關(guān)的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!-- 這個(gè)權(quán)限用于獲取wifi的獲取權(quán)限,wifi信息會(huì)用來(lái)進(jìn)行網(wǎng)絡(luò)定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <!-- 用于讀取手機(jī)當(dāng)前的狀態(tài)--> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <!-- 寫(xiě)入擴(kuò)展存儲(chǔ),向擴(kuò)展卡寫(xiě)入數(shù)據(jù),用于寫(xiě)入離線定位數(shù)據(jù)--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- 訪問(wèn)網(wǎng)絡(luò),網(wǎng)絡(luò)定位需要上網(wǎng)--> <uses-permission android:name="android.permission.INTERNET" /> <!-- SD卡讀取權(quán)限,用戶寫(xiě)入離線定位數(shù)據(jù)--> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
至此環(huán)境配置完成。
實(shí)現(xiàn)功能代碼
1.在layout寫(xiě)一個(gè)TextView用來(lái)存放自己定位的信息:
<TextView android:id="@+id/mytext" android:layout_width="match_parent" android:layout_height="wrap_content" />
2.在定位中需要用到一個(gè)定位回調(diào)接口BDLocationListener和類LocationClient:
① BDLocationListener中一個(gè)定位回調(diào)函數(shù)onReceiveLocation(BDLocation location)返回一個(gè)BDLocation定位結(jié)果;
② LocationClient類實(shí)例化并實(shí)現(xiàn)一個(gè)定位監(jiān)聽(tīng)函數(shù)(registerLocationListener(BDLocationListener listener));
定義TextView控件和其他方法類:
private TextView textView = null; private Button button = null; private LocationClient locationClient = null; public BDLocationListener myListener = new MyBdlocationListener();
實(shí)現(xiàn)BDLocationListener(里面的一些判斷可以自己去考慮和添加或者需要什么定位信息自行去嘗試,這里只是得到了當(dāng)前地址):
public class MyBdlocationListener implements BDLocationListener{ @Override public void onReceiveLocation(BDLocation location) { textView.setText(location.getAddrStr()); } }
分別得到所有控件和實(shí)例:
textView = (TextView) findViewById(R.id.mytext); button = (Button) findViewById(R.id.mybtn); locationClient = new LocationClient(getApplicationContext()); locationClient.registerLocationListener(myListener); initLocation();//初始化LocationgClient button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (locationClient.isStarted()){ locationClient.stop(); } locationClient.start(); } });
初始化LocationgClient:
private void initLocation(){ LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy );//可選,默認(rèn)高精度,設(shè)置定位模式,高精度,低功耗,僅設(shè)備 option.setCoorType("bd09ll");//可選,默認(rèn)gcj02,設(shè)置返回的定位結(jié)果坐標(biāo)系 int span=1000; option.setScanSpan(span);//可選,默認(rèn)0,即僅定位一次,設(shè)置發(fā)起定位請(qǐng)求的間隔需要大于等于1000ms才是有效的 option.setIsNeedAddress(true);//可選,設(shè)置是否需要地址信息,默認(rèn)不需要 option.setOpenGps(true);//可選,默認(rèn)false,設(shè)置是否使用gps option.setLocationNotify(true);//可選,默認(rèn)false,設(shè)置是否當(dāng)gps有效時(shí)按照1S1次頻率輸出GPS結(jié)果 option.setIsNeedLocationDescribe(true);//可選,默認(rèn)false,設(shè)置是否需要位置語(yǔ)義化結(jié)果,可以在BDLocation.getLocationDescribe里得到,結(jié)果類似于“在北京天安門附近” option.setIsNeedLocationPoiList(true);//可選,默認(rèn)false,設(shè)置是否需要POI結(jié)果,可以在BDLocation.getPoiList里得到 option.setIgnoreKillProcess(false);//可選,默認(rèn)true,定位SDK內(nèi)部是一個(gè)SERVICE,并放到了獨(dú)立進(jìn)程,設(shè)置是否在stop的時(shí)候殺死這個(gè)進(jìn)程,默認(rèn)不殺死 option.SetIgnoreCacheException(false);//可選,默認(rèn)false,設(shè)置是否收集CRASH信息,默認(rèn)收集 option.setEnableSimulateGps(false);//可選,默認(rèn)false,設(shè)置是否需要過(guò)濾gps仿真結(jié)果,默認(rèn)需要 locationClient.setLocOption(option); }
至此所有步驟完成,可以嘗試運(yùn)行一下!
在Android Studio中使用BaiduMap SDK實(shí)時(shí)獲取當(dāng)?shù)匚恢眯畔⒌南嚓P(guān)知識(shí)就給大家介紹到這里,希望對(duì)大家有所幫助!
相關(guān)文章
詳解Retrofit2.0 公共參數(shù)(固定參數(shù))
這篇文章主要介紹了Retrofit2.0 公共參數(shù)(固定參數(shù)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04解決Android 5.1限制外置SD卡寫(xiě)入權(quán)限的問(wèn)題
今天小編就為大家分享一篇解決Android 5.1限制外置SD卡寫(xiě)入權(quán)限的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08Android學(xué)習(xí)之AppWidget高級(jí)效果
這篇文章主要為大家詳細(xì)介紹了Android學(xué)習(xí)之AppWidget高級(jí)效果的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-08-08Android中RecyclerView實(shí)現(xiàn)商品分類功能
這篇文章主要為大家詳細(xì)介紹了Android中RecyclerView實(shí)現(xiàn)商品分類功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02解決RecyclerView無(wú)法onItemClick問(wèn)題的兩種方法
這篇文章主要介紹了解決RecyclerView無(wú)法onItemClick問(wèn)題的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-07-07Android中創(chuàng)建類似Instagram的漸變背景效果
這篇文章主要介紹了Android中創(chuàng)建類似Instagram的漸變背景效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2017-12-12Android Viewpager實(shí)現(xiàn)輪播廣告圖
這篇文章主要為大家詳細(xì)介紹了Android Viewpager實(shí)現(xiàn)輪播廣告圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android實(shí)現(xiàn)瘋狂連連看游戲之實(shí)現(xiàn)游戲邏輯(五)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)瘋狂連連看游戲之實(shí)現(xiàn)游戲邏輯,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03