# 智能穿戴定位SDK
# 概述
最后更新时间:2021年11月01日
# 简介
凯发国际PaaS云平台目前开放了Android智能穿戴定位SDK。
凯发国际智能穿戴定位SDK是一套高精度融合定位开发调用接口,开发者可以轻松地在自己的Android应用中加高精度定位服务相关功能,包括AGNSS服务接入、差分服务接入、融合定位等功能。
凯发国际智能穿戴定位SDK支持厘米级高精度定位服务集成,支持行业标准差分数据服务,也支持凯发国际私有差分数据服务,适用于对流量有要求的应用场景。
V2.0开始,除了支持高精度定位安全帽外,也支持对讲机等手持设备。
# 功能介绍
鉴权服务
SDK的鉴权功能是指通过初始化传入的appkey和设备ID向凯发国际差分服务获取授权认证,授权通过才可以使用SDK其他功能
A-GNSS辅助定位
A-GNSS(Assisting-GNSS)是网络增强卫星定位系统,是利用普通的移动通信网络,传送增强改正数据,加强或者加快卫星导航信号的搜索跟踪性能与速度,可以明显缩短接收机首次定位时间,同时可以在受到一定遮挡的情况下,或者半开阔区域,也能实现卫星导航定位。
- CORS服务
CORS是利用多基站网络RTK技术建立的连续运行(卫星定位服务)参考站系统,负责采集卫星观测数据并输送至数据处理中心,同时提供系统完好性监测服务。SDK的CORS服务是指接入凯发国际CORS系统获取凯发国际基站实时观测数据(也叫差分数据)来实现设备的高精度定位。
- 融合定位
融合定位是利用设备采集的卫星观测数据、CORS服务下发的差分数据以及其他传感器数据进行融合解算,获得更稳定、可靠的高精度定位
# appkey的申请
注册成为凯发国际PaaS云平台开发者需要分三步:
第1步,注册凯发国际PaaS云平台开发者
第2步,去控制台创建应用
第3步,获取appkey
具体步骤可参看下图:
# 入门指南
最后更新时间:2021年11月01日
本指南是向Android应用添加智能穿戴定位SDK的快速入门指南
# 第1步,下载并安装Android Studio
按照官网说明下载并安装 Android Studio。
下载地址为Google官方网站 (opens new window)
# 第2步,获取凯发国际appkey
1、点击注册凯发国际开发者 (opens new window)
2、创建应用
3、获取appkey
# 第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”对话框中选择 Empty Activity。 然后点击 Next。
4、按提示输入 Activity 名称、布局名称和标题。 使用默认值即可。 然后点击 Finish。
# 第4步,引入和配置SDK开发包
从官网下载开发包放入app的libs目录下,同时配置SDK所需权限,操作步骤具体请参考开发指南中的Android Studio的配置工程
# 第5步,构建和运行您的应用
在Android Studio中,点击Run菜单选项(或play按钮图片)运行您的应用。
# 开发指南
最后更新时间:2021年11月01日
# 接入使用流程
# 获取appkey
如何获取appkey
# 第1步,注册成为凯发国际开发者
点击进入注册页面注册 (opens new window),并进行实名认证
# 第2步,创建应用
进入控制台,选择高精度定位服务->高精度定位集成->输入产品名称,点击确认即创建产品成功,默认授权10个设备有效期为15天的试用服务,如需更多产品配置,请联系凯发国际客服。
# 第3步,获取appkey
创建应用完成后即可在产品界面获取appkey,如下图所示
# Android Studio工程配置
# 第1步,新建一个Android工程
新建一个Empty Activity应用项目,您可参考入门指南<创建工程>章节创建一个Android工程
# 第2步,引入SDK包
将下载的SDK的aar包复制到工程(此处截图以官网示例Demo为例子)的libs目录下,如果有老版本的aar包,请删除,如图所示:
# 第3步,build.gradle配置
打开应用目录下的build.gradle文件,找到android标签,在里面增加以下配置:
android {
repositories {
flatDir {
dirs 'libs'
}
}
}
2
3
4
5
6
7
找到和dependencies标签,在里面增加以下配置:
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
}
2
3
4
# 开发注意事项
# 1. 权限配置
在AndroidManifest.xml中配置权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
2
3
4
?
# 2. 代码混淆
在生成 apk 进行代码混淆时进行如下配置(如果报出 warning,在报出 warning 的包加入类似的语句:-dontwarn 包名)
#定位 SDK
-keep public class cn.starcart.**{*;}
-dontwarn cn.starcart.**
2
3
# 3. 兼容性
支持Android4.0以上系统
# SDK初始化
在使用SDK之前,需要对其进行初始化,建议在APP启动即Application或者MainActivity(主Activity)中调用初始化接口,初始化需要传入appkey和设备ID,appkey为凯发国际PaaS云平台申请,设备ID为设备唯一标识,建议使用设备IMEI号,不同设备请不要使用相同ID去初始化,以免影响SDK正常使用。初始化接口调用示例如下:
// SDK 初始化
StarDgnss.get().init(getApplicationContext(), "appkey", "deviceId");
2
3
4
初始化之后可设置相应的日志等级、回调接口等,示例如下:
// SDK 初始化设置
StarDgnss.get().setLogLevel(LogLevel.DEBUG).setDgnssCallback(new OnDgnssCallback() {
@Override
public void onInit(int code, String msg) {
}
@Override
public void onAgnss(int code, byte[] data) {
}
@Override
public void onCorsData(long timestamp, int size, byte[] data) {
}
@Override
public void onCorsStatus(int code, String msg) {
}
@Override
public void onStatusChanged(int code, String msg) {
}
@Override
public void onInfo(String msg) {
}
})
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
?
# SDK启动
SDK初始化后,需调用启动进行鉴权等操作,鉴权通过后SDK才可以正常使用,SDK回调接口需要在启动之前设置好,示例如下:
// SDK 启动
StarDgnss.get().start();
2
3
4
# A-GNSS辅助定位
A-GNSS辅助定位的目的是加速初始定位,所以在模块上电启动时使用,且在模块出了有效定位后不必再使用。
SDK的A-GNSS功能需要初始化后才能使用,该功能是以异步形式接入凯发国际A-GNSS服务,获取A-GNSS数据并回调给调用端,再由调用端将其写入定位模块,其中A-GNSS数据通常为标准RTMC协议电文数据,对于不同厂家不同定位模块支持的A-GNSS协议也有所不同,所以需要根据模块类型获取对应A-GNSS数据,凯发国际A-GNSS服务除支持标准RTCM协议的A-GNSS数据,也支持第三方A-GNSS服务,在使用SDK的A-GNSS功能事,需传入模块类型,示例如下:
//异步获取A-GNSS请求
ModuleType moduleType = ModuleType.HDS;
//moduleType.GPS = 1; //获取GPS星历,默认
//moduleType.BDS = 1; //获取北斗星历,默认
moduleType.GAL = 1; //获取伽利略星历
StarDgnss.get().getAgnssAsyn(moduleType);
2
3
4
5
6
7
8
在SDK回调中获取和使用A-GNSS,回调状态码参考错误码对照表:
// SDK A-GNSS调用回调
@Override
public void onAgnss(int code, byte[] data) {
//将byte数组数据写入串口模块
}
2
3
4
5
# CORS服务
SDK提供了接入凯发国际CORS系统,获取差分数据的功能。该功能基于鉴权成功后服务器返回的鉴权信息以Ntrip或Http两种协议接入CORS服务,凯发国际CORS服务支持标准RTCM协议差分数据,也支持凯发国际私有协议差分数据,SDK支持两种协议差分数据解析。
CORS服务需要在SDK启动且鉴权成功后才可以正常使用,使用时需主动调用如下接口启动和停止CORS服务:
//1. 启动CORS服务,传入当前设备最新gga
String gga =
“$GPGGA,082230.000,2307.3293732,N,11320.7778254,E,4,22,0.755,3.700,M,-6.713,M,01,0032*49”;
StarDgnss.get().startCors(gga);
//2. 或者,使用经纬度参数启动CORS服务
//double lat = 23.12234553;
//double lng = 113.3457056;
//StarDgnss.get().startCors(lat,lng);
//3. 停止CORS
StarDgnss.get().stopCors();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
在SDK回调中获取和使用CORS数据,回调状态码参考错误码对照表
// SDK CORS调用回调
@Override
public void onCorsData(long timestamp, int size, byte[] data) {
//CORS 数据回调,将byte数组数据写入串口模块
}
public void onCorsStatus(int code, String msg) {
//CORS 状态回调
}
2
3
4
5
6
7
8
9
10
# 使用融合定位
SDK提供基于基站数据、GNSS数据以及其他传感器的数据进行融合定位,通过数据融合等策略,输出更可靠、稳定的高精度定位,各传感器数据实时更新即可。
融合定位需要SDK鉴权成功后才可以正常使用,示例如下:
//传入传感器数据
SensorData sensorData = new SensorData();
sensorData.setRelative_height(0.9f); //相对高度
sensorData.setTemperature(27f); //当前温度
sensorData.setPressure(1031f); //大气压强
StarDgnss.get().setSensorData(sensorData);
//融合GGA,返回融合定位结果GGA数据
result = StarDgnss.get().fusion(gga);
2
3
4
5
6
7
8
9
10
# 通信基站定位
功能开发中,敬请期待
# SDK停止
SDK可以调用如下接口停止所有功能:
// SDK 停止
StarDgnss.get().stop();
2
# 错误码对照表
SDK V2.0及以上版本错误码对照表
当使用异步方法时,回调接口将返回响应码。响应码列表如下:
code | message | 说明 |
---|---|---|
1000 | Success | 成功,请求正常 |
1001 | Failure | 执行失败 |
1002 | Missing param | 参数缺失 |
1003 | Invalid param | 无效参数 |
1004 | Invalid request | 无效请求 |
1005 | Unknown error | 未知错误 |
2000 | App does not exist | 应用不存在 |
2001 | App reach limit count | 应用用量已到达限额 |
3000 | User does not exist | 用户不存在 |
3001 | User name is already used | 用户账号已被占用 |
3002 | User is disabled | 用户账号被禁用 |
3003 | User activation time exceeded | 用户账号激活时间已超过有效期 |
3004 | User has been expired | 用户账号的使用时间已到期 |
3005 | User has not been activated | 用户账号不存在激活时间 |
3006 | User activation way is error | 用户账号激活方式不符合 |
4000 | Device does not exist | 设备不存在 |
4001 | Device code is already used | 设备编码已被占用 |
5000 | Service does not exist | 服务不存在 |
5001 | Service is expired | 服务已过期 |
5002 | Service config missing | 服务配置缺失 |
6000 | Vrs invalid service type | VRS服务类型不正确 |
6001 | No valid gga | 无效的gga |
6002 | No obs message | 没有观测电文 |
6003 | No nav message | 没有导航电文 |
6004 | No message | 没有观测电文和导航电文 |
6005 | No vrs info | 不存在VRS的信息 |
7000 | Token is expired | Token已过期 |
7001 | Token is invalid | Token无效 |
7002 | Token does not exist | Token不存在 |
8000 | Version exist | SDK版本已存在 |
Ntrip接入CORS服务时部分响应码:
code | message | 说明 |
---|---|---|
4005 | Service Connecting | TCP服务连接中 |
4006 | Service Connected | TCP服务已连接 |
4008 | Service User Identity Success | 用户认证成功 |
4013 | GGA send success | GGA发送成功 |
# 示例代码
相关下载章节提供的Android智能穿戴定位SDK Demo工程包含的示例均向您说明了如何在您的Android应用中使用智能穿戴定位SDK。除此之外,您还可以在开发指南的每个章节中找到关键方法的代码段。
# 定位SDK示例Demo工程
示例工程仅包含一个Activity,仅向您说明SDK接口的基本用法您可以直接导入到编译器中进行编译,查看演示。您也可以直接基于提供的示例代码为基础开发您的应用。
若示例可以成功运行,但返回不支持错误码,请联系凯发国际客服确认appkey是否正常,以及是否传入正常参数完成初始化。
# 开发指南中的代码段
开发指南的每个页面都提供了说明 SDK 接口功能的代码段,这些代码段取自于示例工程。
# 更新日志
# V2.1.0
更新于:2021-10-27
功能:
1、新增AGNSS服务
2、新增CORS服务
3、修复已知问题