维智定位 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.mzph.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;因为此时模…