維智定位 Android 定位 SDK

概述

維智 Android 定位 SDK是為 Android 移動端應用提供的一套簡單易用的定位服務接口,為廣大開發者提供融合定位服務。通過使用維智定位SDK,開發者可以輕松為應用程序實現極速、智能、精準、高效的定位功能。

重要:為了進一步加強對最終用戶個人信息的安全保護措施,從定位SDK v3.0.0版本起, 請開發者務必確保調用SDK任何接口前先調用隱私合規接口updatePrivacyAgree, 否則可能會無法正常使用相關功能。具體可參考隱私合規接口說明。

什么是定位SDK

Android 定位 SDK 是一套簡單的LBS服務定位接口,您可以使用這套定位API獲取定位結果、逆地理編碼(地址文字描述)。

入門指南

本指南是向 Android 應用添加地圖、定位的快速入門指南。

第 1 步:下載并安裝 Android Studio

按照 Android Studio 編譯器安裝指南下載并安裝 Android Studio。(注:下載地址為Google官方網站)

第 2 步:獲取維智 KEY

使用維智管理平臺 需要您在官網控制臺獲取Key。

第 3 步:創建項目

按以下步驟新建一個 Empty Activity 的應用項目。

  1. 啟動 Android Studio。如果您看到 Welcome to Android Studio 對話框,請選擇 Start a new Android Studio project,否則,請點擊 Android Studio 菜單欄中的 File,然后點擊 New->New Project,按提示輸入您的應用名稱、公司域和項目位置。然后點擊 Next。

  2. 選擇您的應用所需的機型。如果您不能確定自己的需求,只需選擇Phone and Tablet。然后點擊 Next。

  3. 在“Add an activity to Mobile”對話框中選擇 EmptyActivity。然后點擊Next。

  4. 按提示輸入 Activity 名稱、布局名稱和標題。使用默認值即可。然后點擊 Finish。

第 4 步:下載并安裝定位開發包

從官網下載按照需求下載開發包并解壓。

解壓后,會得到一個jar文件,請您將jar文件添加到工程中,操作步驟請參考開發指南的 Android Stuido ?jar 文件安裝步驟。

第 5 步:Hello WZLocation

請查看 Android Studio 項目中的下列文件。

1、配置 AndroidManifest.xml 文件

默認情況下,AndroidManifest.xml 位于所設置項目目錄main文件下。主要用于配置維智定位 Key 和申請權限:

在AndroidManifest.xml的application標簽中配置Key:

<meta-dataandroid:name="com.wayz.location.appkey"android:value="${wz_key}" />

在application標簽中聲明service組件:

<service android:name="com.wayz.location.WzService"></service>

在AndroidManifest.xml中配置權限:

<!-- 用戶讀取保存的 ID 文件-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!--允許獲取粗略位置,粗略定位必選-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--允許獲取精確位置,精準定位必選-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 寫入擴展存儲,向擴展卡寫入數據,用于寫入離線定位數據-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允許訪問網絡,必選權限-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允許獲取網絡狀態,用于網絡定位(無gps情況下的定位),若需網絡定位功能則必選-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允許獲取wifi網絡信息,用于網絡定位(無gps情況下的定位),若需網絡定位功能則必選-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允許獲取wifi狀態改變,用于網絡定位(無gps情況下的定位),若需網絡定位功能則必選-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--后臺獲取位置信息,若需后臺定位則必選-->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

2、實現定位

如下幾行代碼可以幫助您實現最基礎的定位功能

private lateinit var client: WzLocationClient
private lateinit var option: WzLocationClientOption
?
private fun initLocationClient() {option = WzLocationClientOption()// 回調間隔option.interval = 5000option.isFastLocation = falseoption.setOnceLocate(false)client = WzLocationClient(this@BasicLocActivity, option)client?.startLocation(this@BasicLocActivity)
}
?override fun onLocationReceived(location: WzLocation) {// 定位結果返回}
?override fun onLocationError(exception: WzException) {tv.text = StringBuilder().append("數據異常:").append(exception.errorMessage).toString()}
?

開發指南

創建工程

獲取KEY

如何申請 KEY

  1. 創建應用

    進入控制臺,創建一個新應用。如果您之前已經創建過應用,可直接跳過這個步驟。

    審核通過后,即可獲取密鑰 accessKey。

Android Studio 配置工程
新建一個Android工程

新建一個 Empty Activity 的應用工程,創建一個 Android 工程。 可以參考入門指南

集成 SDK

將下載的定位 SDK jar 文件復制到工程(此處截圖以官方示例Demo為例子)的 libs 目錄下,如果有老版本定位 jar 文件存在,請刪除。如圖所示:

配置 build.gradle 文件

在 build.gradle 文件的 dependencies 中配置導入 jar 包

隱私合規

1.定位的合規接口說明如下:

/** 設置包含隱私政策,并展示用戶授權彈窗 必須在 WzLocationClient 實例化之前調用** @param context: ?  上下文* @param isContains: 隱私權政策是否包含維智開平隱私權政策 true 是包含* @param isShow: ? ? 隱私權政策是否彈窗展示告知用戶 true 是展示*/public static synchronized void updatePrivacyShow(Context context, boolean isContains, boolean isShow);
 /*** 設置是否同意用戶授權政策 必須在 WzLocationClient 實例化之前調用** @param context 上下文* @param isAgree 隱私權政策是否取得用戶同意 true 是用戶同意*/public static synchronized void updatePrivacyAgree(Context context, boolean isAgree);
  1. 在構造 WzLocationClient 之前必須進行合規檢查,設置接口之前保證隱私政策合規,檢查接口如下:

 MapsInitializer.updatePrivacyShow(this, true, true)MapsInitializer.updatePrivacyAgree(this, true)

獲取位置

獲取定位數據

首先,聲明Service組件

請在application標簽中聲明service組件,每個app擁有自己單獨的定位service。

<!-- 必選-->
<service android:name="com.wayz.location.WzService"></service>

然后,聲明權限

Android 6.0及以上系統可以參考Android 6.0權限說明章節。

<!--用于進行網絡定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于訪問GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--用于獲取運營商信息,用于支持提供運營商信息相關的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于訪問wifi網絡信息,wifi信息會用于進行網絡定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--用于獲取wifi的獲取權限,wifi信息會用來進行網絡定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于訪問網絡,網絡定位需要上網-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于申請調用A-GPS模塊-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!--如果設置了target >= 28 如果需要啟動后臺定位則必須聲明這個權限-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<!--如果您的應用需要后臺定位權限,且有可能運行在Android Q設備上,并且設置了target>28,必須增加這個權限聲明-->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

最后,設置維智KEY

在application標簽中加入:

<meta-data android:name="com.wayz.location.appkey" android:value="wz_key" />

實用工具

定位SDK錯誤碼對照表
常量字段返回值說明
AIR_MODE1003因為您開了飛行模式,我們無法獲取位置信息。
APPKEY_ILLEGAL401Appkey 非法或不存在
APPKEY_PERMISSION_ERROR403Appkey 權限異常
CANT_CAL_BACK404服務器異常
CANT_CAL_POSITON1010定位服務返回定位失敗。
CANT_GET_ANY_INFO1002我們無法獲取任何定位信息,請嘗試打開 WI-FI 開關和 GPS 位置服務。
ERROR_CELLINFO2002定位時的基站信息錯誤。
ERROR_INIT3001定位初始化時出現異常。
常量字段返回值說明
ERROR_START_CLIENT3002定位客戶端啟動失敗。
GOT_NULL_PARAM1005獲取到的請求參數為空,可能獲取過程中出現異常。
GOT_ONLY_ONE_WIFI1004由于僅掃描到單個 wifi,且沒有基站信息。
HTTP_OVERTIME1009網絡請求超時
ILLEGAL_DEVICE_ID1011option 參數非法
MOCK_LOCATION1006定位結果被模擬導致定位失敗。
ETWORK_UNREACHABLE2001無網絡,請求服務器過程中的異常,多為網絡情況差,鏈路不通導致。
NO_APPKEY1008您尚未配置 AppKey。
NO_PERMISSON1001沒有定位權限
NO_SIM1007由于手機沒插 sim 卡且 WIFI 功能被關閉。
PARAMS_ERROR400參數異常
常量字段返回值說明
PATH_ERROR404URL 路徑異常
PATH_ERROR501路徑異常
SERVER_ERROR500服務器異常
SERVER_ERROR502服務器異常
Android 6.0 以上權限說明

Android 6.0系統在原有的AndroidManifest.xml聲明權限的基礎上新增了運行時權限動態檢測,定位等權限也包含在其中。

第 1 步,聲明目標SDK版本

Android 6.0系統默認為targetSdkVersion小于23的應用默認授予了所申請的所有權限,所以如果您APP設置的targetSdkVersion低于23,在運行時也不會崩潰。

Android Studio:

在build.gradle中聲明targetSdkVersion為23。

android {compileSdkVersion 23buildToolsVersion '23.0.1'defaultConfig {applicationId "com.wayz.location.demo"minSdkVersion 14targetSdkVersion 23versionCode 1versionName "2.5.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}

第 2 步,檢查并申請定位權限

在運行定位之前需要對定位權限進行檢查和申請,示例代碼如下,

companion object {val permissions = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)
}
?
private fun checkPermisson() : Boolean {if (!EasyPermissions.hasPermissions(this, *MyApp.permissions)) {EasyPermissions.requestPermissions(this, "需要申請如下權限", 1, *MyApp.permissions)return false} else {return true}
}
?

第 3 步,用戶授權

在請求權限后,系統會彈出相應的Dialog提示用戶授予權限,如下圖所示:

第 4 步,接收回調

用戶選擇允許或拒絕后,會回調onRequestPermissionsResult方法, 該方法類似于onActivityResult方法。

override fun onRequestPermissionsResult(requestCode: Int,permissions: Array<out String>,grantResults: IntArray
) {super.onRequestPermissionsResult(requestCode, permissions, grantResults)EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
}

相關下載

維智合規使用說明

維智合規使用說明文檔,下載

Android 定位SDK下載

提供基礎的維智定位服務,下載解壓后,即可引用。下載

示例代碼

Android平臺全部示例代碼,下載

參考文檔下載

接口開發文檔

Android 平臺全部開發文檔,在線查看

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

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

相關文章

【CSS】使用 CSS 繪制三角形

一、Border 邊框法&#xff08;最常用&#xff09; 原理&#xff1a;通過設置元素的寬高為 0&#xff0c;利用透明邊框相交形成三角形。 .triangle {width: 0;height: 0;border-left: 50px solid transparent; /* 左側邊框透明 */border-right: 50px solid transparent; /* …

RabbitMQ 快速上手:安裝配置與 HelloWorld 實踐(一)

一、引言 在當今分布式系統大行其道的技術浪潮下&#xff0c;各個服務之間的通信與協同變得愈發復雜。想象一下&#xff0c;一個電商系統在大促期間&#xff0c;訂單服務、庫存服務、支付服務、物流服務等眾多模塊需要緊密配合。如果沒有一種高效的通信機制&#xff0c;系統很容…

【deekseek】TCP Offload Engine

是的&#xff0c;TOE&#xff08;TCP Offload Engine&#xff09;通過專用硬件電路&#xff08;如ASIC或FPGA&#xff09;完整實現了TCP/IP協議棧&#xff0c;將原本由CPU軟件處理的協議計算任務完全轉移到網卡硬件中。其延遲極低的核心原因在于 硬件并行性、零拷貝架構 和 繞過…

JavaScript 的編譯與執行原理

文章目錄 前言&#x1f9e0; 一、JavaScript 編譯與執行過程1. 編譯階段&#xff08;發生在代碼執行前&#xff09;? 1.1 詞法分析&#xff08;Lexical Analysis&#xff09;? 1.2 語法分析&#xff08;Parsing&#xff09;? 1.3 語義分析與生成執行上下文 &#x1f9f0; 二…

WORD個人簡歷單頁326款模版分享下載

WORD個人簡歷模版下載&#xff1a;WORD個人簡歷模版https://pan.quark.cn/s/7e79a822c490

Android 中 顯示 PDF 文件內容(AndroidPdfViewer 庫)

PDFView 是一個用于在 Android 應用中顯示 PDF 文檔的庫。它提供了豐富的功能和靈活的配置選項&#xff0c;使得開發者能夠輕松地在應用中嵌入 PDF 閱讀器。 一、 添加依賴 在模塊的 build.gradle 文件中添加以下依賴&#xff1a; // pdfimplementation("com.github.bar…

微信小程序學習之搜索框

1、第一步&#xff0c;我們在index.json中引入vant中的搜索框控件&#xff1a; {"usingComponents": {"van-search": "vant/weapp/search/index"} } 2、第二步&#xff0c;直接在index.wxml中添加布局&#xff1a; <view class"index…

OpenCL C++ 常見屬性與函數

核心對象與屬性 對象/屬性描述示例cl::Platform表示OpenCL平臺cl::Platform::get(&platforms)cl::Device表示計算設備cl::Device::getDefault()cl::Context管理設備、內存和命令隊列的上下文cl::Context(contextDevices)cl::CommandQueue命令隊列,用于提交命令cl::Command…

Milvus 視角看重排序模型(Rerankers)

在信息檢索和生成式人工智能領域&#xff0c;重排序器是優化初始搜索結果順序的重要工具。重排序器與傳統的嵌入模型不同&#xff0c;它將查詢和文檔作為輸入&#xff0c;并直接返回相似度得分&#xff0c;而不是嵌入。該得分表示輸入查詢和文檔之間的相關性。 重排序器通常在…

C語言:gcc 如何調用 Win32 打開文件對話框 ?

在 Windows 平臺上使用 gcc 調用原生 Win32 API 實現文件打開對話框是可行的&#xff0c;但需要直接使用 Win32 的 GetOpenFileName 函數&#xff08;位于 commdlg.h 頭文件&#xff0c;依賴 comdlg32.lib 庫&#xff09;。以下是完整實現步驟和代碼示例&#xff1a; 編寫 file…

計算機視覺與深度學習 | Python實現EMD-SSA-VMD-LSTM時間序列預測(完整源碼和數據)

EMD-SSA-VMD-LSTM混合模型 一、環境配置與依賴二、數據生成&#xff08;示例數據&#xff09;三、多級信號分解1. 經驗模態分解&#xff08;EMD&#xff09;2. 奇異譜分析&#xff08;SSA&#xff09;3. 變分模態分解&#xff08;VMD&#xff09; 四、數據預處理1. 歸一化處理2…

vue配置子路由,實現點擊左側菜單,內容區域顯示不同的內容

文章目錄 一、路由鏈路二、實現步驟準備二級路由下的.vue文件配置子路由聲明router-view標簽為菜單項 el-menu-item 設置index屬性&#xff0c;設置點擊后的路由路徑 三、參考資料 一、路由鏈路 二、實現步驟 準備二級路由下的.vue文件 配置子路由 router/index.js import {…

ModuleNotFoundError: No module named ‘SDToolbox‘

(py311) C:>python Python 3.11.11 | packaged by Anaconda, Inc. | (main, Dec 11 2024, 16:34:19) [MSC v.1929 64 bit (AMD64)] on win32 Type “help”, “copyright”, “credits” or “license” for more information. from SDToolbox import PostShock_eq Tracebac…

Hi3516DV500刷寫固件

hi3516DV500刷固件 1、硬件連接 2、軟件準備 3、刷固件步驟 一、硬件連接 特別注意的是&#xff0c;串口的接線順序 通過網線連接好筆記本和開發板后&#xff0c;需要確認一下網口水晶頭是否閃爍&#xff0c;以確認網絡物理是否連通 二、軟件資源準備 固件包準備 打開工具…

正則表達式r前綴使用指南

正則表達式中的 r&#xff1a;解鎖字符串轉義的魔法 正則表達式是處理字符串的強大工具&#xff0c;但它常常伴隨著轉義字符的復雜性。如果你曾因 \n、\t 或 \\ 的使用而困惑&#xff0c;那么這篇文章將為你揭開謎底&#xff0c;解釋為什么 r 是正則表達式中的「神奇武器」。本…

網絡攻防模擬:城市安全 “數字預演”

在當今數字化快速發展的時代&#xff0c;網絡安全和城市安全面臨著前所未有的挑戰。為有效應對這些挑戰&#xff0c;利用先進的技術搭建模擬演練平臺至關重要。圖撲軟件的 HT for Web 技術&#xff0c;為網絡攻防模擬與城市安全演練提供了全面且高效的解決方案。 三維場景搭建&…

AI模型開發全流程筆記

一、訓練數據準備階段 數據采集標準 格式要求&#xff1a;嚴格QA對形式&#xff08;1問1答&#xff09; 數量基準&#xff1a; 基礎量&#xff1a;500組QA對 優化量&#xff1a;800-1000組QA對 內容規范&#xff1a; 聚焦單一業務節點&#xff08;如售后場景&#xff09; …

1688 數據接口調用秘籍:高效獲取商品實時信息的開發指南

在電商行業競爭白熱化的當下&#xff0c;企業想要搶占市場先機&#xff0c;實時掌握商品信息至關重要。作為國內 B2B 電商巨頭&#xff0c;1688 平臺匯聚海量商品資源&#xff0c;通過高效調用其數據接口獲取商品實時信息&#xff0c;能為企業價格策略制定、庫存管理、競品分析…

milvus學習筆記

本文主要由AI生成&#xff0c;請注意自己查看源代碼校驗。 Milvus v2.4 系統架構概覽 Milvus 采用分布式微服務架構&#xff0c;將計算層&#xff08;Proxy、QueryCoord、QueryNode、IndexCoord、DataCoord、DataNode 等&#xff09;與存儲層&#xff08;Pulsar、MinIO/S3、e…

使用教程:8x16模擬開關陣列可級聯XY腳雙向導通自動化接線

以下通過點亮LED進行基本使用流程演示&#xff0c;實際可以連接復雜外設&#xff08;SPI、CAN、ADC等&#xff09; 單模塊使用 RX、TX、5V和GND接到串口模塊&#xff1b;X5接5V&#xff1b;Y2接LED;LED-接GND 串口模塊插上電腦后&#xff0c;LED沒有亮&#xff1b;因為此時模…