智能穿戴定位sdk | 星舆科技-云顶国际yd888
# 概述
最后更新时间: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。
下载地址为
# 第2步,获取星舆appkey
1、点击
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步,注册成为星舆开发者
点击进入,并进行实名认证
# 第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云顶国际yd888的服务支持标准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、修复已知问题