跳转到主要内容

一、概述

DreisamLib 是一款用于设备连接、数据交互(如血糖数据同步、实时获取)的 SDK,提供了设备绑定、登录、连接管理、数据同步、心跳检测等核心能力,适用于与血糖监测类设备进行交互的场景。

二、初始化

2.1 预初始化

功能说明

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

参数说明

参数名类型说明
contextApplication应用的 Application 上下文

使用示例

public class MyApplication extends Application {
   @Override
   public void onCreate() {
       super.onCreate();
       // 预初始化SDK
       DreisamLib.preInit(this);
  }
}

2.2 正式初始化

功能说明

完成 SDK 核心初始化,后调用,耗时极少,不影响主线程,必须调用。
public static void initSDK(String appdId, DreisamLibBuilder builder)

参数说明

参数名类型说明
appdIdString从开发平台获取的应用唯一标识
builderDreisamLibBuilder初始化配置构建器

使用示例

// 构建配置
DreisamLibBuilder builder = new DreisamLibBuilder();
builder.setHideLog(false); // 显示日志
// 正式初始化
DreisamLib.initSDK("your_appdid", builder);

2.3 初始化配置类(DreisamLibBuilder)

方法说明参数
setHideLog(boolean hideLog)设置是否隐藏日志hideLog:true(隐藏,默认)/ false(显示)
isHideLog()获取日志隐藏状态-

三、核心功能接口

3.1 连接前置条件检查

功能说明

检查系统授权、网络鉴权等设备连接的前置条件,开发者也可根据Demo自行进行权限检查。
void checkPreConditions(OnPreCheckListener listener)

参数说明

参数名类型说明
listenerOnPreCheckListener前置条件检查监听器

监听器(OnPreCheckListener)

回调方法说明参数
onSystemPermissionChanged(boolean granted, List<String> missingPermissions)系统授权状态变化回调granted:是否授权通过;missingPermissions:缺失的权限列表

3.2 登录

功能说明

用户登录,关联用户平台 Token 与区域信息。
void login(String areaCode, String userToken, OnLoginListener listener)

参数说明

参数名类型说明
areaCodeString区域编码
userTokenString用户平台 Token
listenerOnLoginListener登录结果回调

监听器(OnLoginListener)

回调方法说明参数
loginFail(int code,String msg)登录失败code:错误码;msg:错误信息
loginSucc(boolean hasAvailableDevice, DrisamDeviceModel deviceInfoModel)登录成功deviceInfoModel:设备信息模型;hasAvailableDevice:是否有可用设备

设备信息模型(DrisamDeviceModel)

字段类型说明
deviceSnString设备序列号
partnerIdString产品ID
estimatedEndAtLong设备结束使用时间戳
iconUrlString产品图标URL
statusInt设备状态(0:未绑定;1:已绑定;2:已激活;3:已结束)
注: 登录成功后,如果hasAvailableDevice = true,说明有可用设备,后续直接进行连接即可。如果hasAvailableDevice = false,说明无可用设备,后续需要绑定设备成功后才可调用连接。

3.3 登出

功能说明

登出并清除所有用户数据。
void logout()

3.4 设备绑定

功能说明

绑定指定名称的设备,绑定过程通过监听器反馈状态。
void bindDevice(String deviceName, OnBindListener listener)

参数说明

参数名类型说明
deviceNameString设备名称
listenerOnBindListener绑定状态监听器

监听器(OnBindListener)

回调方法说明参数
onBindFail(int code, String msg)绑定失败code:错误码;msg:错误信息
onBindSuccess(DrisamDeviceModel deviceInfoModel)绑定成功deviceInfoModel:设备信息模型
onBinding(DreisamBindingEnum bindingCode)绑定中bindingCode:绑定状态枚举(校验中/扫描中/连接中/绑定中)

绑定状态枚举(DreisamBindingEnum)

枚举值说明
CHEACKING校验中
SCANTING搜索扫描中
CONNECTING连接中
BINDTING绑定中
注: 绑定成功后,无需再调用连接方法,SDK内部会实现绑定后连接的操作。

3.5 设备连接管理

3.5.1 连接设备

功能说明

根据登录后的信息,如果返回有可用设备直接直接进行连接,无可用设备则去绑定。
void connectDevice()
注: SDK内部实现了自动重连逻辑,开发者不需要处理断开重连。只需要做更新UI等业务逻辑即可。如果设备断开,SDK会在30s后尝试重新连接,如果重连失败,App在前台,延时后再次尝试连接,直到连接成功为止;如App在后台,因Android系统的进程管理,后台频繁操作会导致应用被挂起,则会等待心跳包再次连接。

3.5.2 检查设备连接状态

boolean isDeviceConnected()
返回值
类型说明
booleantrue(已连接)/ false(未连接)

3.5.3 断开设备连接

void disconnect()

3.5.4 结束设备使用

功能说明
用户自行结束设备周期,结束后设备不可再使用,结果通过回调反馈。
void finishDevice(ValueCallBack<Boolean> valueCallBack)

3.5.5 连接状态监听

void connectListener(OnConnectListener onConnectListener)
监听器(OnConnectListener)
回调方法说明参数
onConnecState(ConnectingState state)连接状态变化state:连接状态枚举
onConnectSuccess()连接成功-
DreisamConnectEnum(连接状态枚举)
枚举值说明
AUTHENTICATION_FAIL认证失败
LACK_PERMISSION权限缺失
DEVICE_CONNECTING设备连接中
SHOW_CONNECTING显示连接中
BLE_OFF蓝牙关闭
NO_AVAILABLE_DEVICE无可用设备
TOKEN_INVALIDToken 无效
DEVICE_FINISH设备已结束使用
注: DEVICE_CONNECTING和SHOW_CONNECTING区别:
  • DEVICE_CONNECTING设备断开就会回调
  • SHOW_CONNECTING用户关注的显示连接中,如果最近的数据不是最新的数据,需要更新并且设备还未连接,才会回调。

3.6 心跳检测

3.6.1 启动心跳检测

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

3.6.2 停止心跳检测

void stopHeartbeat()

3.7 数据交互

3.7.1 数据同步监听

功能说明
回调的是SDK与设备未同步过的新数据
void setSyncDatasListener(OnSyncDatasCallBack callBack)
监听器(OnSyncDatasCallBack)
回调方法说明参数
onSyncStart(int totalCount)同步开始totalCount:总同步数据量
onSyncProgress(int progress)同步进度更新progress:进度百分比(0-100)
onSyncComplete(boolean success, List<GlucoseBean> datas)同步完成success:是否成功;datas:同步到的血糖数据列表

3.7.2 实时数据回调

功能说明
设备上报的数据,正常状态下3分钟回调一次

void realTimeDataCallBack(OnAnalzeDatatListener listener)
监听器(OnAnalzeDatatListener)
回调方法说明参数
analzeData(GlucoseBean data)实时血糖数据回调data:血糖数据模型

3.7.3 血糖数据模型(GlucoseBean)

字段类型说明
timeCreateLong数据创建时间戳(秒)
timeSaveLong数据保存时间戳(秒)
packageNumberInt数据包号
glucoseFloat血糖值
typeInt数据类型(1:初始化值/正常值)
trendInt血糖趋势(1:平稳;5:斜升;10:斜降;15:直升;20:直降)
辅助方法说明
----------------
printMessage()返回格式化的血糖数据字符串
getTimeCreateStrHM()返回数据创建时间的“时:分”格式字符串

3.8 日志监听

3.8.1 连接日志监听

方法签名
void setConnectLog(OnConnectLogListener onConnectLogListener)
监听器(OnConnectLogListener)
回调方法说明参数
onConnectLog(int state, String msg)连接日志回调state:日志状态码;msg:日志信息

四、通用回调接口

5.1 ValueCallBack<T>

方法说明参数
succ(T t)操作成功回调t:成功返回的数据
fail(int code, String msg)操作失败回调code:错误码;msg:错误信息

五、使用流程示例


// 1. 应用初始化时预初始化SDK
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        DreisamLib.preInit(this);
        // 2. 初始化SDK
        DreisamLibBuilder builder = new DreisamLibBuilder();
        builder.setHideLog(false);
        DreisamLib.initSDK("your_appdid", builder);
    }
}

// 3. 检查连接前置条件
ConnectCtrl.getInstance().checkPreConditions(new OnPreCheckListener() {
    @Override
    public void onSystemPermissionChanged(boolean granted, List<String> missingPermissions) {
        if (granted) {
            // 权限通过,执行登录
            login();
        } else {
            // 处理权限缺失
            requestPermissions(missingPermissions);
        }
    }
});

// 4. 登录
private void login() {
    ConnectCtrl.getInstance().login("cn", "user_token", new ValueCallBack<LoginInfoModel>() {
        @Override
        public void succ(LoginInfoModel loginInfoModel) {
            if (!loginInfoModel.hasAvailableDevice) {
                // 无可用设备,去绑定设备
                bindDevice();
            }else{
              	// 有可用设备,去连接
              	connectDevice() 
            }
        }

        @Override
        public void fail(int code, String msg) {
            // 登录失败处理
        }
    });
}

// 5. 绑定设备
private void bindDevice() {
    InnerConnectCtrl.getInstance().bindDevice("device_name", new OnBindListener() {
        @Override
        public void onBindFail(int code, String msg) {
            // 绑定失败处理
        }

        @Override
        public void onBindSuccess(DrisamDeviceModel deviceInfoModel) {
            // 绑定成功,连接设备
            connectDevice();
        }

        @Override
        public void onBinding(DreisamBindingEnum bindingCode) {
            // 绑定中状态更新
        }
    });
}

// 6. 连接设备并监听状态
private void connectDevice() {
   // 监听数据
    dataListener();
    // 设置连接状态监听
    InnerConnectCtrl.getInstance().connectListener(new OnConnectListener() {
        @Override
        public void onConnecState(ConnectingState state) {
            // 连接状态变化处理
        }

        @Override
        public void onConnectSuccess() {
           
        }
    });
    // 连接设备
    InnerConnectCtrl.getInstance().connectDevice();
}

// 7. 数据监听
private void dataListener() {
    // 监听实时血糖数据
    InnerConnectCtrl.getInstance().realTimeDataCallBack(new OnAnalzeDatatListener() {
        @Override
        public void analzeData(GlucoseBean data) {
            // 处理实时血糖数据
            Log.d("Glucose", data.printMessage());
        }
    });
    // 监听数据同步
    InnerConnectCtrl.getInstance().setSyncDatasListener(new OnSyncDatasCallBack() {
        @Override
        public void onSyncStart(int totalCount) {
            // 同步开始
        }

        @Override
        public void onSyncProgress(int progress) {
            // 同步进度更新
        }

        @Override
        public void onSyncComplete(boolean success, List<GlucoseBean> datas) {
            // 同步完成,处理历史数据
        }
    });
}

使用流程建议

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