跳转到主要内容

概述

DreisamLib 是一款用于设备连接与数据交互的SDK,提供设备连接管理、数据同步、历史数据获取等功能,适用于需要与特定设备进行通信的应用开发。

初始化相关方法

预初始化

void preInit(Application context)
  • 功能:SDK预初始化,必须在Application.onCreate函数主线程中调用
  • 特点
    • 耗时极少,不影响App首次冷启动体验
    • 不采集设备信息
  • 参数context - 应用上下文(Application实例)

正式初始化

void initSDK(String appId,DreisamLibBuilder builder)
  • 功能:完成SDK的正式初始化
  • 调用时机:可在预初始化后调用,耗时极少,不影响主线程,必须调用
  • 参数
    • appId - 开放平台生成的appId
    • builder - 配置构建器(用于配置SDK参数)

反初始化

void unInit()
  • 功能:反初始化SDK,释放相关资源,退出时候调用,该方法会清除所有数据。

设备连接管理

检查连接前置条件

可在连接前检查连接的必要条件,开发者也可根据Demo自行进行权限检查
void checkPreConditions(OnPreCheckListener listener)
  • 功能:检查系统授权及网络鉴权等连接前置条件
  • 参数listener - 前置检查监听器,用于接收检查结果

连接指定设备

连接指定的设备,扫描到设备的二维码后,把设备信息传入
  • 首次连接 开发者可在连接成功的回调中向服务器发起绑定请求.
  • 已经绑定 根据服务器绑定的设备信息,进行连接即可.
void connectDevice(String deviceInfo)
  • 功能:连接指定名称的设备
  • 参数deviceName - 待连接的设备名称

设置连接状态监听器

void connectListener(OnConnectListener onConnectListener)
  • 功能:设置设备连接状态监听器
  • 参数onConnectListener - 连接状态监听器实例
注: SDK内部实现了自动重连逻辑,开发者不需要处理断开重连。只需要做更新UI等业务逻辑即可。如果设备断开,SDK会在30s后尝试重新连接,如果重连失败,App在前台,延时后再次尝试连接,直到连接成功为止;如App在后台,因Android系统的进程管理,后台频繁操作会导致应用被挂起,则会等待心跳包再次连接。

检查设备连接状态

boolean isDeviceConnected()
  • 功能:检查设备是否已连接
  • 返回值true表示已连接,false表示未连接

断开设备连接

void disconnect()
  • 功能:断开当前设备连接

心跳检测

启动心跳检测

用于检测设备连接状态,每5分钟执行一次,如果未连接,SDK会重新尝试连接设备。开发者也可自己实现
void startHeartbeat()
  • 功能:启动设备心跳检测

停止心跳检测

应用退出等场景可以调用
void stopHeartbeat()
  • 功能:停止设备心跳检测

数据相关方法

设置数据同步监听器

void setSyncDatasListener(OnSyncDatasCallBack callBack)
  • 功能:设置数据同步状态监听器
  • 参数callBack - 同步状态监听器实例
注:
  • 正常情况下:回调的是SDK与设备未同步过的新数据
  • 更换新手机或退出登录后:会回调全部的数据上来,开发者可以根据自身服务器存储的最后一条消息,筛选需要的数据。

获取历史数据

void getHistory(long startTime, long endTime, OnHistoryDatasCallBack callBack)
  • 功能:获取指定时间范围内的历史数据
  • 参数
    • startTime - 开始时间戳(秒级)
    • endTime - 结束时间戳(秒级)
    • callBack - 历史数据回调接口

设置实时数据回调

设备上报的数据,正常状态下3分钟回调一次
void realTimeDataCallBack(OnAnalzeDatatListener listener)
  • 功能:设置实时数据回调监听器
  • 参数listener - 实时数据分析回调实例

日志相关

设置连接日志监听器

void setConnectLog(OnConnectLogListener onConnectLogListener)
  • 功能:设置连接日志监听器
  • 参数onConnectLogListener - 日志监听器实例

监听器接口

OnPreCheckListener

连接前置条件检查监听器
public interface OnPreCheckListener {
    /**
     * 系统授权状态变化
     * @param granted 是否授权通过
     * @param missingPermissions 缺失的权限列表
     */
    void onSystemPermissionChanged(boolean granted, List<String> missingPermissions);
}

OnAnalzeDatatListener

实时数据分析监听器
public interface OnAnalzeDatatListener {
    void analzeData(DreisamGlucoseModel data);
}

OnConnectListener

连接状态监听器
public interface OnConnectListener {
    void onConnecState(DreisamConnectEnum state);
    void onConnectSuccess();
}

OnConnectLogListener

连接日志监听器
public interface OnConnectLogListener {
    void onConnectLog(int state, String msg);
}

OnHistoryDatasCallBack

历史数据回调接口
public interface OnHistoryDatasCallBack {
   void onHistoryDatas(List<DreisamGlucoseModel> datas);
}

OnSyncDatasCallBack

数据同步监听器
public interface OnSyncDatasCallBack {
    /**
     * 同步开始
     * @param totalCount 总同步数量
     */
    void onSyncStart(int totalCount);

    /**
     * 同步进度更新
     * @param progress 进度百分比(0-100)
     */
    void onSyncProgress(int progress);

    /**
     * 同步完成
     * @param success 是否成功
     * @param datas 同步的数据列表
     */
    void onSyncComplete(boolean success, List<DreisamGlucoseModel> datas);
}

枚举类型

ConnectingState

连接状态枚举
public enum DreisamConnectEnum {
    AUTHENTICATION_FAIL, // 认证失败
    LACK_PERMISSION,     // 缺少权限
    DEVICE_CONNECTING,   // 设备真实连接中
    SHOW_CONNECTING,     // 显示连接中
    BLE_OFF              // 蓝牙关闭
}
注: DEVICE_CONNECTING和SHOW_CONNECTING区别:
  • DEVICE_CONNECTING设备断开就会回调
  • SHOW_CONNECTING用户关注的显示连接中,如果最近的数据不是最新的数据,需要更新并且设备还未连接,才会回调。

数据模型

DreisamGlucoseModel

血糖数据模型
class DreisamGlucoseModel() {
    var timeCreate: Long = 0  // 数据创建时间(秒级时间戳)
    var timeSave: Long = 0    // 数据保存时间(秒级时间戳)
    var packageNumber: Int = 0 // 包号
    var glucose: Float = 0f   // 血糖值
    var type: Int = 1         // 数据类型(1:初始化值,正常值)
    var trend = 0             // 血糖趋势(1:平稳,5:斜升,10:斜降,15:直升,20:直降)

    // 打印数据信息
    fun printMessage(): String { ... }

}

使用流程建议

  1. Application.onCreate()中调用preInit()进行预初始化
  2. 合适时机调用initSDK()完成正式初始化
  3. 设置必要的监听器(连接状态、数据同步等)
  4. 调用checkPreConditions()检查前置条件
  5. 前置条件满足后,调用connectDevice()连接设备
  6. 设备连接成功后,可进行数据同步、获取历史数据或接收实时数据
  7. 不需要使用时,调用disconnect()断开连接,必要时调用unInit()释放资源