XinJieSmartSDK 安卓接口说明书

版本

1. 初始化

1.1 获取实例

XinJieSmartSDK sdk = XinJieSmartSDK.getInstance();

1.2 初始化(无鉴权)

void init(Context context)

参数: - context - Android上下文

1.3 初始化(带鉴权)

void init(Context context, String userId, String userKey)

参数: - context - Android上下文 - userId - 用户ID - userKey - 用户密钥


2. 鉴权

2.1 设置用户ID

void setUserId(String userId)

2.2 设置用户密钥

void setUserKey(String userKey)

2.3 获取用户ID

String getUserId()

2.4 获取用户密钥

String getUserKey()

2.5 手动触发鉴权

void authenticate(AuthCallback callback)

回调接口:

public interface AuthCallback {
    void onAuthResult(boolean success, String error);
}

2.6 检查是否已鉴权

boolean isAuthenticated()

3. 蓝牙状态

3.1 检查蓝牙是否可用

boolean isBluetoothAvailable()

3.2 检查蓝牙是否开启

boolean isBluetoothEnabled()

3.3 检查位置权限

boolean hasLocationPermission()

3.4 检查蓝牙权限

boolean hasBluetoothPermission()

4. 设备扫描

4.1 扫描设备(无过滤)

void scanDevices(ScanCallback callback)

4.2 扫描设备(名称过滤)

void scanDevices(String nameFilter, ScanCallback callback)

参数: - nameFilter - 设备名称前缀过滤

4.3 停止扫描

void stopScan()

回调接口:

public interface ScanCallback {
    void onScanStarted();
    void onDeviceFound(BleDevice device);
    void onScanFinished();
    void onScanFailed(String error);
}

5. 设备连接

5.1 通过地址连接

void connect(String deviceAddress, ConnectionCallback callback)
void connect(String deviceAddress)

5.2 通过名称连接

void connectByName(String deviceName, ConnectionCallback callback)

5.3 断开连接

void disconnect()
void disconnect(DisconnectCallback callback)
void disconnectAll()

5.4 检查连接状态

boolean isConnected()
String getConnectedDeviceAddress()

回调接口:

public interface ConnectionCallback {
    void onConnecting();
    void onConnected(BleDevice device);
    void onDisconnected();
    void onServicesDiscovered();
    void onConnectFailed(String error);
    void onConnectionStateChanged(ConnectionState state);
    void onDataReceived(byte[] data);
}

public interface DisconnectCallback {
    void onDisconnected();
}

6. 数据通信

6.1 发送数据(带命令和载荷)

void sendData(byte[] command, byte[] payload, SendCallback callback)
void sendData(byte[] command, byte[] payload, int retryCount, long delay, SendCallback callback)
void sendData(byte command, byte[] payload, SendCallback callback)
void sendData(byte command, byte[] payload, int retryCount, long delay, SendCallback callback)

6.2 发送数据(带重试)

void sendDataWithRetry(byte[] command, byte[] payload, int retryCount, long delay, SendCallback callback)

6.3 写入数据

void writeData(byte[] data, WriteCallback callback)
void writeData(UUID serviceUuid, UUID characteristicUuid, byte[] data, WriteCallback callback)
void writeData(UUID characteristicUuid, byte[] data, WriteCallback callback)

6.4 读取数据

void readData(ReadCallback callback)
void readData(UUID serviceUuid, UUID characteristicUuid, ReadCallback callback)

6.5 发送心跳

void sendHeartbeat(HeartbeatCallback callback)

6.6 设置数据接收监听

void setReceiveListener(ReceiveListener listener)

回调接口:

public interface SendCallback {
    void onSendSuccess();
    void onSendFailed(String error);
    void onRetry(int count);
    void onResponse(byte[] command, byte[] data);
}

public interface WriteCallback {
    void onWriteSuccess();
    void onWriteFailed(String error);
}

public interface ReadCallback {
    void onReadSuccess(byte[] data);
    void onReadFailed(String error);
}

public interface HeartbeatCallback {
    void onHeartbeatSuccess();
    void onHeartbeatFailed(String error);
}

public interface ReceiveListener {
    void onDataReceived(byte[] command, byte[] data);
}

7. Ring设备功能

7.1 获取设备时间

void fetchTime_ring(RespondCallback callback)

7.2 同步时间

void synchronizeTime_ring(RespondCallback callback)

7.3 获取固件版本

void fetchRingversion_ring(RespondCallback callback)

7.4 获取电池电量

void fetchBatteryLevel_ring(RespondCallback callback)

7.5 重置设备

void reset_ring(RespondCallback callback)

7.6 获取步数

void fetchLastStep_ring(RespondCallback callback)

7.7 获取心率/血压/压力数据

void fetchLastOtherValue_ring(RespondCallback callback)

7.8 获取充电状态

void fetchBatteryChargingStatus_ring(RespondCallback callback)

7.9 获取触摸阈值

void fetchTouchthreshold_ring(RespondCallback callback)

7.10 获取设备健康状态

void fetchGoodOrBad_ring(RespondCallback callback)

7.11 获取MAC地址

void fetchiOSRealMac_ring(RespondCallback callback)

7.12 设置心率阈值

void heartSetting_ring(int setValue, RespondCallback callback)

7.13 设置血氧阈值

void bloodSetting_ring(int setValue, RespondCallback callback)

7.14 设置血压阈值

void pressSetting_ring(int setValue, RespondCallback callback)

7.15 设置自动连接

void autoLinkSetting_ring(boolean enable, RespondCallback callback)

7.16 检查自动连接状态

boolean isAutoLinkEnabled()

7.17 取消自动连接

void unAutoLinkSetting_ring(RespondCallback callback)

7.18 获取批量数据

void fetchBatchDataFromBluetooth(Map<String, Long> timestampMap, RespondCallback callback)

7.19 获取最新单条数据

void fetchLatestDataByType(int dataType, long timestamp, int maxRetries, RespondCallback callback)

7.20 关机

void shutdown_ring(WriteCallback callback)

回调接口:

public interface RespondCallback {
    void onRespond(Map<String, Object> result, String error);
}

8. 健康测试功能

8.1 心率测试

void heartRate_test(RespondCallback callback)

8.2 血氧测试

void bloodOxygen_test(RespondCallback callback)

8.3 HRV测试

void hrv_test(RespondCallback callback)

8.4 停止手动测试

void stopManualTesting()

8.5 获取心率数据

void fetchHeartData(int maxRetries, RespondCallback callback)
void fetchHeartData(RespondCallback callback)
void fetchHeartData(int maxRetries, long retryDelay, RespondCallback callback)

8.6 获取血氧数据

void fetchOxygenbloodData(int maxRetries, RespondCallback callback)
void fetchOxygenbloodData(RespondCallback callback)
void fetchOxygenbloodData(int maxRetries, long retryDelay, RespondCallback callback)

8.7 获取HRV数据

void fetchHRVData(int maxRetries, RespondCallback callback)
void fetchHRVData(RespondCallback callback)
void fetchHRVData(int maxRetries, long retryDelay, RespondCallback callback)

9. OTA升级

9.1 开始OTA升级(URL)

void startOtaUpgrade(String firmwareUrl, OtaCallback callback)

9.2 开始OTA升级(本地文件)

void startOtaUpgrade(String firmwarePath)

9.3 开始OTA升级(固件数据)

void startOtaUpgrade(byte[] firmwareData, OtaCallback callback)

9.4 获取固件路径

String getFirmwarePath()

9.5 获取OTA设备地址

String getConnectedDeviceAddressForOta()

回调接口:

public interface OtaCallback {
    void onDownloadProgressChanged(int percent);  // 下载进度 0-100
    void onProgressChanged(int percent, int speed, int avgSpeed);  // OTA升级进度
    void onStatusChanged(String status);
    void onCompleted();
    void onError(String error);
}

10. 常量

测试类型

public static final int TEST_TYPE_NONE = 0;
public static final int TEST_TYPE_HEART_RATE = 1;
public static final int TEST_TYPE_BLOOD_OXYGEN = 2;
public static final int TEST_TYPE_HRV = 3;
public static final int TEST_TYPE_FETCH_HEART = 4;
public static final int TEST_TYPE_FETCH_BLOOD_OXYGEN = 5;
public static final int TEST_TYPE_FETCH_HRV = 6;

命令码

public static final byte CMD_CONNECT = 0x01;
public static final byte CMD_DISCONNECT = 0x02;
public static final byte CMD_GET_STATUS = 0x03;
public static final byte CMD_SEND_DATA = 0x04;
public static final byte CMD_HEARTBEAT = 0x05;
public static final byte CMD_CONTROL = 0x10;
public static final byte CMD_QUERY = 0x11;
public static final byte CMD_RESPONSE = (byte) 0x80;
public static final byte CMD_ERROR = (byte) 0xFF;

11. 其他

11.1 获取配置

SDKConfig getConfig()

11.2 销毁SDK

void destroy()

使用示例

// 1. 初始化
XinJieSmartSDK sdk = XinJieSmartSDK.getInstance();
sdk.init(context, "userId", "userKey");

// 2. 扫描设备
sdk.scanDevices("XinJie", new XinJieSmartSDK.ScanCallback() {
    @Override
    public void onScanStarted() { }
    
    @Override
    public void onDeviceFound(BleDevice device) {
        Log.d("TAG", "Found: " + device.getName() + " - " + device.getAddress());
    }
    
    @Override
    public void onScanFinished() { }
    
    @Override
    public void onScanFailed(String error) { }
});

// 3. 连接设备
sdk.connect(deviceAddress, new XinJieSmartSDK.ConnectionCallback() {
    @Override
    public void onConnecting() { }
    
    @Override
    public void onConnected(BleDevice device) {
        Log.d("TAG", "Connected to: " + device.getName());
    }
    
    @Override
    public void onDisconnected() { }
    
    @Override
    public void onServicesDiscovered() { }
    
    @Override
    public void onConnectFailed(String error) { }
    
    @Override
    public void onConnectionStateChanged(ConnectionState state) { }
    
    @Override
    public void onDataReceived(byte[] data) { }
});

// 4. 获取心率测试
sdk.heartRate_test(new XinJieSmartSDK.RespondCallback() {
    @Override
    public void onRespond(Map<String, Object> result, String error) {
        if (error != null) {
            Log.e("TAG", "Error: " + error);
        } else {
            Log.d("TAG", "Result: " + result);
        }
    }
});

// 5. OTA升级
String firmwareUrl = "https://www.xinjiesmart.com/download/0.26.04.1.1.zip";
sdk.startOtaUpgrade(firmwareUrl, new XinJieSmartSDK.OtaCallback() {
    @Override
    public void onDownloadProgressChanged(int percent) {
        Log.d("TAG", "Download: " + percent + "%");
    }
    
    @Override
    public void onProgressChanged(int percent, int speed, int avgSpeed) {
        Log.d("TAG", "OTA: " + percent + "%");
    }
    
    @Override
    public void onStatusChanged(String status) { }
    
    @Override
    public void onCompleted() {
        Log.d("TAG", "OTA Completed");
    }
    
    @Override
    public void onError(String error) {
        Log.e("TAG", "OTA Error: " + error);
    }
});