Skip to main content
版本:1.2.4

Android

Alg SDK接入説明

流程圖

流程圖

環境要求

手動集成SDK步驟

下載alg-android-v1.0.aar

  • 複製文件alg-android-v1.0.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":{
"alpha":4.3394,
"beta":13.9877,
"theta":20.8158,
"delta":58.8296,
"gamma":2.0275
},
"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[]腦電算法計算 mindfulness 组成的数组
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;//正念得分

多維度分數請參考:數據説明