当前位置: 首页 > news >正文

维智定位 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 平台全部开发文档,在线查看

相关文章:

  • 使用 Docker 部署 React + Nginx 应用教程
  • MySQL 数据库优化:InnoDB 存储引擎深度解析:架构、调优与最佳实践
  • 支持蓝牙5.0和2.4G私有协议芯片-PHY6222
  • CSDN-2024《AGP-Net: Adaptive Graph Prior Network for Image Denoising》
  • 移植RTOS,发现任务栈溢出怎么办?
  • VSCode + Cline AI辅助编程完全指南
  • 灌区量测水自动化监测解决方案
  • Go语言实现生产者-消费者问题的多种方法
  • okcc呼叫中心系统搭建的方案方式
  • Linux操作系统--进程间通信(system V共享内存)
  • 【AI学习】AI大模型技术发展研究月报的生成提示词
  • Linux——UDP/TCP协议理论
  • Redis——底层数据结构
  • MySQL 第四讲---基础篇 数据类型
  • SRS流媒体服务器(5)源码分析之RTMP握手
  • 关于 TCP 端口 445 的用途以及如何在 Windows 10 或 11 上禁用它
  • 课设:基于swin_transformer的植物中草药分类识别系统(包含数据集+UI界面+系统代码)
  • 基于51单片机和8X8点阵屏、矩阵按键的记忆类小游戏
  • Windows系统功能管控指南 | 一键隐藏关机键/禁用任务管理器
  • 二层交换机、三层交换机与路由器三者的详细对比
  • 科普|认识谵妄:它有哪些表现?患者怎样走出“迷雾”?
  • 大环线呼之欲出,“金三角”跑起来了
  • 韧性十足的中国外贸企业:“不倒翁”被摁下去,还会再弹起来
  • 曾犯强奸罪教师出狱后办教培机构?柳州鱼峰区教育局:正核实
  • 博柏利上财年营收下降17%,计划裁员1700人助推股价涨超18%
  • 山西临汾哪吒主题景区回应雕塑被指抄袭:造型由第三方公司设计