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仓库的配置:
- allprojects {
- repositories{
- jcenter()
- }
- }
此项为目前版本的AndroidStudio默认添加项,一般不用配置。
第二种
A. 在你的主项目下新建libs文件夹(已有的忽略),将解压缩后的SDK中libs文件夹下jumperopenplatform-release-xxx.aar文件拷贝至你的项目刚刚新建的libs文件夹。
B. 然后在主模块build.gradle文件中最外层添加如下代码:
- repositories{
- flatDir{
- dirs 'libs'
- }
- }
C.在dependencies节点下加入依赖:
compile(name:'jumperopenplatform-release-xxx',ext:'aar')
以上两种方法均可,请自行选择。
3.配置AppId
3.1 AppID的赋值填写
在主模块中AndroidManifest.xml文件application节点下添加如下参数:
- < meta-data
- android:name="JUMPER_APPID"
- android:value="你的AppId"/>
4.高级选项(1.1.1以上可以使用)
4.1 设置录制界面图表颜色
- <!-- 修改界面颜色 -->
- <item name=" chartViewColorModify">
- <!-- 网格粗线条颜色 -->
- <item name=" adCrudeLineColor">#003344</item>
- <!-- 网格细线条颜色 -->
- <item name=" adThinLineColor">#003344</item>
- <!-- 分钟文字的颜色 -->
- <item name=" adTextPaintColor">#333333</item>
- <!-- 曲线的线条颜色 -->
- <item name=" adDataLineColor">#6d696a</item>
- </style>
修改Activity的样式
- <style name=" AppTheme.NoActionBar.Recording" parent=" OpenPlatformTheme.NoActionBar.Recording">
- <style name=" adChartViewStyle">@style/chartViewColorModify</item>
- </style>
在activity 中应用这个Theme
- <activity
- android:name="com.jumper.jumperopenplatform.RecordingActivity"
- tools: replace ="android:theme"
- android:theme="@style/AppTheme.NoActionBar.Recording"
- android:launchMode="singleTask"
- android:screenOrientation="portrait" />
4.2 更改录制界面按钮颜色或图片(一般不建议更改)
同样也是采用的更改Activity 的样式
- <style name="AppTheme.NoActionBar.Recording" parent=" OpenPlatformTheme.NoActionBar.Recording">
- <!-- 设置图表颜色 -->
- <item name=" adChartViewStyle">@style/chartViewColorModify</item>
- <!-- 开始按钮的背景图片 或者Drawable -->
- <item name=" startBackground">@drawable/shape_red_round</item>
- <!-- 胎动背景图片 -->
- <item name=" fetalMoveBackground">@mipmap/fetal_count</item>
- <!-- 宫缩归零图片 -->
- <item name=" resetTocoImageSrc">@mipmap/fetal_btn_o</item>
- <!-- 宫缩归零图片 -->
- <item name=" stopBackgroud">@mipmap/fetal_over</item>
- </style>
4.3 更改扫描界面图片
这里也是采用的Theme 的方案
- <style name=" AppTheme.NoActionBar.ScanDevice" parent=" OpenPlatformTheme.NoActionBar.ScanDevice">
- <!--<item name="adChartViewStyle">@style/chartViewColorModify>/item>-->
- <item name=" idelPic">@mipmap/icon_holy</item>
- <item name=" scanBtnBackgroud">@drawable/selector_shape_round</item>
- </style>
4.4 添加mac过滤器
添加一个过滤器
继承MacInterceptor 并实现Parcelable,重写父类方法
- public ResultInfo doInterceptor(String mac){ }
打开扫描界面时,调用如下方法
// 具体可以参数Demo
- DeviceScanActivity.start(this,new MyIntercepter(url,new String[ ]{"这里传递你可能用到的参数"}));
4.5 是否需要宫缩
- 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 取消上传胎心数据
如下例子
//注册广播
- IntentFilter intentFilter =new IntentFilter ()
- intentFilter.addAction(EventTools.ACTION_EVENT_NOTIFY );
- registerReceiver(broadcastReceiver, intentFilter );
- private BroadcastReceiver broadcastReceiver =new BroadcastReceiver() {
- @Override
- public void onReceiveContext context, Intent intent){
- String action = intent.getAction()
- if(EventTools.ACTION_EVENT_NOTIFY.equals(action)){
- Log.d("Terry",intent.getStringExtra(EventTools.ACTION_EXTRA_EVENT_TYPE());
- }
- }
- }
4.7 上传结果回调
MacInterceptor.class
- * 结束时按钮点周回调
- * @param isUpload 是否上传 false 为点击取消, true 为点击上传
- * @param info 胎心数据回调
- */
- public void onResultClick(boolean isUpload, FetalHeartCallBackInfo info){};
重写父类方法就可以,拿到回调
5.配置混淆过滤
- -keep class com.jumper.**{ *; }:
- -dontwarn com.jumper.**
6.胎心监测接入说明
A.开启蓝牙设备搜索界面
通过以下代码即可打开sdk中设备搜索界面:
- startActivity(new Intent(this, DeviceScanActivity.class);
B.设置id
为了帮助开发者准确定位监测数据是属于自有平台中哪位用户,可通过以下代码为SDK设置监测用户id,为可选项。
- JFetalHeartInterface.setUserId(userId);
userId为开发者自有平台中正在监测的用户唯一标识,String类型。
C.胎心监测界面截图
7.耳温计、血氧仪和体重称接入说明
A.扫描蓝牙设备:
public void startScan(DeviceScanCallback deviceScanCallback);
参数解释:
DeviceScanCallback deviceScanCallback:扫描结果回调,在onNewDeviceFind接收新扫描到的设备即可。
调用示例:
- BleHelper.getInstance(this).startScan(new DeviceScanCallback() {
- @Override
- public void onNewDeviceFind(BluetoothDevice device) {
- //回调中拿到扫描到的设备,可用列表形式进行展示
- }
- }
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:
字段名称 | 字段类型 | 字段含义 |
---|---|---|
SPO | String | 血氧饱和度 |
Plus | String | 灌注指数(PI) |
heart | String | 脉率 |
spoDataArray | String | 血氧饱和度实时数值 |
WeightResult:
字段名称 | 字段类型 | 字段含义 |
---|---|---|
weightFloat | float | 体重值 |
state | int | 测量状态 |
测量中:2 | ||
测量结束:3 |
另外设备连接状态回调中几个常量解释如下:
Result.STATE_CONNECTED:已连接
Result.STATE_DISCONNECTED:断开连接
Result.STATE_NOTIFY_SUCCESS:读取数据成功
调用示例:
- BleHelper.getInstance(this).connect(bluetoothDevice, deviceEnum,
- new Listener<ResultInterface>() {
- @Override
- public void onNewDeviceFind(BluetoothDevice device) {
- Log.i("Jumper", "读取结果:" + result.toString());
- }
- @Override
- public void onConnectedState(int state) {
- Log.i("Jumper", "连接状态:" + getStateName(state));
- }
- }
- private String getStateName(int state) {
- String stateName = "未知";
- switch (state) {
- case Result.STATE_CONNECTED:
- stateName = "已连接";
- break;
- case Result.STATE_DISCONNECTED:
- stateName = "断开连接";
- break;
- case Result.STATE_NOTIFY_SUCCESS:
- stateName = "读取数据成功";
- break;
- }
- return stateName;
- }
C.断开连接:
public void disConnect();
调用示例:
BleHelper.getInstance(this).disConnect();
D.在不需要连接的地方,比如activity的onDestroy()方法中调用资源销毁方法:
public void destroy();
调用示例:
BleHelper.getInstance(this).destroy();