Skip to main content
版本:1.2.4

Android

Alg SDK接入说明

流程图

流程图

环境要求

手动集成SDK步骤

下载alg-android-v1.2.aar

  • 复制文件alg-android-v1.2.aar到工程libs目录

app module下的build.gradle添加以下内容

    repositories {
flatDir {
dirs 'libs'
}
}

implementation(name:'alglibrary', ext:'aar')

SDK使用据需要申请蓝牙相关权限

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

SDK初始化方法说明

AlgSdk.init(context, accountId, token, algSdkInitCallback)

ParameterTypeDescription
contextActivity当前 activity context
accountIdString唯一的accountId需要找dbay团队提供
tokenString唯一的token需要找dbay团队提供
algSdkInitCallbackAlgSdkInitCallbackAlgSdkInitCallback 有2个回调方法:1. onSdkInitSuccess 成功之后可以调用SDK的方法;2. onSdkInitFail 初始化失败返回错误信息

SDK 添加设备方法

调用时机,在连接成功回调中调用 AlgSdk.addDevice(String deviceName)

ParameterTypeDescription
deviceNameString头环设备名称
ResultTypeDescription
deviceIndexint设备序号

示例代码:

    @Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState);
if (newState == STATE_CONNECTED) {
deviceIndex = algSdk.addDevice(gatt.getDevice().getName());
//通过mBluetoothGatt.discoverServices(),我们就可以获取到ble设备的所有Services。
gatt.discoverServices();
} else if (newState == STATE_DISCONNECTED) {
algSdk.deleteDevice(gatt.getDevice().getName());
}
}

SDK 删除设备方法

调用时机,在断开连接回调中调用 AlgSdk.deleteDevice(String deviceName)

注意:在多设备连接情况下,必须成对添加和删除对应的设备,保证算法数据不错乱

ParameterTypeDescription
deviceNameString头环设备名称
ResultTypeDescription
deviceIndexint设备序号

SDK 算法调用

AlgSdk.warpAlgorithm(double[] data, int deviceIndex, boolean onEEG)

ParameterTypeDescription
datadouble[]输入蓝牙原始数据数组
deviceIndexint设备序号
onEEGboolean是否返回原始数据(如果不需要原始eeg数据,设置为false
ResultTypeDescription
algorithmJSONObject算法返回结果

algData为所有指标和能量数据

signal说明 0信号质量好,1信号质量异常

{
"algData":{
"mindfulness":-0.441,
"stress":41,
"fatigue":100,
"relaxation":100,
"emotion":0.3051,
"focus":32,
"energy":{
"alpha":1.2708,
"beta":1.931,
"theta":11.6847,
"delta":84.8496,
"gamma":0.2639
},
"signal":0
}
}

包含原始数据JSON,AF7Data为AF7通道数据,AF8Data为AF8通道数据

{
"AF7Data":Array[29],
"AF8Data":Array[29],
"algData":{
"mindfulness":0.3408,
"stress":65,
"fatigue":77,
"relaxation":77,
"emotion":-0.1953,
"focus":42,
"energy":{
"alphaRelative":0,
"betaRelative":0,
"thetaRelative":0,
"deltaRelative":0,
"gammaRelative":0,
"alphaAbsolute":0,
"betaAbsolute":0,
"thetaAbsolute":0,
"deltaAbsolute":0,
"gammaAbsolute":0
},
"signal":0
}
}

算法指标说明请参考:数据说明

示例代码:

    byte[] data = characteristic.getValue();
if (characteristic.getUuid().toString().equals(UUID_CHARACTER_NOTIFY1)) {
JSONObject object = algSdk.warpAlgorithm(data, deviceIndex);
if (object != null) {
Log.d(TAG, "onCharacteristicChanged: " + object.toString());
}
}

SDK 正念指标雷达图分数

AlgSdk.getMindfulness(double[] data,int len)

ParameterTypeDescription
datadouble[]512个AF7原始数据+512个AF8原始数据 的一维数组
lenint数据长度(请传512)
ResultTypeDescription
mindfuldouble正念指标值

AlgSdk.getMindfulnessScore(double[] data,int len)

ParameterTypeDescription
datadouble[]脑电算法计算的正念值数组(经过getMindfulness得到)
lenint数据长度
ResultTypeDescription
mindMindScore算法返回多维度分数
public class MindScore {
public int stability;//正念稳定度
public double potential;//正念潜力值
public double percent;//正念占比时间
public int score;//正念得分

多维度分数请参考:数据说明