概述维智 Android 定位 SDK 是为 Android 移动端应用提供的一套简单易用的定位服务接口为广大开发者提供融合定位服务。通过使用维智定位 SDK开发者可以轻松为应用程序实现极速、智能、精准、高效的定位功能。重要为了进一步加强对最终用户个人信息的安全保护措施从定位 SDK v3.0.0 版本起请开发者务必确保调用 SDK 任何接口前先调用隐私合规接口updatePrivacyAgree否则可能会无法正常使用相关功能。具体可参考隐私合规接口说明。什么是定位SDKAndroid 定位 SDK 是一套简单的 LBS 服务定位接口您可以使用这套定位 API 获取定位结果、逆地理编码地址文字描述。入门指南本指南是向 Android 应用添加地图、定位的快速入门指南。第 1 步下载并安装 Android Studio按照 Android Studio 编译器安装指南下载并安装 Android Studio。注下载地址为Google官方网站第 2 步获取维智 KEY使用维智管理平台需要您在官网控制台获取 Key。第 3 步创建项目按以下步骤新建一个 Empty Activity 的应用项目。启动 Android Studio。如果您看到 Welcome to Android Studio 对话框请选择 Start a new Android Studio project否则请点击 Android Studio 菜单栏中的 File然后点击 New-New Project按提示输入您的应用名称、公司域和项目位置。然后点击 Next。选择您的应用所需的机型。如果您不能确定自己的需求只需选择Phone and Tablet。然后点击 Next。在“Add an activity to Mobile”对话框中选择 EmptyActivity。然后点击Next。按提示输入 Activity 名称、布局名称和标题。使用默认值即可。然后点击 Finish。第 4 步下载并安装定位开发包从官网下载按照需求下载开发包并解压。解压后会得到一个 jar 文件请您将 jar 文件添加到工程中操作步骤请参考开发指南的 Android Studio jar 文件安装步骤。第 5 步Hello WZLocation请查看 Android Studio 项目中的下列文件。1、配置 AndroidManifest.xml 文件默认情况下AndroidManifest.xml 位于所设置项目目录main文件下。主要用于配置维智定位 Key 和申请权限在AndroidManifest.xml的application标签中配置Keymeta-data android:namecom.wayz.location.appkey android:value${wz_key} /在application标签中声明service组件service android:namecom.wayz.location.WzService/service在AndroidManifest.xml中配置权限:!-- 用户读取保存的 ID 文件-- uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE / !--允许获取粗略位置粗略定位必选-- uses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION / !--允许获取精确位置精准定位必选-- uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION / !-- 写入扩展存储向扩展卡写入数据用于写入离线定位数据-- uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE / !--允许访问网络必选权限-- uses-permission android:nameandroid.permission.INTERNET / !--允许获取网络状态用于网络定位无gps情况下的定位若需网络定位功能则必选-- uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE / !--允许获取wifi网络信息用于网络定位无gps情况下的定位若需网络定位功能则必选-- uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE / !--允许获取wifi状态改变用于网络定位无gps情况下的定位若需网络定位功能则必选-- uses-permission android:nameandroid.permission.CHANGE_WIFI_STATE / !--后台获取位置信息若需后台定位则必选-- uses-permission android:nameandroid.permission.ACCESS_BACKGROUND_LOCATION /2、实现定位如下几行代码可以帮助您实现最基础的定位功能private lateinit var client: WzLocationClient private lateinit var option: WzLocationClientOption private fun initLocationClient() { option WzLocationClientOption() // 回调间隔 option.interval 5000 option.isFastLocation false option.setOnceLocate(false) client WzLocationClient(thisBasicLocActivity, option) client?.startLocation(thisBasicLocActivity) } override fun onLocationReceived(location: WzLocation) { // 定位结果返回 } override fun onLocationError(exception: WzException) { tv.text StringBuilder().append(数据异常).append(exception.errorMessage).toString() } 开发指南创建工程获取KEY如何申请 KEY创建应用进入控制台创建一个新应用。如果您之前已经创建过应用可直接跳过这个步骤。审核通过后即可获取密钥 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);在构造 WzLocationClient 之前必须进行合规检查设置接口之前保证隐私政策合规检查接口如下MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true)获取位置获取定位数据首先声明Service组件请在application标签中声明service组件,每个app拥有自己单独的定位service。!-- 必选-- service android:namecom.wayz.location.WzService/service然后声明权限Android 6.0及以上系统可以参考Android 6.0权限说明章节。!--用于进行网络定位-- uses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION/uses-permission !--用于访问GPS定位-- uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION/uses-permission !--用于获取运营商信息用于支持提供运营商信息相关的接口-- uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE/uses-permission !--用于访问wifi网络信息wifi信息会用于进行网络定位-- uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE/uses-permission !--用于获取wifi的获取权限wifi信息会用来进行网络定位-- uses-permission android:nameandroid.permission.CHANGE_WIFI_STATE/uses-permission !--用于访问网络网络定位需要上网-- uses-permission android:nameandroid.permission.INTERNET/uses-permission !--用于申请调用A-GPS模块-- uses-permission android:nameandroid.permission.ACCESS_LOCATION_EXTRA_COMMANDS/uses-permission !--如果设置了target 28 如果需要启动后台定位则必须声明这个权限-- uses-permission android:nameandroid.permission.FOREGROUND_SERVICE/ !--如果您的应用需要后台定位权限且有可能运行在Android Q设备上,并且设置了target28必须增加这个权限声明-- uses-permission android:nameandroid.permission.ACCESS_BACKGROUND_LOCATION/最后设置维智KEY在application标签中加入meta-data android:namecom.wayz.location.appkey android:valuewz_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 23 buildToolsVersion 23.0.1 defaultConfig { applicationId com.wayz.location.demo minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName 2.5.0 } buildTypes { release { minifyEnabled false proguardFiles 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: Arrayout String, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) }相关下载维智合规使用说明维智合规使用说明文档下载Android 定位SDK下载提供基础的维智定位服务下载解压后即可引用。下载示例代码Android平台全部示例代码下载参考文档下载接口开发文档Android 平台全部开发文档在线查看
阅读完成 · 觉得有帮助?