跳转至

Android SDK使用说明

最后更新:2022年08月16日

BLE SDK接入步骤

接口文档请见 Android BLE SDK文档

1. 引入依赖包

implementation files('libs/blelib.jar')
implementation 'androidx.legacy:legacy-support-v4:1.0.0'

2. 权限

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application>
<service
    android:name="com.ble.ble.BleService"
    android:enabled="true"
    android:exported="false" />
</application>

3. 初始化

BleMainProxy.getInstance().init(getApplicationContext());
//用户信息 部分功能需要先设置用户信息
BleMainProxy.bleConfiguration =new BleConfiguration(
        年龄,
        体重,
        身高,
        用户id);

4. 指令发送

DeviceCmdUtil 提供设备指令发送函数

5.设备响应结果

通过 EventBus 透传设备的响应结果及相应数据在相关页面注册 EventBus

EventBus.getDefault().register(this);

订阅需要的事件
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
    switch (event.messageType) {
        case msgType_Query_Device_Time:

            break;

        ....................

    }
}

事件类型定义

事件 说明
msgType_Connect 设备连接成功
msgType_BatteryPercent 电池电量变化
msgType_Bind 用户绑定
msgType_Offline_Del 删除多导联离线文件
msgType_Device 扫描到的设备
msgType_Synthesize 综合数据
msgType_RELEASE 解除绑定
msgType_Query_User_Info 用户信息查询结果
msgType_Set_User_Info 设置用户信息
msgType_Set_User_Id 设置用户id
msgType_Query_User_Id 查询用户id
msgType_Clear_Offline_Data 删除离线设备主机中所有离线数据
msgType_Offline_Space 查询主机离线数据空间
msgType_Offline_Detail 查询离线上传详情
msgType_Set_Offline_Time 设置自动离线时间
msgType_Set_Offline_Switch 设置自动离线开关
msgType_Query_Device_Time 查询主机时间
msgType_Set_Device_Time 设置主机时间
msgType_Query_User_Name 查询用户名
msgType_Set_User_Name 设置用户名
msgType_Set_WIFI_INFO 设置WIFI
msgType_Query_WIFI_Name 查询WIFI名
msgType_Query_WIFI_Password 查询WIFI密码

ECG SDK接入步骤

接口文档请见 Android ECG SDK文档

1、绘制实时心电数据

在布局文件中添加 EcgRealView

<com.amsu.ecglib.EcgRealView
    android:id="@+id/ecg"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

绘制心电图

ecg = findViewById(R.id.ecg);
// 设置采样率和gaink值
// 心电贴产品取3466,V6主机取4096
ecg.setEcgType(1504096);
// 获取原始数据
BleServiceProxy.getInstance().setOriginalDataCallback(new BleServiceProxy.OriginalDataCallback() {
    @Override
    public void originalData(byte[] ecgValue) {
        // 滤波后绘制实时心电图
        ecg.drawRealEcg(EcgFilterUtil.filter(ecgValue));

    }
});

注意

请仅在页面可见的情况下执行绘制函数,否则可能因数据堆积导致绘图速度异常。

2、绘制在线心电文件

在线心电文件是指通过 APP 蓝牙传输并保存的心电文件

在布局文件中添加 EcgNewView

<com.amsu.ecglib.EcgNewView
    android:id="@+id/ecg"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/topbar"
    android:layout_above="@+id/layout2"/>

绘制在线心电文件

// 设置采样率和gainK值
// gaink值心电贴产品取3466,V6主机取4096
ecg.setEcgType(150, 4096);

// 对于AMSU APP端采集的文件,跳过文件前256个字节头部信息
inputStream.skip(256);
inputStream.read(ecgValues);

// 传递滤波后的数据
int[] datas = EcgFilterUtil.filter(ecgValues);
ecg.drawOfflineEcg(datas);

// 开始绘制
ecg.startDraw();

// 暂停绘制
ecg.pauseDraw();

3、绘制设离线心电文件

离线心电文件是指在设备内存储并通过蓝牙、Wi-Fi 或数据线导出的心电文件

在布局文件中添加 EcgNewView

<com.amsu.ecglib.EcgNewView
    android:id="@+id/ecg"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/topbar"
    android:layout_above="@+id/layout2"/>

绘制离线心电文件

// 设置采样率和gainK值
ecg.setEcgType(250, 3466);

// 对于心电贴离线文件,每1024个字节为一包,每包跳过前24个字节头部信息
ecgValues = new byte[totalCount/1024*1000];
byte[] temp = new byte[1024];
int i = 0;
while (inputStream.read(temp)!=-1) {
    byte[] copy = Arrays.copyOfRange(temp, 24, temp.length);
    System.arraycopy(copy,0,ecgValues,i*1000,copy.length);
    i++;
}

// 传递滤波后的数据
int[] datas = EcgFilterUtil.filter(ecgValues);
ecg.drawOfflineEcg(datas);

// 开始绘制
ecg.startDraw();

// 暂停绘制
ecg.pauseDraw();