XinJieSmartSDK sdk = XinJieSmartSDK.getInstance();void init(Context context)参数: - context - Android上下文
void init(Context context, String userId, String userKey)参数: - context - Android上下文 -
userId - 用户ID - userKey - 用户密钥
void setUserId(String userId)void setUserKey(String userKey)String getUserId()String getUserKey()void authenticate(AuthCallback callback)回调接口:
public interface AuthCallback {
void onAuthResult(boolean success, String error);
}boolean isAuthenticated()boolean isBluetoothAvailable()boolean isBluetoothEnabled()boolean hasLocationPermission()boolean hasBluetoothPermission()void scanDevices(ScanCallback callback)void scanDevices(String nameFilter, ScanCallback callback)参数: - nameFilter -
设备名称前缀过滤
void stopScan()回调接口:
public interface ScanCallback {
void onScanStarted();
void onDeviceFound(BleDevice device);
void onScanFinished();
void onScanFailed(String error);
}void connect(String deviceAddress, ConnectionCallback callback)
void connect(String deviceAddress)void connectByName(String deviceName, ConnectionCallback callback)void disconnect()
void disconnect(DisconnectCallback callback)
void disconnectAll()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();
}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)void sendDataWithRetry(byte[] command, byte[] payload, int retryCount, long delay, SendCallback callback)void writeData(byte[] data, WriteCallback callback)
void writeData(UUID serviceUuid, UUID characteristicUuid, byte[] data, WriteCallback callback)
void writeData(UUID characteristicUuid, byte[] data, WriteCallback callback)void readData(ReadCallback callback)
void readData(UUID serviceUuid, UUID characteristicUuid, ReadCallback callback)void sendHeartbeat(HeartbeatCallback callback)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);
}void fetchTime_ring(RespondCallback callback)void synchronizeTime_ring(RespondCallback callback)void fetchRingversion_ring(RespondCallback callback)void fetchBatteryLevel_ring(RespondCallback callback)void reset_ring(RespondCallback callback)void fetchLastStep_ring(RespondCallback callback)void fetchLastOtherValue_ring(RespondCallback callback)void fetchBatteryChargingStatus_ring(RespondCallback callback)void fetchTouchthreshold_ring(RespondCallback callback)void fetchGoodOrBad_ring(RespondCallback callback)void fetchiOSRealMac_ring(RespondCallback callback)void heartSetting_ring(int setValue, RespondCallback callback)void bloodSetting_ring(int setValue, RespondCallback callback)void pressSetting_ring(int setValue, RespondCallback callback)void autoLinkSetting_ring(boolean enable, RespondCallback callback)boolean isAutoLinkEnabled()void unAutoLinkSetting_ring(RespondCallback callback)void fetchBatchDataFromBluetooth(Map<String, Long> timestampMap, RespondCallback callback)void fetchLatestDataByType(int dataType, long timestamp, int maxRetries, RespondCallback callback)void shutdown_ring(WriteCallback callback)回调接口:
public interface RespondCallback {
void onRespond(Map<String, Object> result, String error);
}void heartRate_test(RespondCallback callback)void bloodOxygen_test(RespondCallback callback)void hrv_test(RespondCallback callback)void stopManualTesting()void fetchHeartData(int maxRetries, RespondCallback callback)
void fetchHeartData(RespondCallback callback)
void fetchHeartData(int maxRetries, long retryDelay, RespondCallback callback)void fetchOxygenbloodData(int maxRetries, RespondCallback callback)
void fetchOxygenbloodData(RespondCallback callback)
void fetchOxygenbloodData(int maxRetries, long retryDelay, RespondCallback callback)void fetchHRVData(int maxRetries, RespondCallback callback)
void fetchHRVData(RespondCallback callback)
void fetchHRVData(int maxRetries, long retryDelay, RespondCallback callback)void startOtaUpgrade(String firmwareUrl, OtaCallback callback)void startOtaUpgrade(String firmwarePath)void startOtaUpgrade(byte[] firmwareData, OtaCallback callback)String getFirmwarePath()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);
}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;SDKConfig getConfig()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);
}
});