Browse Source

ecg connect

zzf 1 year ago
parent
commit
0d6fa34f66

+ 75 - 4
sample/src/main/java/com/yanzhenjie/andserver/sample/controller/CommonController.java

@@ -3,6 +3,7 @@ package com.yanzhenjie.andserver.sample.controller;
 import android.annotation.SuppressLint;
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.le.BluetoothLeScanner;
+import android.graphics.Color;
 import android.os.Build;
 import android.util.Log;
 
@@ -18,15 +19,17 @@ import com.yanzhenjie.andserver.annotation.RequestParam;
 import com.yanzhenjie.andserver.annotation.RestController;
 import com.yanzhenjie.andserver.sample.MainActivity;
 import com.yanzhenjie.andserver.sample.model.ConnectBluetoothRequestParam;
-import com.yanzhenjie.andserver.sample.model.EcgUserInfo;
+import com.yuanxu.ecg.L;
+import com.yuanxu.ecg.bean.UserInfo;
 import com.yanzhenjie.andserver.sample.model.ScannedDevice;
-import com.yanzhenjie.andserver.sample.model.UserInfo;
 import com.yanzhenjie.andserver.sample.util.Constant;
 import com.yanzhenjie.andserver.sample.util.FileUtils;
 import com.yanzhenjie.andserver.sample.util.Result;
 import com.yanzhenjie.andserver.sample.util.UtilsSharedPreference;
 import com.yanzhenjie.andserver.util.MediaType;
 import com.yuanxu.ecg.ECGManager;
+import com.yuanxu.ecg.callback.BaseCallback;
+import com.yuanxu.ecg.callback.ExecuteCallback;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateFormatUtils;
@@ -70,7 +73,7 @@ public class CommonController extends BaseController{
     private static BluetoothLeScanner mScanner = null;
     //    private static BluetoothAdapter.LeScanCallback mLeScanCallback ;
     private static HashMap<String,Object> scannedDeviceList = new HashMap<>();
-
+    int onProcess = 0;
     private String fileName;
     MegaBleClient megaBleClient ;
     static {
@@ -392,8 +395,76 @@ public class CommonController extends BaseController{
                     .setLog(true, "ECG")
                     .setAutoReconnect(true)
                     .init(MainActivity.application);
-            EcgUserInfo ecgUserInfo = new EcgUserInfo(param.getName(), param.getGender() == 0, param.getAge(), param.getHeight(), param.getWeight());
+            UserInfo ecgUserInfo = new UserInfo(param.getName(), param.getGender() == 0, param.getAge(), param.getHeight(), param.getWeight());
+            ECGManager.getInstance().execute(param.getMac(), ecgUserInfo, new ExecuteCallback() {
+                long from = 0;
+                @Override
+                public void onSuccess() {//本轮检测任务成功
+                    L.e("onSuccess");
+                }
+
+                @Override
+                public void onFailure(int failCode, String info) {//本轮检测任务失败
+                    switch (failCode) {
+                        case BaseCallback.FAIL_BLUETOOTH_NOT_AVAILABLE: //蓝牙不可用
+                            break;
+                        case BaseCallback.FAIL_OTHER:  //其他原因
+                            break;
+                        case ExecuteCallback.FAIL_CONNECTION_ALREADY_ESTABLISHED://本机已连接到其他硬件设备
+                            break;
+                        case ExecuteCallback.FAIL_CONNECTION_START_FAIL://连接未正常开始
+                            break;
+                    }
+                    L.e("onFailure---" + failCode + "     info=" + info);
+                }
 
+                @SuppressLint("ResourceType")
+                @Override
+                public void onProcess(int process, String info) {//检测任务进度
+                    onProcess = process;
+                    switch (process) {
+                        /**
+                         *连接进度
+                         */
+                        case PROCESS_CONNECT_START://连接开始
+                            break;
+                        case PROCESS_CONNECT_FAIL://连接失败
+                            break;
+                        case PROCESS_CONNECTED://已连接
+                        case PROCESS_DATA_RECEIVING://正在接收硬件发回的心电数据
+                            break;
+                        case PROCESS_DISCONNECTED://连接断开
+                            break;
+
+                        /**
+                         * notify进度
+                         */
+                        case PROCESS_NOTIFY_START://开始notify
+                            break;
+                        case PROCESS_NOTIFY_SUCCESS://notify成功
+                            break;
+                        case PROCESS_NOTIFY_FAIL://notify失败
+                            break;
+
+                        /**
+                         *  其他如指令收发、数据接收等进度
+                         */
+                        case PROCESS_CMD_SENDING://正在发送相关指令
+                            from = System.currentTimeMillis();
+                            break;
+                        case PROCESS_IDLE://任务结束(成功或失败),达到空闲状态
+                            break;
+                    }
+                    L.d("onProcess---" + process + "     info=" + info);
+                }
+                @RequiresApi(api = Build.VERSION_CODES.O)
+                @Override
+                public void onReceivedOriginalData(byte[] data) {//原始心电数据
+                    //发送数据至前端页面,则不需要解析数据
+                    //parseRealTimeData(data);
+
+                }
+            });
 
         }else{
             return fail(null, "wrong model");

+ 3 - 2
sample/src/main/java/com/yanzhenjie/andserver/sample/controller/TestController.java

@@ -103,11 +103,12 @@ class TestController {
     @Addition(stringType = "login", booleanType = true)
     @GetMapping(path = "/userInfo", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     UserInfo userInfo(@CookieValue("account") String account) {
-        Logger.i("Account: " + account);
+       /* Logger.i("Account: " + account);
         UserInfo userInfo = new UserInfo();
         userInfo.setUserId("123");
         userInfo.setUserName("AndServer");
-        return userInfo;
+        return userInfo;*/
+        return null;
     }
 
     @PostMapping(path = "/upload", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

+ 47 - 56
sample/src/main/java/com/yanzhenjie/andserver/sample/model/UserInfo.java

@@ -1,79 +1,70 @@
-/*
- * Copyright 2018 Zhenjie Yan.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
 package com.yanzhenjie.andserver.sample.model;
 
-import android.os.Parcel;
-import android.os.Parcelable;
+import android.text.TextUtils;
 
-import com.alibaba.fastjson.annotation.JSONField;
+import com.yuanxu.ecg.cmd.BindUserIdCmd;
 
-/**
- * Created by Zhenjie Yan on 2018/6/9.
- */
-public class UserInfo implements Parcelable {
+import java.io.Serializable;
 
-    @JSONField(name = "userId")
-    private String mUserId;
-    @JSONField(name = "userName")
-    private String mUserName;
+public class UserInfo implements Serializable {
 
-    public UserInfo() {
+    private String name;//姓名
+    private boolean gender;//是否为女性
+    private int age;//年龄
+    private int height;//身高(cm)
+    private int weight;//体重(kg)
+
+    public UserInfo(String name, boolean gender, int age, int height, int weight) {
+        if (TextUtils.isEmpty(name)) {
+            throw new IllegalArgumentException("name is null");
+        }
+        if (!BindUserIdCmd.isValidNameBytesLength(name)) {
+            throw new IllegalArgumentException("the length of this name(" + name + ") is greater than max byte length(" + BindUserIdCmd.MAX_NAME_BYTE_LENGTH + ")");
+        }
+        this.name = name;
+        this.gender = gender;
+        this.age = age;
+        this.height = height;
+        this.weight = weight;
     }
 
-    protected UserInfo(Parcel in) {
-        mUserId = in.readString();
-        mUserName = in.readString();
+    public String getName() {
+        return name == null ? "" : name;
     }
 
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(mUserId);
-        dest.writeString(mUserName);
+    public void setName(String name) {
+        this.name = name;
     }
 
-    @Override
-    public int describeContents() {
-        return 0;
+    public boolean getGender() {
+        return gender;
     }
 
-    public static final Creator<UserInfo> CREATOR = new Creator<UserInfo>() {
-        @Override
-        public UserInfo createFromParcel(Parcel in) {
-            return new UserInfo(in);
-        }
+    public void setGender(boolean female) {
+        this.gender = female;
+    }
 
-        @Override
-        public UserInfo[] newArray(int size) {
-            return new UserInfo[size];
-        }
-    };
+    public int getAge() {
+        return age;
+    }
+
+    public void setAge(int age) {
+        this.age = age;
+    }
 
-    public String getUserId() {
-        return mUserId;
+    public int getHeight() {
+        return height;
     }
 
-    public void setUserId(String userId) {
-        mUserId = userId;
+    public void setHeight(int height) {
+        this.height = height;
     }
 
-    public String getUserName() {
-        return mUserName;
+    public int getWeight() {
+        return weight;
     }
 
-    public void setUserName(String userName) {
-        this.mUserName = userName;
+    public void setWeight(int weight) {
+        this.weight = weight;
     }
-}
+}