一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - 在Android Studio中使用BaiduMap SDK實時獲取當地位置信息

在Android Studio中使用BaiduMap SDK實時獲取當地位置信息

2021-06-28 16:00傻啦吧唧的程序員丶 Android

這篇文章主要介紹了在Android Studio中使用BaiduMap SDK實時獲取當地位置信息 的相關資料,需要的朋友可以參考下

配置baidumap 環境

1.在百度api中新建自己的一個app包名和app名需要注意和自己android studio 中的包名和app名保持一致;

2.百度地圖中還需要填寫一個sha1 數字簽名:

a、輸入keytool -list -v -keystore debug.keystore,會得到三種指紋證書,選取sha1類型的證書(密鑰口令是android),這個獲取到的sha1的值和ecplise中獲取的值是一樣的,是作為debug用的。

b、輸入keytool -list -v -keystore xxx.keystore,(這個地方xxx.keystore是你生成app簽名時的keystore),密鑰庫口令:為給app簽名時生成xxx.keystore期間所輸入的密碼,此時獲取的sha1是release版的。

(以上主要是為了得到appkey,沒有appkey讀取的值會有問題)

3.根據需要在(http://lbsyun.baidu.com/sdk/download?selected=location)下載自己需要的sdk包,因為只實現定位所以我這里只下載了定位功能的包;

4.解壓下載好的包,為了讓app兼容性更好,我把libs下的所有文件及文件夾復制到了app中libs中;

5.配置manifest文件,首先在application中添加你獲得的appkey:

?
1
2
3
<meta-data
android:name="com.baidu.lbsapi.api_key"
android:value="這里是你申請的appkey" />

然后緊接著需要注冊一個專門供baidumap使用的service(自己不用實現):

?
1
2
3
4
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote"/>

最后再配置權限,定位所需要用到的一系列權限(這一塊在官方文檔上也是有的):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!-- 這個權限用于進行網絡定位-->
<uses-permission android:name="android.permission.access_coarse_location"/>
<!-- 這個權限用于訪問gps定位-->
<uses-permission android:name="android.permission.access_fine_location"/>
<!-- 用于訪問wifi網絡信息,wifi信息會用于進行網絡定位-->
<uses-permission android:name="android.permission.access_wifi_state"/>
<!-- 獲取運營商信息,用于支持提供運營商信息相關的接口-->
<uses-permission android:name="android.permission.access_network_state"/>
<!-- 這個權限用于獲取wifi的獲取權限,wifi信息會用來進行網絡定位-->
<uses-permission android:name="android.permission.change_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.internet" />
<!-- sd卡讀取權限,用戶寫入離線定位數據-->
<uses-permission android:name="android.permission.mount_unmount_filesystems"/>

至此環境配置完成。

實現功能代碼

1.在layout寫一個textview用來存放自己定位的信息:

?
1
2
3
4
5
<textview
android:id="@+id/mytext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>

2.在定位中需要用到一個定位回調接口bdlocationlistener和類locationclient:

① bdlocationlistener中一個定位回調函數onreceivelocation(bdlocation location)返回一個bdlocation定位結果;

② locationclient類實例化并實現一個定位監聽函數(registerlocationlistener(bdlocationlistener listener));

定義textview控件和其他方法類:

?
1
2
3
4
private textview textview = null;
private button button = null;
private locationclient locationclient = null;
public bdlocationlistener mylistener = new mybdlocationlistener();

實現bdlocationlistener(里面的一些判斷可以自己去考慮和添加或者需要什么定位信息自行去嘗試,這里只是得到了當前地址):

?
1
2
3
4
public class mybdlocationlistener implements bdlocationlistener{
@override
public void onreceivelocation(bdlocation location) {
textview.settext(location.getaddrstr()); } }

分別得到所有控件和實例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void initlocation(){
locationclientoption option = new locationclientoption();
option.setlocationmode(locationclientoption.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仿真結果,默認需要
locationclient.setlocoption(option);
}

至此所有步驟完成,可以嘗試運行一下!

在android studio中使用baidumap sdk實時獲取當地位置信息的相關知識就給大家介紹到這里,希望對大家有所幫助!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲视频在线观看免费视频 | 国产手机在线观看 | 9191久久 | 欧美s级人做人爱c视频 | 国产午夜亚洲精品不卡 | 视频一本大道香蕉久在线播放 | 亚洲剧情在线观看 | 亚洲乱码尤物193yw在线播放 | 欧美日韩亚洲国内综合网香蕉 | 青草视频在线观看免费资源 | bl双性小说| 欧美帅老头oldmangay | 天堂成人在线视频 | 国产成人影院一区二区 | 婷婷激情综合五月天 | 古代双性美人被老糟蹋 | 狠狠色狠狠色综合婷婷tag | 日本三级欧美三级人妇英文 | 久久综合中文字幕佐佐木希 | 好 舒服 好 粗 好硬免费视频 | 国产精品 色 | yin娃sao货调教情趣用品店 | 嗯啊好大好爽 | 色综合天天综合网站中国 | 天堂网在线.www天堂在线视频 | 欧美日韩在线一区二区三区 | 久草大 | 亚洲精品乱码久久久久久蜜桃图片 | 日韩精品特黄毛片免费看 | 国产亚洲精品aaa大片 | 2018亚洲男人天堂 | 麻豆婷婷 | 日本一二线不卡在线观看 | 日韩毛片在线视频 | 亚洲丁香网 | 免费人成网址在线观看国内 | 久久久精品免费视频 | 午夜一级视频 | 星空无限传媒视频在线观看视频 | 91成人啪国产啪永久地址 | 99久热只有精品视频免费看 |