星空体育·(中国)官方网站-Star Sky Sports

# 智能穿戴定位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

具体步骤可参看下图:

img

# 入门指南

最后更新时间: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日

# 接入使用流程

img

# 获取appkey

如何获取appkey

# 第1步,注册成为星空开发者

点击进入注册页面注册 (opens new window),并进行实名认证

img

# 第2步,创建应用

进入控制台,选择高精度定位服务->高精度定位集成->输入产品名称,点击确认即创建产品成功,默认授权10个设备有效期为15天的试用服务,如需更多产品配置,请联系星空客服

img

# 第3步,获取appkey

创建应用完成后即可在产品界面获取appkey,如下图所示

img

# Android Studio工程配置

# 第1步,新建一个Android工程

新建一个Empty Activity应用项目,您可参考入门指南<创建工程>章节创建一个Android工程

# 第2步,引入SDK包

将下载的SDK的aar包复制到工程(此处截图以官网示例Demo为例子)的libs目录下,如果有老版本的aar包,请删除,如图所示:

img

# 第3步,build.gradle配置

打开应用目录下的build.gradle文件,找到android标签,在里面增加以下配置:

android {
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}
1
2
3
4
5
6
7

找到和dependencies标签,在里面增加以下配置:

dependencies {
    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
}
1
2
3
4

# 开发注意事项

# 1. 权限配置

在AndroidManifest.xml中配置权限:


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

1
2
3
4

# 2. 代码混淆

在生成 apk 进行代码混淆时进行如下配置(如果报出 warning,在报出 warning 的包加入类似的语句:-dontwarn 包名)

#定位 SDK
-keep public class cn.starcart.**{*;}
-dontwarn cn.starcart.**
1
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");

1
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) {
                
            }
        })

1
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();
   
1
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);

1
2
3
4
5
6
7
8

在SDK回调中获取和使用A-GNSS,回调状态码参考错误码对照表

// SDK A-GNSS调用回调
@Override
public void onAgnss(int code, byte[] data) {
    //将byte数组数据写入串口模块     
}
1
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();

1
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 状态回调     
}

1
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);
    
1
2
3
4
5
6
7
8
9
10

# 通信基站定位

功能开发中,敬请期待

# SDK停止

SDK可以调用如下接口停止所有功能:

 // SDK 停止  
 StarDgnss.get().stop();    
1
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、修复已知问题

# 相关下载

智能穿戴定位SDK开发文档一键下载

智能穿戴定位SDK一键下载

智能穿戴定位SDK Demo工程下载