你现在所在位置:开发文档 >Android SDK集成文档

1.集成准备

A.获得AppId;

进入 管理中心>开发配置 查看。

B.下载SDK

下载Android天使医生开放平台SDK并解压缩

2.导入SDK:

目前只支持AndroidStudio开发环境,集成方法如下:

以下“xxx”为版本号,目前最新版本号为“1.1.8.5”。

第一种

A.在主项目build.gradle文件中dependencies节点下添加依赖:

compile 'com.jumper.librarybin:jumperopenplatform:xxx'

B.若编译不通过,请检查全局build.gradle文件中jcenter仓库的配置:

  1. allprojects {
  2. repositories{
  3. jcenter()
  4. }
  5. }

此项为目前版本的AndroidStudio默认添加项,一般不用配置。

第二种

A. 在你的主项目下新建libs文件夹(已有的忽略),将解压缩后的SDK中libs文件夹下jumperopenplatform-release-xxx.aar文件拷贝至你的项目刚刚新建的libs文件夹。

B. 然后在主模块build.gradle文件中最外层添加如下代码:

  1. repositories{
  2. flatDir{
  3. dirs 'libs'
  4. }
  5. }

C.在dependencies节点下加入依赖:

compile(name:'jumperopenplatform-release-xxx',ext:'aar')

以上两种方法均可,请自行选择。

3.配置AppId

3.1 AppID的赋值填写

在主模块中AndroidManifest.xml文件application节点下添加如下参数:

  1. < meta-data
  2. android:name="JUMPER_APPID"
  3. android:value="你的AppId"/>

4.高级选项(1.1.1以上可以使用)

4.1 设置录制界面图表颜色

  1. <!-- 修改界面颜色 -->
  2. <item name=" chartViewColorModify">
  3. <!-- 网格粗线条颜色 -->
  4. <item name=" adCrudeLineColor">#003344</item>
  5. <!-- 网格细线条颜色 -->
  6. <item name=" adThinLineColor">#003344</item>
  7. <!-- 分钟文字的颜色 -->
  8. <item name=" adTextPaintColor">#333333</item>
  9. <!-- 曲线的线条颜色 -->
  10. <item name=" adDataLineColor">#6d696a</item>
  11. </style>

修改Activity的样式

  1. <style name=" AppTheme.NoActionBar.Recording" parent=" OpenPlatformTheme.NoActionBar.Recording">
  2. <style name=" adChartViewStyle">@style/chartViewColorModify</item>
  3. </style>

在activity 中应用这个Theme

  1. <activity
  2. android:name="com.jumper.jumperopenplatform.RecordingActivity"
  3. tools: replace ="android:theme"
  4. android:theme="@style/AppTheme.NoActionBar.Recording"
  5. android:launchMode="singleTask"
  6. android:screenOrientation="portrait" />

4.2 更改录制界面按钮颜色或图片(一般不建议更改)

同样也是采用的更改Activity 的样式

  1. <style name="AppTheme.NoActionBar.Recording" parent=" OpenPlatformTheme.NoActionBar.Recording">
  2. <!-- 设置图表颜色 -->
  3. <item name=" adChartViewStyle">@style/chartViewColorModify</item>
  4. <!-- 开始按钮的背景图片 或者Drawable -->
  5. <item name=" startBackground">@drawable/shape_red_round</item>
  6. <!-- 胎动背景图片 -->
  7. <item name=" fetalMoveBackground">@mipmap/fetal_count</item>
  8. <!-- 宫缩归零图片 -->
  9. <item name=" resetTocoImageSrc">@mipmap/fetal_btn_o</item>
  10. <!-- 宫缩归零图片 -->
  11. <item name=" stopBackgroud">@mipmap/fetal_over</item>
  12. </style>

4.3 更改扫描界面图片

这里也是采用的Theme 的方案

  1. <style name=" AppTheme.NoActionBar.ScanDevice" parent=" OpenPlatformTheme.NoActionBar.ScanDevice">
  2. <!--<item name="adChartViewStyle">@style/chartViewColorModify>/item>-->
  3. <item name=" idelPic">@mipmap/icon_holy</item>
  4. <item name=" scanBtnBackgroud">@drawable/selector_shape_round</item>
  5. </style>

4.4 添加mac过滤器

添加一个过滤器
继承MacInterceptor 并实现Parcelable,重写父类方法

  1. public ResultInfo doInterceptor(String mac){ }

打开扫描界面时,调用如下方法

// 具体可以参数Demo

  1. DeviceScanActivity.start(this,new MyIntercepter(url,new String[ ]{"这里传递你可能用到的参数"}));

4.5 是否需要宫缩

  1. DeviceScanActivity.start(Context context, MacInterceptor mac, Boolean hasToco)

参数解释
Context 上下文
MacInterceptor (mac地址过滤器,见4.4)
hasToco 是否需要宫缩(可以不传,默认带宫缩)

4.6 事件通知(用于第三方做埋点统计)

有如下事件

a. EventTools.EVENT_TYYSS 胎音仪搜索按钮点击时件

b. EventTools.EVENT_JLTD 记录胎动

c. EventTools.EVENT_KSJC 开始监测

d. EventTools.EVENT_JSJC 结束监测

e. EventTools.EVENT_SCTXSJ 上传胎心数据

f. EventTools.EVENT_QXSC 取消上传胎心数据

如下例子

//注册广播

  1. IntentFilter intentFilter =new IntentFilter ()
  2. intentFilter.addAction(EventTools.ACTION_EVENT_NOTIFY );
  3. registerReceiver(broadcastReceiver, intentFilter );
  4. private BroadcastReceiver broadcastReceiver =new BroadcastReceiver() {
  5. @Override
  6. public void onReceiveContext context, Intent intent){
  7. String action = intent.getAction()
  8. if(EventTools.ACTION_EVENT_NOTIFY.equals(action)){
  9. Log.d("Terry",intent.getStringExtra(EventTools.ACTION_EXTRA_EVENT_TYPE());
  10. }
  11. }
  12. }

4.7 上传结果回调

MacInterceptor.class

  1. * 结束时按钮点周回调
  2. * @param isUpload 是否上传 false 为点击取消, true 为点击上传
  3. * @param info 胎心数据回调
  4. */
  5. public void onResultClick(boolean isUpload, FetalHeartCallBackInfo info){};

重写父类方法就可以,拿到回调

5.配置混淆过滤

  1. -keep class com.jumper.**{ *; }:
  2. -dontwarn com.jumper.**

6.胎心监测接入说明

A.开启蓝牙设备搜索界面

通过以下代码即可打开sdk中设备搜索界面:

  1. startActivity(new Intent(this, DeviceScanActivity.class);

B.设置id

为了帮助开发者准确定位监测数据是属于自有平台中哪位用户,可通过以下代码为SDK设置监测用户id,为可选项。

  1. JFetalHeartInterface.setUserId(userId);

userId为开发者自有平台中正在监测的用户唯一标识,String类型。

C.胎心监测界面截图

7.耳温计、血氧仪和体重称接入说明

A.扫描蓝牙设备:

public void startScan(DeviceScanCallback deviceScanCallback);

参数解释:

DeviceScanCallback deviceScanCallback:扫描结果回调,在onNewDeviceFind接收新扫描到的设备即可。

调用示例:

  1. BleHelper.getInstance(this).startScan(new DeviceScanCallback() {
  2. @Override
  3. public void onNewDeviceFind(BluetoothDevice device) {
  4. //回调中拿到扫描到的设备,可用列表形式进行展示
  5. }
  6. }

B.选择一个设备进行连接:

public < T > void connect(BluetoothDevice device, DeviceEnum deviceEnum, Listener < T > listener);

参数解释:

BluetoothDevice device:要连接的设备,一般为第1步中回调的device对象。

DeviceEnum deviceEnum:枚举类,表示设备类型,分别为耳温枪THERMOMETER, 血氧仪OXIMETER, 体重称WEIGHINGSCALE三种设备。调用connect方法时必须正确传入设备类型,否则会验证不通过或者解析数据异常。

Listener < T > listener:监测数据和监测状态的回调,结果接收类型T可为TemperatureResult、OxygenResult和WeightResult,分别对应耳温、血氧和体重,也可传入它们的父类ResultInterface。

各个结果接收类字段解释,均为public类型。

TemperatureResult:

字段名称 字段类型 字段含义
temperature String 体温值

OxygenResult:

字段名称字段类型字段含义
SPOString血氧饱和度
PlusString灌注指数(PI)
heartString脉率
spoDataArrayString血氧饱和度实时数值

WeightResult:

字段名称字段类型字段含义
weightFloatfloat体重值
stateint测量状态
测量中:2
测量结束:3

另外设备连接状态回调中几个常量解释如下:

Result.STATE_CONNECTED:已连接

Result.STATE_DISCONNECTED:断开连接

Result.STATE_NOTIFY_SUCCESS:读取数据成功

调用示例:

  1. BleHelper.getInstance(this).connect(bluetoothDevice, deviceEnum,
  2. new Listener<ResultInterface>() {
  3. @Override
  4. public void onNewDeviceFind(BluetoothDevice device) {
  5. Log.i("Jumper", "读取结果:" + result.toString());
  6. }
  7. @Override
  8. public void onConnectedState(int state) {
  9. Log.i("Jumper", "连接状态:" + getStateName(state));
  10. }
  11. }
  12. private String getStateName(int state) {
  13. String stateName = "未知";
  14. switch (state) {
  15. case Result.STATE_CONNECTED:
  16. stateName = "已连接";
  17. break;
  18. case Result.STATE_DISCONNECTED:
  19. stateName = "断开连接";
  20. break;
  21. case Result.STATE_NOTIFY_SUCCESS:
  22. stateName = "读取数据成功";
  23. break;
  24. }
  25. return stateName;
  26. }

C.断开连接:

public void disConnect();

调用示例:

BleHelper.getInstance(this).disConnect();

D.在不需要连接的地方,比如activity的onDestroy()方法中调用资源销毁方法:

public void destroy();

调用示例:

BleHelper.getInstance(this).destroy();