日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android实现百度地图定位服务

發(fā)布時間:2023/12/10 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android实现百度地图定位服务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

百度地圖定位

    • 下載定位包
    • AndroidManifest.xml添加與修改
    • activity_main.xml代碼
    • java代碼
    • 連接真機
    • 結(jié)果展示
    • gitee代碼

本文主要講述如何使用Android studio實現(xiàn)定位和地圖功能,通過GPS,獲取終端的地理坐標,電子地圖,位置查詢。包括定位包的下載和使用,java,xml代碼實現(xiàn)。

下載定位包

訪問http://lbsyun.baidu.com,選擇:開發(fā)文檔->Android 地圖SDK->產(chǎn)品下載->自定義下載,勾選百度定位包(選擇全景定位和基礎(chǔ)地圖)后下載。

下載JAR包并且對其進行解壓

選擇模塊視圖為Project,復(fù)制定位包BaiduLBS_Android.jar至程序map的libs文件夾里,然后右鍵jar文件,選擇“Add As Library”
在main文件夾下新建名為jniLibs的文件夾,復(fù)制存放.so文件(share object)的多個文件夾至jniLibs文件夾


創(chuàng)建百度位置應(yīng)用,需進入百度開發(fā)者注冊和登錄http://developer.baidu.com

使用百度帳號成功登錄后,進入控制臺,http://lbsyun.baidu.com/apiconsole/key創(chuàng)建應(yīng)用。需要輸入本機Android指紋碼SHA1和應(yīng)用的包名。

如何獲得本機Android指紋碼SHA1?
輸入cmd ,進入命令輸入,進入用戶,輸入命令 cd .android,進入找到.android文件。
輸入命令 keytool -list -v -keystore debug.keystore,輸入默認密鑰庫口令:android后,回車,獲取到開發(fā)版的SHA1值

如何獲得包名?
點擊程序中src的build.gradle,查看applicationId,即為包名。

提交后,生成應(yīng)用的AK,查看應(yīng)用Key并復(fù)制,以供清單文件配置應(yīng)用Key用。

AndroidManifest.xml添加與修改

在清單文件即 AndroidManifest.xml 中,增加如下權(quán)限:

<!--百度定位所需要權(quán)限,前面2個是LOCATE權(quán)限組的2個危險權(quán)限--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!--百度定位所需要的普通權(quán)限--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <!--因為程序要與百度云服務(wù)交互-->

在Activity組件注冊的代碼后,添加注冊遠程服務(wù)和配置應(yīng)用Key的代碼:
每個APP擁有單獨的定位服務(wù),所以在使用百度定位和地圖服務(wù)前,需聲明service服務(wù)組件并登記

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"/> <meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="DQGuGACl3uQV1zq4GzuHHxxyYldeIMTl"/><!--應(yīng)用Key是在百度開發(fā)者頁面里生成的,需要替換-->

activity_main.xml代碼

界面布局使用幀布局,包含有重疊效果的地圖和位置文本,主要內(nèi)容含有經(jīng)度,緯度,地址,以及定位后的地圖顯示
activity_main.xml的代碼:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><!--百度地圖控件--><com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:clickable="true" /><!--位置文本布局的背景色代碼的前2位代碼為透明度--><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:background="#e0000000"android:orientation="vertical" ><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="12dp"android:layout_marginTop="20dp"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="緯度:"android:textColor="#ffffff"android:textSize="15dp" /><TextViewandroid:id="@+id/tv_Lat"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:textColor="#ffffff"android:textSize="15dp" /></LinearLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="12dp"android:layout_marginTop="10dp"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="經(jīng)度:"android:textColor="#ffffff"android:textSize="15dp" /><TextViewandroid:id="@+id/tv_Lon"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:textColor="#ffffff"android:textSize="15dp" /></LinearLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="10dp"android:layout_marginLeft="12dp"android:layout_marginTop="10dp"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="地址:"android:textColor="#ffffff"android:textSize="15dp" /><TextViewandroid:id="@+id/tv_Add"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:textColor="#ffffff"android:textSize="15dp" /></LinearLayout></LinearLayout> </FrameLayout>

java代碼

包括請求使用定位權(quán)限,獲取地址信息,定位參數(shù),監(jiān)聽位置
界面程序MainActivity.java代碼:

package com.example.map;import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat;import android.Manifest; import android.content.pm.PackageManager; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast;import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.model.LatLng;public class MainActivity extends AppCompatActivity {LocationClient mLocationClient; //定位客戶端MapView mapView; //Android Widget地圖控件BaiduMap baiduMap;boolean isFirstLocate = true;TextView tv_Lat; //緯度TextView tv_Lon; //經(jīng)度TextView tv_Add; //地址@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//如果沒有定位權(quán)限,動態(tài)請求用戶允許使用該權(quán)限if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);}else {requestLocation();}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode) {case 1:if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "沒有定位權(quán)限!", Toast.LENGTH_LONG).show();finish();} else {requestLocation();}}}private void requestLocation() {initLocation();mLocationClient.start();}private void initLocation() { //初始化mLocationClient = new LocationClient(getApplicationContext());mLocationClient.registerLocationListener(new MyLocationListener());SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);mapView = findViewById(R.id.bmapView);baiduMap = mapView.getMap();tv_Lat = findViewById(R.id.tv_Lat);tv_Lon = findViewById(R.id.tv_Lon);tv_Add = findViewById(R.id.tv_Add);LocationClientOption option = new LocationClientOption();//設(shè)置掃描時間間隔option.setScanSpan(1000);//設(shè)置定位模式option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//設(shè)置需要地址信息option.setIsNeedAddress(true);//保存定位參數(shù)mLocationClient.setLocOption(option);}//內(nèi)部類,百度位置監(jiān)聽器private class MyLocationListener implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {tv_Lat.setText(bdLocation.getLatitude()+"");tv_Lon.setText(bdLocation.getLongitude()+"");tv_Add.setText(bdLocation.getAddrStr());if(bdLocation.getLocType()==BDLocation.TypeGpsLocation || bdLocation.getLocType()==BDLocation.TypeNetWorkLocation){navigateTo(bdLocation);}}}private void navigateTo(BDLocation bdLocation) {if(isFirstLocate){LatLng ll = new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);baiduMap.animateMapStatus(update);isFirstLocate = false;}}@Overrideprotected void onResume() {super.onResume();mapView.onResume();}@Overrideprotected void onPause() {super.onPause();mapView.onResume();}@Overrideprotected void onDestroy() {super.onDestroy();mLocationClient.stop();mapView.onDestroy();} }

連接真機

以華為手機為例:
手機連usb到電腦,手機選擇“傳輸文件”,打開“設(shè)置”->系統(tǒng)與更新->開發(fā)人員選項->打開USB調(diào)試

錯誤:INSTALL_FAILED_ABORTED: User rejected permissions
解決如下:關(guān)閉監(jiān)控ADB安裝應(yīng)用

android studio如果無法識別到USB device,需要打開tools->SDK Manager->SDK Tools 中安裝Google USB Driver

as中左上角出現(xiàn)手機型號,則表示軟件與手機連接成功

結(jié)果展示

連接真機,進行測試

gitee代碼

gitee代碼

總結(jié)

以上是生活随笔為你收集整理的Android实现百度地图定位服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美日韩av | 美女啪啪动态图 | 尹人综合在线 | 影音av资源 | 色哟哟视频 | 免费在线色视频 | 欧美永久 | 欧美精品一级在线观看 | 大伊人久久 | 草草影院网址 | 污污小视频 | 一品毛片 | 深爱激情五月婷婷 | 午夜肉体高潮免费毛片 | 日韩网红少妇无码视频香港 | 男女h网站 | 91麻豆精品国产91久久久无需广告 | 51ⅴ精品国产91久久久久久 | 日本伊人影院 | av制服丝袜 | 国产免费av观看 | 色综合99久久久无码国产精品 | 无套白嫩进入乌克兰美女 | 在线视频麻豆 | 亚洲精品一区二区三区在线观看 | 国产乱码精品一区二区三 | 天天看黄色 | 色综合五月 | 人人看人人插 | 爱视频福利网 | 亚洲另类自拍 | 在线免费一区 | 第一色影院 | 免费看黄色三级三级 | 大粗鳮巴久久久久久久久 | 日韩精品久久一区 | 懂色av一区二区三区免费 | 亚洲精品xxxxx| 草草地址线路①屁屁影院成人 | 一区二区三区四区视频在线观看 | 成年人91视频 | 182tv福利视频 | 亚洲精品国产无码 | 精品产国自在拍 | 亚洲国产精品人人爽夜夜爽 | 精品无码久久久久久久久久 | 成年人激情网 | 中文在线字幕免费观 | 五月婷婷激情四射 | 国产中文欧美日韩在线 | 插插网站 | 色干干 | 免费av看片| 大桥未久av在线播放 | 亚洲码在线观看 | 亚洲色图视频在线观看 | 老湿机69福利 | 婷婷777| 欧日韩不卡视频 | 国产麻豆影视 | 激情五月色综合国产精品 | 91在线网| 久久调教 | 国产美女在线播放 | xxxx色| 国产精品视频久久久久 | 美女超碰在线 | 免费美女视频网站 | 日日噜| 婷婷一区二区三区 | 亚洲精品国产免费 | 欧美mv日韩mv国产 | 欧美日韩国产二区 | 国产又粗又黄 | 久久久亚洲av波多野结衣 | 色图av | 大地资源中文在线观看免费版 | 婷婷五月综合久久中文字幕 | 深夜福利网站在线观看 | 精品国产乱码久久久久久蜜臀网站 | 伊人久久成人 | 成人午夜久久 | 台湾佬成人中文网222vvv | 午夜欧美在线 | 美女在线一区 | 自拍1页 | 韩日产理伦片在线观看 | 52av在线| 亚洲精品高清视频在线观看 | 你懂的在线观看视频 | 日韩aⅴ视频| 一本久久综合亚洲鲁鲁五月天 | 麻豆一区二区99久久久久 | 免费高清视频在线观看 | 欧美精品电影一区二区 | 亚洲天堂麻豆 | 搡国产老太xxx网站 高h喷汁呻吟3p | 视频一区日韩 | 成年性生交大片免费看 |