Android入門(17)| 百度提供的 Android定位SDK

文章目錄

  • 配置百度提供的 Android定位SDK
    • 用于發布的 SHA1
    • 用于測試的 SHA1
  • 使用百度定位實例


配置百度提供的 Android定位SDK

詳情參見官方文檔,這里僅對獲取 SHA1 做詳細介紹:

用于發布的 SHA1

在這里插入圖片描述

用于測試的 SHA1

在這里插入圖片描述


使用百度定位實例

在這里插入圖片描述

public class LocationActivity extends AppCompatActivity {private static final String TAG = "LocationActivity";public LocationClient locationClient;private TextView positionText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.location_layout);// setAgreePrivacy接口需要在LocationClient實例化之前調用// 如果setAgreePrivacy接口參數設置為了false,則定位功能不會實現// true,表示用戶同意隱私合規政策// false,表示用戶不同意隱私合規政策LocationClient.setAgreePrivacy(true);try {// 通過getApplicationContext獲取的全進程有效的Context來初始化LocationClient對象locationClient = new LocationClient(getApplicationContext());} catch (Exception e) {e.printStackTrace();Log.e(TAG, "onCreate: LocationClient初始化ERROR");}// 不同意隱私政策可能導致locationClient為空if (locationClient != null){// 注冊監聽器locationClient.registerLocationListener(new MyLocationClickListener());}positionText = findViewById(R.id.position_TextView);// 一次進行多個權限申請List<String> permissionList = new ArrayList<>();if (ContextCompat.checkSelfPermission(LocationActivity.this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);}if (ContextCompat.checkSelfPermission(LocationActivity.this,Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.READ_PHONE_STATE);}if (ContextCompat.checkSelfPermission(LocationActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);}if (!permissionList.isEmpty()) {String[] permissions = permissionList.toArray(new String[permissionList.size()]);ActivityCompat.requestPermissions(LocationActivity.this, permissions, 1);}else {requestLocation();}}public class MyLocationClickListener extends BDAbstractLocationListener {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {StringBuilder currentPosition = new StringBuilder();currentPosition.append("緯度:").append(bdLocation.getLatitude()).append("\n");currentPosition.append("經度:").append(bdLocation.getLongitude()).append("\n");currentPosition.append("國家:").append(bdLocation.getCountry()).append("\n");currentPosition.append("省:").append(bdLocation.getProvince()).append("\n");currentPosition.append("市:").append(bdLocation.getCity()).append("\n");currentPosition.append("區:").append(bdLocation.getDistrict()).append("\n");currentPosition.append("街道:").append(bdLocation.getStreet()).append("\n");currentPosition.append("定位方式: ");if(bdLocation.getLocType() == BDLocation.TypeGpsLocation) {currentPosition.append("GPS");}else if (bdLocation.getLocType() == BDLocation.TypeNetWorkLocation) {currentPosition.append("網絡");}else {currentPosition.append("其他方式");}positionText.setText(currentPosition);}}@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {switch (requestCode) {case 1:if (grantResults.length > 0){for (int result : grantResults) {if (result != PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "必須同意所有權限才能使用本程序",Toast.LENGTH_LONG).show();finish();return;}}requestLocation();}else {Toast.makeText(this, "申請權限時發生未知錯誤", Toast.LENGTH_LONG).show();Log.e(TAG, "onRequestPermissionsResult:待申請權限個數<=0");finish();}}}private void requestLocation() {initLocation(); // 實時更新位置,沒有該方法則只會定位一次locationClient.start(); // 開始定位}// 配置定位SDK參數private void initLocation() {LocationClientOption option = new LocationClientOption();option.setScanSpan(5000); // 5秒更新一次位置// 設置定位模式option.setLocationMode(LocationClientOption.LocationMode.Device_Sensors);// 提供根據經緯度分析處于哪個國家、省、市、區、街道的功能option.setIsNeedAddress(true);locationClient.setLocOption(option);}@Overrideprotected void onDestroy() {super.onDestroy();// 活動被銷毀時通過stop()方法停止定位// 防止程序在后臺持續定位消耗手機電量locationClient.stop();}
}

利用 LocationClientOption 類配置定位 SDK 參數:

LocationClientOption.setLocationMode() 可以設置定位模式,而 LocationClientOption.LocationMode 中有四種模式可選:

  • Hight_Accuracy: 高精度模式(默認模式),優先使用 GPS 定位,無法接受 GPS 信號時使用網絡定位;
  • Fuzzy_Locating: 模糊定位模式,v9.2.8 版本開始支持,可以降低 API 的調用頻率,但同時也會降低定位精度;
  • Battery_Saving: 節電模式,只會使用網絡定位。
  • Device_Sensors: 傳感器模式,只會使用 GPS 定位。

定位 SDK 能夠返回三種坐標類型的經緯度(國內),分別是:

  • GCJ02(國測局坐標)
  • BD09(百度墨卡托坐標)
  • BD09ll(百度經緯度坐標),若想將定位 SDK 獲得的經緯度直接在百度地圖上標注,請選擇該類型。

V6.2.3 版本起,全新升級了全球定位能力,在海外地區定位所獲得的經緯度,坐標類型默認、且只能是WGS84類型。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443682.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443682.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443682.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ios 不被遮擋 陰影_為何你沒見到日環食?你不知道的天象常識原來還有這么多 | 返樸...

關注風云之聲提升思維層次導讀說好的日環食呢&#xff0c;為什么上周很多人只等到了日偏食?日食月食的時間和種類是怎么預測的?你真的弄懂了各種日食和月食的成因嗎&#xff1f;你了解它們有什么區別和聯系&#xff0c;又遵循什么樣的時間規律嗎? 日食和月食發生的頻率一樣嗎…

初識貝塞爾(bezier)曲線

文章目錄資料援引貝塞爾曲線的用途一階貝塞爾&#xff08;bezier&#xff09;曲線二階貝塞爾&#xff08;bezier&#xff09;曲線三階貝塞爾&#xff08;bezier&#xff09;曲線高階貝塞爾&#xff08;bezier&#xff09;曲線三階貝塞爾曲線求插值&#xff08;Slerp&#xff09…

python代碼測試 vim_用 Hypothesis 快速測試你的 Python 代碼

點擊上方“Python編程時光”&#xff0c;選擇“加為星標”第一時間關注Python技術干貨&#xff01;介紹無論你使用哪種編程語言或框架&#xff0c;測試都非常重要。Hypothesis是 Python 的一個高級測試庫。它允許編寫測試用例時參數化&#xff0c;然后生成使測試失敗的簡單易懂…

Mac 下 CMake 的配置與使用

文章目錄安裝與配置編譯單個源文件編譯前的準備開始編譯編譯多個源文件多個源文件在同一目錄下多個源文件在不同目錄下math 目錄下的 CMakeLists.txt根目錄的 CMakeLists.txtoption 選項導入外部庫本地導入&#xff08;find_package&#xff09;外部導入&#xff08;FetchConte…

五軸編程_沙井萬豐數控數控編程五軸編程那個軟件好用

沙井萬豐數控數控編程五軸編程那個軟件好用設計需要掌握很高很全面的知識和技能&#xff0c;模具做的好&#xff0c;產品質量好&#xff0c;模具結構合理&#xff0c;生產效率高&#xff0c;工廠效益好。正因如此&#xff0c;模具技術工在外打工的工資都非常的高。少則每月幾千…

Linux學習:第二章-Linux安裝

一虛擬機使用 VMware主要特點&#xff1a; 1、不需要分區或重新開機就能在同一臺PC上使用兩種以上的操作系統 2、本機系統可以與虛擬機系統網絡通信 3、可以設定并且隨時修改虛擬機操作系統的硬件環境 二安裝方式 圖形安裝&#xff1a;直接回車 字符安裝&#xff1a;linux tex…

keil3如何放大字體_國潮海報不會做?送你國風字體+圖案筆刷+PSD素材+包裝樣機...

有很多朋友都問帶魚&#xff0c;國潮風的海報到底應該怎么做呢&#xff1f;首先你要知道什么是國潮風&#xff1a;國潮風就是現代文化和古代文化的碰撞&#xff0c;是年輕人的態度&#xff01;那么應該如何構圖如何設計呢&#xff1f;如何配色如何搭配字體呢&#xff1f;這些方…

Google 開源項目風格指南學習筆記——C++篇

文章目錄前言0. 縮寫名詞解釋1. 頭文件1.1. Self-contained 頭文件1.2. 頭文件保護1.3. 前置聲明1.4 內聯函數1.5. #include 的路徑及順序2. 作用域2.1. 命名空間2.2. 非成員函數、靜態成員函數和全局函數2.3. 局部變量2.4. 靜態和全局變量3. 類3.1. 構造函數的職責3.2. 隱式類…

hiveserver2啟動不起來_給愛車配個充電寶,70邁汽車應急啟動電源,讓你遠離搭電小廣告...

說到汽車應急啟動其實我有切身的痛&#xff0c;在哈爾濱零下35的嚴冬&#xff0c;晚上帶著女神吃完飯&#xff0c;高高興興地吃完以后一上車&#xff0c;發現電瓶被凍沒電了&#xff0c;天知道當時有多尷尬。馬上叫了保險公司過來給搭電&#xff0c;結果在飯店從晚上8點一直等到…

Windows 下 VS 配置 OpenGL 環境

文章目錄前言獲取 GLFW打開 VS前言 感謝B站同學搬運YouTube上的教學視頻。 獲取 GLFW 從官網上下載GLFW macOS下64位二進制文件 打開 VS 新建解決方案 OpenGL test&#xff0c;并在解決方案中新建文件夾 Dependencies&#xff1a; 從下載好的 glfw 文件夾中找到最新版鏈接…

ubuntu 網卡雙網口 配置_無線網卡m2 ngff keya keye、minipcie接口改轉多口有線網卡實現軟路...

小型主板及筆記本中的無線網卡m2ngffkeyakeye接口&#xff08;CNVI除外&#xff09;通過m2ngffkeyae轉接pcie1x轉接板&#xff0c;或者無線網卡的minipcie接口&#xff0c;通過minipcie轉接pcie1x轉接板可以改裝有線網卡板卡&#xff0c;來實現軟路由功能。m2ngffkeyae轉接pcie…

OpenGL | 通過繪制一個三角形來入門 OpenGL 圖形渲染管線

文章目錄前言什么是 OpenGl &#xff1f;回顧openGL 的 Object顯存結構工作階段通過頂點緩沖對象將頂點數據初始化至緩沖中標準化設備坐標頂點緩沖對象 VBOglGenBuffersglBindBufferglBufferData建立了一個頂點和一個片段著色器著色器是什么&#xff1f;為什么需要使用著色器&a…

javascript特效_如何在網頁添加鼠標點擊特效

經常有同學問我怎么做到的&#xff0c;本論壇屬于DZ當然用的是插件啦。偶然在網上找到一個關于wordpress的特效代碼&#xff0c;分享給大家。WordPress 添加鼠標點擊特效實際上這種教程在網上搜索一下有一大堆&#xff0c;已經是各大博主玩爛的東西了。不過既然給自己的博客加上…

Android |雙鎖單例模式中使用Context如何避免內存泄露的 Warning 提示

文章目錄問題解決方法拓展問題 在Android開發中&#xff0c;經常會將工具類以單例模式的方法實現&#xff0c;而工具類中又總不可避免的用到 Context &#xff0c;例如&#xff1a; public class MySingleton {private static volatile MySingleton instance;private final C…

android nio debug模式正常 release包crash_Flutter包大小治理上的探索與實踐

Flutter作為一種全新的響應式、跨平臺、高性能的移動開發框架&#xff0c;在性能、穩定性和多端體驗一致上都有著較好的表現&#xff0c;自開源以來&#xff0c;已經受到越來越多開發者的喜愛。但是&#xff0c;Flutter的引入往往帶來包體積的增大&#xff0c;給很多研發團隊帶…

Linux學習:第三章-Linux常用命令-1

提示符&#xff1a; [rootlocalhost ~]# [登錄用戶名主機名 當前所在目錄]提示符 ~家目錄 /root /home/aa 提示符&#xff1a; #超級用戶 $普通用戶 一 linux命令的格式1、命令 [選項] [參數]lslist顯示目錄下內容 ①命令名稱&#xff1a;ls 命令英文原意&#xff1a;list 命令…

Leetcode每日一題:使括號有效的最少添加(括號匹配)

文章目錄題目解析貪心趣解題目 只有滿足下面幾點之一&#xff0c;括號字符串才是有效的&#xff1a; 它是一個空字符串&#xff0c;或者它可以被寫成 AB &#xff08;A 與 B 連接&#xff09;, 其中 A 和 B 都是有效字符串&#xff0c;或者它可以被寫作 (A)&#xff0c;其中 …

yolov5搭建環境_Yolov5環境配置和訓練私有數據,YOLOv5,以及,私人

1.使用anaconda安裝python3.8的環境conda create -n yolo5 python3.8#anaconda下載地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/2.安裝pytorch1.6 torchvision0.7conda install pytorch1.6 torchvision0.7 cudatoolkit10.13.安裝相關包pip install opencv-py…

sam格式的結構和意義_各種格式的練字本,對寫字真有幫助嗎

圖片來源于筆勢通各種格式的練字本現在越來越多&#xff0c;目的主要是便于學生把握好筆畫的位置和布局&#xff0c;從而把整個字的結構處理好&#xff0c;常見的有米字格&#xff0c;回宮格等。這些練字本對于初學者來說肯定是有幫助的&#xff0c;特別是低年級學生。當然隨著…

硬件結構圖_那曲地表水電子除垢儀結構圖

那曲地表水電子除垢儀結構圖水處理設備也應斷電停止使用&#xff0c;系統長期停止運行或季節性停止運行&#xff0c;在系統停止運行前&#xff0c;在水中投加適量緩蝕劑&#xff0c;并采取滿水濕保護的措施&#xff0c;以減小腐蝕&#xff0c;保護系統。開啟進水閥檢查無誤后電…