维智 Android 定位SDK
开发指南
创建工程
获取KEY
如何申请 KEY
- 创建应用
进入控制台,创建一个新应用。如果您之前已经创建过应用,可直接跳过这个步骤。


审核通过后,即可获取密钥 accessKey。
Android Studio 配置工程
新建一个Android工程
新建一个 Empty Activity 的应用工程,创建一个 Android 工程。 可以参考入门指南
集成 SDK
将下载的定位 SDK jar 文件复制到工程(此处截图以官方示例Demo为例子)的 libs 目录下,如果有老版本定位 jar 文件存在,请删除。如图所示:

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

实用工具
定位SDK错误码对照表
常量字段 | 值 | 返回值说明 |
---|---|---|
AIR_MODE | 1003 | 因为您开了飞行模式,我们无法获取位置信息。 |
APPKEY_ILLEGAL | 401 | Appkey 非法或不存在 |
APPKEY_PERMISSION_ERROR | 403 | Appkey 权限异常 |
CANT_CAL_BACK | 404 | 服务器异常 |
CANT_CAL_POSITON | 1010 | 定位服务返回定位失败。 |
CANT_GET_ANY_INFO | 1002 | 我们无法获取任何定位信息,请尝试打开 WI-FI 开关和 GPS 位置服务。 |
ERROR_CELLINFO | 2002 | 定位时的基站信息错误。 |
ERROR_INIT | 3001 | 定位初始化时出现异常。 |
ERROR_START_CLIENT | 3002 | 定位客户端启动失败。 |
GOT_NULL_PARAM | 1005 | 获取到的请求参数为空,可能获取过程中出现异常。 |
GOT_ONLY_ONE_WIFI | 1004 | 由于仅扫描到单个 wifi,且没有基站信息。 |
HTTP_OVERTIME | 1009 | 网络请求超时 |
ILLEGAL_DEVICE_ID | 1011 | option 参数非法 |
MOCK_LOCATION | 1006 | 定位结果被模拟导致定位失败。 |
ETWORK_UNREACHABLE | 2001 | 无网络,请求服务器过程中的异常,多为网络情况差,链路不通导致。 |
NO_APPKEY | 1008 | 您尚未配置 AppKey。 |
NO_PERMISSON | 1001 | 没有定位权限 |
NO_SIM | 1007 | 由于手机没插 sim 卡且 WIFI 功能被关闭。 |
PARAMS_ERROR | 400 | 参数异常 |
PATH_ERROR | 404 | 由于手机没插 sim 卡且 WIFI 功能被关闭。 |
PATH_ERROR | 501 | 路径异常 |
SERVER_ERROR | 500 | 服务器异常 |
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: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
}