release IcL02WorkService_V60_202212202120_release.apk
authorSnickerSun <snickersun@163.com>
Tue, 20 Dec 2022 13:23:04 +0000 (21:23 +0800)
committerSnickerSun <snickersun@163.com>
Tue, 20 Dec 2022 13:23:04 +0000 (21:23 +0800)
取消无用的AK,A9 相关代码
修改心率和体温为通过SensorManager来控制!

22 files changed:
app/IcL02WorkService/release/IcL02WorkService_V60_202212202120_release.apk [new file with mode: 0644]
app/IcL02WorkService/release/output.json
app/build.gradle
app/src/main/aidl/com/ic/aidl/ak/BloodState.java [deleted file]
app/src/main/aidl/com/ic/aidl/ak/IAkAidlInterface.aidl [deleted file]
app/src/main/aidl/com/ic/aidl/ak/IAkRemoteService.aidl [deleted file]
app/src/main/java/com/ic/work/SensorDataService.java
app/src/main/java/com/ic/work/WorkService.java
app/src/main/java/com/ic/work/event/AkBloodCheckResultEvent.java [deleted file]
app/src/main/java/com/ic/work/hardware/A9BloodRunnable.java [deleted file]
app/src/main/java/com/ic/work/hardware/AkBloodRunnable.java [deleted file]
app/src/main/java/com/ic/work/hardware/BloodInfoHelper.java
app/src/main/java/com/ic/work/hardware/BloodRunnable.java [deleted file]
app/src/main/java/com/ic/work/hardware/BloodSensorManager.java [deleted file]
app/src/main/java/com/ic/work/hardware/PedRunnable.java
app/src/main/java/com/ic/work/hardware/TemperatureHelper.java
app/src/main/java/com/ic/work/hardware/TemperatureRunnable.java [deleted file]
app/src/main/java/com/ic/work/process/AkProcess.java [deleted file]
app/src/main/java/com/ic/work/utils/HardwareUtils.java [deleted file]
app/src/main/java/com/ic/work/utils/ICWorkConstants.java
app/src/main/java/com/ic/work/utils/TemperatureUtil.java
app/version_code.properties

diff --git a/app/IcL02WorkService/release/IcL02WorkService_V60_202212202120_release.apk b/app/IcL02WorkService/release/IcL02WorkService_V60_202212202120_release.apk
new file mode 100644 (file)
index 0000000..4e14a80
Binary files /dev/null and b/app/IcL02WorkService/release/IcL02WorkService_V60_202212202120_release.apk differ
index 84d3178..e7e0149 100644 (file)
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V57_202104151129_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V57_202104151129_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V60_202212202120_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V60_202212202120_release.apk","properties":{}}]
\ No newline at end of file
index 382d8d2..6f3d3a8 100644 (file)
@@ -64,23 +64,8 @@ android {
 
     productFlavors {
 
-        IcA9WorkService {
-            flavorDimensions "IcA9WorkService"
-            versionCode 1
-            versionName "5.0"
-            buildConfigField "int", "productType", "1002"
-
-        }
-
-        IcAkWorkService {
-            flavorDimensions "IcAkWorkService"
-            versionCode 1
-            versionName "1.0"
-            buildConfigField "int", "productType", "1001"
-        }
-
         IcL02WorkService {
-            flavorDimensions "IcAkWorkService"
+            flavorDimensions "IcWorkService"
             versionCode 1
             versionName "1.1"
             buildConfigField "int", "productType", "1003"
diff --git a/app/src/main/aidl/com/ic/aidl/ak/BloodState.java b/app/src/main/aidl/com/ic/aidl/ak/BloodState.java
deleted file mode 100644 (file)
index 69c5b9d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ic.aidl.ak;
-
-public class BloodState {
-
-    public static final int BLOOD_NULL_TIPS = -1;
-    public static final int BLOOD_NOT_DEVICE = 1001;
-
-    public static final int BLOOD_PLEASE_QUIET = 1002;
-    public static final int BLOOD_START_CHECK= 1003;
-
-    public static final int BLOOD_NOT_WEAR=1004;
-    public static final int BLOOD_ING_CHECK=1005;
-
-    public static final int BLOOD_STOP_CHECK=1006;
-    public static final int BLOOD_NOT_DATA_CHECK=1007;
-}
diff --git a/app/src/main/aidl/com/ic/aidl/ak/IAkAidlInterface.aidl b/app/src/main/aidl/com/ic/aidl/ak/IAkAidlInterface.aidl
deleted file mode 100644 (file)
index a5ad002..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-// ITempAidlInterface.aidl
-package com.ic.aidl.ak;
-
-// Declare any non-default types here with import statements
-
-interface IAkAidlInterface {
-    /**
-     * Demonstrates some basic types that you can use as parameters
-     * and return values in AIDL.
-     */
-     void updateBloodCheckResult(int high,int low,int heart,int oxygen);
-     void updateBloodCheckTips(int top,int bottom);
-     void updatePedCount(int count);
-     void updateCurrTempValue(double value,double animal);
-     void updateResultTempValue(double value,double animal);
-}
diff --git a/app/src/main/aidl/com/ic/aidl/ak/IAkRemoteService.aidl b/app/src/main/aidl/com/ic/aidl/ak/IAkRemoteService.aidl
deleted file mode 100644 (file)
index ca232a4..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// ITempRemoteService.aidl
-package com.ic.aidl.ak;
-
-// Declare any non-default types here with import statements
-
-import com.ic.aidl.ak.IAkAidlInterface;
-
-interface IAkRemoteService {
-    /**
-     * Demonstrates some basic types that you can use as parameters
-     * and return values in AIDL.
-     */
-    void registerCallback(IAkAidlInterface cb);
-    void unregisterCallback(IAkAidlInterface cb);
-
-    void startCheckBlood();
-    void stopCheckBlood();
-    void queryPedCount();
-
-    void onStartQueryTemp();
-    void onStopQueryTemp();
-}
index 95b068e..358ce0e 100644 (file)
@@ -8,15 +8,10 @@ import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.util.Log;
 
-import androidx.annotation.Nullable;
-
 import com.ic.work.domain.HeartRate;
 import com.ic.work.domain.Temperature;
-import com.ic.work.event.AkBloodCheckResultEvent;
-import com.ic.work.event.BloodSensorEvent;
 import com.ic.work.event.TestTaskEvent;
 import com.ic.work.hardware.BloodInfoHelper;
-import com.ic.work.hardware.BloodSensorManager;
 import com.ic.work.hardware.TemperatureHelper;
 import com.ic.work.utils.ICLogger;
 import com.ic.work.utils.ICWorkConstants;
@@ -62,12 +57,11 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
     private boolean isRunning = false;
     //当前执行的任务
     private TestTaskEvent currentTask;
-    private BloodSensorManager bloodSensorManager;
     private final Object mLock = new Object();
     private PowerManager powerManager;
-    private PowerManager.WakeLock wakeLock;
+    private PowerManager.WakeLock wakeLock=null;
+
 
-    @Nullable
     @Override
     public IBinder onBind(Intent intent) {
         //兼容旧的
@@ -108,8 +102,8 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
      *                      根据不同的传感器类型走不同的任务。
      *                      如果任务超时了,则自动结束任务,执行下一个任务。
      */
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void handleTestEvent(TestTaskEvent testTaskEvent) {
+     @Subscribe(threadMode = ThreadMode.BACKGROUND)
+     public void handleTestEvent(TestTaskEvent testTaskEvent) {
         //保持CPU运行
         wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ic:sensorDataService");
         wakeLock.acquire(10 * 60 * 1000L /*10 minutes*/);
@@ -390,35 +384,11 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
     }
 
 
-    @Subscribe(threadMode = ThreadMode.ASYNC)
-    public void onMessageEvent(BloodSensorEvent event) {
-        switch (event.type) {
-            case 1:
-                if (bloodSensorManager == null) {
-                    bloodSensorManager = new BloodSensorManager();
-                }
-                bloodSensorManager.createSensorManager(this);
-                break;
-            case 2:
-                bloodSensorManager.unregisterSensorListener();
-                break;
-        }
-    }
 
-    @Subscribe(threadMode = ThreadMode.ASYNC)
-    public void onMessageEvent(AkBloodCheckResultEvent event) {
-        int[] deviation = getPPG_ECG_adjustValue();
-        event.heart = event.heart + deviation[0];
-        event.high = event.high + deviation[1];
-        event.low = event.low + deviation[2];
-        event.oxygen = event.oxygen + deviation[3];
-        handleBloodResult(event.high, event.low,
-                event.heart, event.oxygen);
-        IcLog.d(TAG, "on ak blood test end...");
-        checkContinue();
-    }
+
 
     private void checkContinue() {
+        if(wakeLock!=null && wakeLock.isHeld())
         wakeLock.release();
         isRunning = false;
         currentTask = null;
index 25ade05..7ad8604 100644 (file)
@@ -20,14 +20,10 @@ import com.ic.work.event.TaskFinishedEvent;
 import com.ic.work.event.ThreadPoolEvent;
 import com.ic.work.event.WeatherAgainEvent;
 import com.ic.work.event.WeatherResultEvent;
-import com.ic.work.hardware.A9BloodRunnable;
-import com.ic.work.hardware.AkBloodRunnable;
 import com.ic.work.hardware.BeforeDawnRunnable;
-import com.ic.work.hardware.BloodSensorManager;
 import com.ic.work.hardware.MessengerCoreService;
 import com.ic.work.hardware.PedRecordRunnable;
 import com.ic.work.hardware.PedRunnable;
-import com.ic.work.process.AkProcess;
 import com.ic.work.process.BloodProcess;
 import com.ic.work.process.PedProcess;
 import com.ic.work.process.TempProcess;
@@ -46,12 +42,9 @@ import org.threeten.bp.ZoneId;
 
 import static com.ic.work.utils.ICWorkConstants.EventType.STEP_RECORD;
 import static com.ic.work.utils.ICWorkConstants.EventType.STOP_ALL_TASK;
-import static com.ic.work.utils.ICWorkConstants.EventType.TEST_A9_BLOOD;
-import static com.ic.work.utils.ICWorkConstants.EventType.TEST_AK_BLOOD;
 import static com.ic.work.utils.ICWorkConstants.EventType.TEST_STEP;
 import static com.ic.work.utils.ICWorkConstants.EventType.WEATHER;
 import static com.ic.work.utils.ICWorkConstants.ServiceType.ACTION_HARD_WARE;
-import static com.ic.work.utils.ICWorkConstants.ServiceType.ACTION_IC_AK;
 import static com.ic.work.utils.ICWorkConstants.ServiceType.ACTION_WEATHER;
 
 public class WorkService extends Service {
@@ -75,7 +68,6 @@ public class WorkService extends Service {
     private TempProcess tempProcess;
 
     private WeatherProcess weatherProcess;
-    private AkProcess akProcess;
 
     private WeatherHelper mWeatherHelper;
 
@@ -85,9 +77,6 @@ public class WorkService extends Service {
 
     private LocalDateTime mFinishTime;
 
-    private BloodSensorManager bloodSensorManager;
-
-
     @Override
     public IBinder onBind(Intent intent) {
         if (intent != null) {
@@ -99,9 +88,6 @@ public class WorkService extends Service {
                 case ACTION_HARD_WARE:
                     //计步
                     return pedProcess.getPedBinder();
-                case ACTION_IC_AK:
-                    //计步
-                    return akProcess.getAkBinder();
                 default:
                     return null;
             }
@@ -119,7 +105,6 @@ public class WorkService extends Service {
         bloodProcess = new BloodProcess();
         pedProcess = new PedProcess();
         tempProcess = new TempProcess();
-        akProcess = new AkProcess();
 
         mWeatherHelper = new WeatherHelper(mApp.getWeatherRepository(), this);
 
@@ -160,9 +145,6 @@ public class WorkService extends Service {
                     event.getBottomTips());
         }
 
-        if (akProcess != null) {
-            akProcess.sendBloodCheckTips(event.getTopTips(), event.getBottomTips());
-        }
     }
 
 
@@ -193,9 +175,6 @@ public class WorkService extends Service {
             pedProcess.sendPedCount(event.getPedCount());
         }
 
-        if (akProcess != null) {
-            akProcess.sendPedCount(event.getPedCount());
-        }
         //发送一次广播给launcher
         sendPedCountBroadcast(event.getPedCount());
     }
@@ -261,12 +240,7 @@ public class WorkService extends Service {
             case WEATHER:
                 ThreadPoolManager.getInstance().execute(new WeatherDBRun(mApp.getWeatherRepository()));
                 break;
-            case TEST_A9_BLOOD:
-                ThreadPoolManager.getInstance().execute(new A9BloodRunnable());
-                break;
-            case TEST_AK_BLOOD:
-                ThreadPoolManager.getInstance().execute(new AkBloodRunnable());
-                break;
+
         }
     }
 
diff --git a/app/src/main/java/com/ic/work/event/AkBloodCheckResultEvent.java b/app/src/main/java/com/ic/work/event/AkBloodCheckResultEvent.java
deleted file mode 100644 (file)
index 41dac44..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.ic.work.event;
-
-public class AkBloodCheckResultEvent {
-    public int high;
-    public int low;
-    public int heart;
-    public int oxygen;
-
-    public AkBloodCheckResultEvent(int high, int low, int heart, int oxygen) {
-        this.high = high;
-        this.low = low;
-        this.heart = heart;
-        this.oxygen = oxygen;
-    }
-}
diff --git a/app/src/main/java/com/ic/work/hardware/A9BloodRunnable.java b/app/src/main/java/com/ic/work/hardware/A9BloodRunnable.java
deleted file mode 100644 (file)
index b2a45d7..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-package com.ic.work.hardware;
-
-import android.content.Context;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-
-import com.ic.work.event.AkBloodCheckResultEvent;
-import com.ic.work.event.BloodCheckTipsEvent;
-import com.ic.work.event.BloodSensorEvent;
-import com.ic.work.event.TaskFinishedEvent;
-import com.ic.work.utils.HardwareUtils;
-import com.ic.work.utils.IcLog;
-
-import org.greenrobot.eventbus.EventBus;
-
-import java.util.Random;
-
-import static android.content.Context.SENSOR_SERVICE;
-import static com.ic.aidl.blood.BloodState.BLOOD_ING_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DATA_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DEVICE;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_WEAR;
-import static com.ic.aidl.blood.BloodState.BLOOD_NULL_TIPS;
-import static com.ic.aidl.blood.BloodState.BLOOD_PLEASE_QUIET;
-import static com.ic.aidl.blood.BloodState.BLOOD_START_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_STOP_CHECK;
-
-public class A9BloodRunnable implements Runnable {
-
-    private static final String TAG = "BloodRunnable";
-
-    @Override
-    public void run() {
-
-
-        boolean[] deviceState = HardwareUtils.isPPGavailableIc66();
-
-        if (!deviceState[0]) {
-            sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE);
-            //add by TrillGates notify task finished.
-            EventBus.getDefault().post(new TaskFinishedEvent());
-            return;
-        }
-
-        if (deviceState[1]) {
-            sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK);
-            EventBus.getDefault().post(new BloodSensorEvent(1));
-        } else {
-            checkBloodOther();
-        }
-
-        //add by TrillGates notify task finished.
-        EventBus.getDefault().post(new TaskFinishedEvent());
-    }
-
-    private void sendTipsEventBus(int top, int bottom) {
-        EventBus.getDefault().post(new BloodCheckTipsEvent(top, bottom));
-    }
-
-
-    private void checkBloodOther() {
-        int ndkHeart = 0;
-        int ndkHigh = 0;
-        int ndkLow = 0;
-        int oxygen = 0;
-
-        boolean isWeared = false;
-
-        int checkCount = 0;
-        boolean isSendCheckTips = false;
-
-        //开启
-        HardwareUtils.onNdkEnablePPG();
-
-        sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK);
-
-        try {
-            while (!Thread.currentThread().isInterrupted()) {
-
-                if (checkCount >= 25) {
-                    break;
-                }
-
-                ndkHeart = HardwareUtils.getNdkPPGValue();
-                isWeared = HardwareUtils.isWeared();
-
-                IcLog.i(TAG, "Get Heart Value:" + isWeared + ",ndkHeart:" + ndkHeart);
-
-                if (!isWeared) {
-                    break;
-                }
-
-                if (ndkHeart > 0) {
-                    ndkHigh = HardwareUtils.getNdkHighBloodValue();
-                    ndkLow = HardwareUtils.getNdkLowBloodValue();
-                    oxygen = HardwareUtils.getNdkOxygenValue();
-                    if (oxygen<=0) oxygen=randomOxygenValue();
-                    break;
-                }
-
-                if (!isSendCheckTips) {
-                    //正在测量中,请稍等
-                    sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK);
-                    isSendCheckTips = true;
-                }
-
-                checkCount++;
-
-                Thread.sleep(1000);
-            }
-
-            if (!isWeared) {
-                sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_WEAR);
-            } else if (ndkHeart == 0) {
-                sendTipsEventBus(BLOOD_STOP_CHECK, BLOOD_NOT_DATA_CHECK);
-            } else {
-                EventBus.getDefault().post(new AkBloodCheckResultEvent(ndkHigh, ndkLow, ndkHeart, oxygen));
-            }
-
-            HardwareUtils.onNdkDisablePPG();
-
-        } catch (InterruptedException e) {
-            IcLog.e(TAG, "Stop Get Heart Value", e);
-        } catch (Exception ee) {
-        } finally {
-            HardwareUtils.onNdkDisablePPG();
-        }
-    }
-
-    public int randomOxygenValue() throws Exception {
-        int min = 95;
-        int max = 100;
-        return min + ((int) (new Random().nextFloat() * (max - min)));
-    }
-
-}
diff --git a/app/src/main/java/com/ic/work/hardware/AkBloodRunnable.java b/app/src/main/java/com/ic/work/hardware/AkBloodRunnable.java
deleted file mode 100644 (file)
index dd74844..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-package com.ic.work.hardware;
-
-import com.ic.work.event.AkBloodCheckResultEvent;
-import com.ic.work.event.BloodCheckResultEvent;
-import com.ic.work.event.BloodCheckTempEvent;
-import com.ic.work.event.BloodCheckTipsEvent;
-import com.ic.work.event.TaskFinishedEvent;
-import com.ic.work.utils.HardwareUtils;
-import com.ic.work.utils.IcLog;
-
-import org.greenrobot.eventbus.EventBus;
-
-import java.util.Random;
-
-import static com.ic.aidl.blood.BloodState.BLOOD_ING_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DATA_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DEVICE;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_WEAR;
-import static com.ic.aidl.blood.BloodState.BLOOD_NULL_TIPS;
-import static com.ic.aidl.blood.BloodState.BLOOD_PLEASE_QUIET;
-import static com.ic.aidl.blood.BloodState.BLOOD_START_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_STOP_CHECK;
-
-public class AkBloodRunnable implements Runnable {
-
-    private static final String TAG = "BloodRunnable";
-
-    @Override
-    public void run() {
-        int ndkHeart = 0;
-        int ndkHigh = 0;
-        int ndkLow = 0;
-        int count = 0;
-        boolean isSendCheckTips = false;
-
-        if (HardwareUtils.isPPGavailable()) {
-            sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE);
-            return;
-        }
-
-        //开启
-        HardwareUtils.onNdkEnablePPG();
-
-        sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK);
-
-        try {
-            while (!Thread.currentThread().isInterrupted()) {
-                ndkHeart = HardwareUtils.getNdkPPGValue();
-                if (HardwareUtils.isWeared()) {
-                    //未佩戴
-                    if (count > 15) break;
-                    count++;
-                } else {
-                    if (ndkHeart > 0) {
-                        //佩戴好,并且已经或到心率的值,则获取低压和高压的值
-                        ndkHigh = HardwareUtils.getNdkHighBloodValue();
-                        ndkLow = HardwareUtils.getNdkLowBloodValue();
-                        //跳出循环,不在获取
-                        break;
-                    } else {
-                        if (!isSendCheckTips) {
-                            //正在测量中,请稍等
-                            //sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK);
-                            isSendCheckTips = true;
-                        }
-                    }
-                }
-                Thread.sleep(1000);
-            }
-            //add by TrillGates notify task finished.
-            EventBus.getDefault().post(new TaskFinishedEvent());
-            if (count >= 10) {
-                sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_WEAR);
-            } else if (ndkHeart == 0) {
-                sendTipsEventBus(BLOOD_STOP_CHECK, BLOOD_NOT_DATA_CHECK);
-            } else {
-                EventBus.getDefault().post(new AkBloodCheckResultEvent(ndkHigh, ndkLow, ndkHeart, randomOxygenValue()));
-            }
-
-            HardwareUtils.onNdkDisablePPG();
-
-        } catch (InterruptedException e) {
-            IcLog.e(TAG, "Stop Get Heart Value", e);
-        } catch (Exception ee) {
-        } finally {
-            HardwareUtils.onNdkDisablePPG();
-        }
-    }
-
-    public int randomOxygenValue() throws Exception {
-        int min = 95;
-        int max = 100;
-        return min + ((int) (new Random().nextFloat() * (max - min)));
-    }
-
-
-    private void sendTipsEventBus(int top, int bottom) {
-        EventBus.getDefault().post(new BloodCheckTipsEvent(top, bottom));
-    }
-}
index 65ced8d..8a1727e 100644 (file)
@@ -4,12 +4,9 @@ import android.hardware.Sensor;
 import android.hardware.SensorEvent;
 import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
-import android.os.Handler;
-import android.os.HandlerThread;
 import android.util.Log;
 
 import com.ic.work.WorkServiceApp;
-import com.ic.work.utils.HardwareUtils;
 import com.ic.work.utils.ICLogger;
 import com.ic.work.utils.IcLog;
 
@@ -24,15 +21,17 @@ public class BloodInfoHelper implements SensorEventListener {
 
 
     private HeartRateInfoChangeListener mListener = null;
-    private final Handler ppgLooper;
     private long checkBloodStartTime;
     private SensorManager mSensorManager;
+    private Sensor mHeartRate;
+    public static int SYSTEM_TEST = SensorManager.SENSOR_DELAY_UI; // 66
+    public static int SYSTEM_TEST_CTR = SensorManager.SENSOR_DELAY_GAME; //20
+    public static int PPG_TEST = SensorManager.SENSOR_DELAY_NORMAL; //200
+    public static int SPO2_TEST = SensorManager.SENSOR_DELAY_FASTEST ; //1
 
     private BloodInfoHelper() {
-        //这个Looper专门用来查询数据的
-        HandlerThread handlerThread = new HandlerThread("ic:heart-rate-looper");
-        handlerThread.start();
-        ppgLooper = new Handler(handlerThread.getLooper());
+        mSensorManager = (SensorManager) WorkServiceApp.sContext.getSystemService(SENSOR_SERVICE);
+        mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
     }
 
     private static BloodInfoHelper sInstance = null;
@@ -53,134 +52,42 @@ public class BloodInfoHelper implements SensorEventListener {
 
     public void getBloodInfo() {
         ICLogger.d("getBloodInfo...");
-        boolean[] deviceState = HardwareUtils.isPPGavailableGH301();
-
-        if (!deviceState[0]) {
-            IcLog.d(TAG, "deviceState[0] == > false");
-            //TODO:这个后面再处理,得给我机器再去处理,没有文档,没有数据
-            //sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE);
-            if (mListener != null) {
-                mListener.onHeartRateResult(0, 0, 0, 0);
-                mListener.onHeartRateTestFinished();
-            }
-            return;
-        }
-
-        ICLogger.d("deviceState[1]..." + deviceState[1]);
-        if (deviceState[1]) {
-            mSensorManager = (SensorManager) WorkServiceApp.sContext.getSystemService(SENSOR_SERVICE);
-            Sensor mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
-            boolean ret = mSensorManager.registerListener(this, mHeartRate, SensorManager.SENSOR_DELAY_FASTEST);
-            Log.d(TAG, "ret == > " + ret);
+        boolean ret = mSensorManager.registerListener(this, mHeartRate, PPG_TEST);
+        Log.d(TAG, "ret == > " + ret);
+        if(ret) {
             //TODO:这个是走官方API的,也得有机器再进行修改代码
             //sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK);
             // EventBus.getDefault().post(new BloodSensorEvent(1));
+            //这部分代码要做超时处理{
+            getPPGStartTime = System.currentTimeMillis();
+            checkBloodStartTime = System.currentTimeMillis();
+            IcLog.d(TAG, "start time == > " + checkBloodStartTime);
+            ndkHeart = 0;
+            ndkHigh = 0;
+            ndkLow = 0;
+            oxygen = 0;
+            checkCount = 0;
+            noWearCount = 0;
+            invalidateTime = 0;
         } else {
             //这个走JNI获取数据的,完成了
-            checkBloodOther();
+            ICLogger.e("No Blood sensor ");
         }
     }
 
+
     private int ndkHeart = 0;
     private int ndkHigh = 0;
     private int ndkLow = 0;
     private int oxygen = 0;
     private int checkCount = 0;
     private int noWearCount = 0;
-
     private boolean isWear;
 
     private int invalidateTime = 0;
+    private long getPPGStartTime = 0;
 
-    private void checkBloodOther() {
-        checkBloodStartTime = System.currentTimeMillis();
-        IcLog.d(TAG, "start time == > " + checkBloodStartTime);
-        ndkHeart = 0;
-        ndkHigh = 0;
-        ndkLow = 0;
-        oxygen = 0;
-        checkCount = 0;
-        noWearCount = 0;
-        invalidateTime = 0;
-        //开启
-        HardwareUtils.onNdkEnablePPG();
-        //推迟1秒去测试数据
-        //测试数据是一个循环,有三种情况
-        //- 没有穿戴,如果超过20秒没有穿戴,那么就结束此次测试
-        //- 数据测试结果为0,如果连续20个数据为0,那么就结束此次测试
-        //- 有数据以后,连续测上10次,就可以返回结果了
-        ppgLooper.postDelayed(this::checkWear, 1000);
-    }
 
-    private void checkWear() {
-        IcLog.d(TAG, "checkWear...");
-        //测试数据是一个循环,有三种情况
-        //- 没有穿戴,如果超过20秒没有穿戴,那么就结束此次测试
-        //- 20秒内有穿戴,则开始测试
-        ppgLooper.post(new Runnable() {
-            @Override
-            public void run() {
-                ndkHeart = HardwareUtils.getNdkPPGValue();
-                isWear = HardwareUtils.isWeared();
-                IcLog.d(TAG, "isWear == > " + isWear);
-                if (!isWear) {
-                    //延时1秒进行检查
-                    noWearCount++;
-                    IcLog.d(TAG, "noWearCount == > " + noWearCount);
-                    if (noWearCount <= 20) {
-                        ppgLooper.postDelayed(this, 1000);
-                    } else {
-                        handleResult();
-                    }
-                } else {
-                    noWearCount = 0;
-                    //开始去检测了
-                    doTest();
-                }
-            }
-        });
-    }
-
-    //- 数据测试结果为0,如果连续20个数据为0,那么就结束此次测试
-    //- 有数据以后,连续测上10次,就可以返回结果了
-    private void doTest() {
-        ppgLooper.post(new Runnable() {
-            @Override
-            public void run() {
-                //这部分代码要做超时处理{
-                long getPPGStartTime = System.currentTimeMillis();
-                ndkHeart = HardwareUtils.getNdkPPGValue();
-                if (ndkHeart > 0) {
-                    ndkHigh = HardwareUtils.getNdkHighBloodValue();
-                    ndkLow = HardwareUtils.getNdkLowBloodValue();
-                    oxygen = HardwareUtils.getNdkOxygenValue();
-                    if (oxygen <= 0) oxygen = randomOxygenValue();
-                    if (mListener != null) {
-                        IcLog.d(TAG, "ndkHigh == > " + ndkHigh + "ndkLow == > " + ndkLow + "oxygen == > " + oxygen);
-                        mListener.onHeartRateUpdate(ndkHigh, ndkLow, ndkHeart, oxygen);
-                    }
-                    checkCount++;
-                    IcLog.d(TAG, "checkCount == > " + checkCount);
-                    if (checkCount <= 10) {
-                        //继续测试
-                        ppgLooper.postDelayed(this, 1000);
-                    } else {
-                        handleResult();
-                    }
-                    IcLog.d(TAG, "use time == > " + (System.currentTimeMillis() - getPPGStartTime));
-                } else {
-                    //如果为0的话,记录下来
-                    invalidateTime++;
-                    IcLog.d(TAG, "invalidateTime == > " + invalidateTime);
-                    if (invalidateTime <= 30) {
-                        ppgLooper.postDelayed(this, 1000);
-                    } else {
-                        handleResult();
-                    }
-                }
-            }
-        });
-    }
 
     private void handleResult() {
         if (mListener != null) {
@@ -191,7 +98,7 @@ public class BloodInfoHelper implements SensorEventListener {
         }
         try {
             IcLog.d(TAG, "disable ppg..");
-            HardwareUtils.onNdkDisablePPG();
+            mSensorManager.unregisterListener(this);
         } catch (Exception e) {
             IcLog.e(TAG, "Stop Get Heart Value", e);
         }
@@ -227,6 +134,47 @@ public class BloodInfoHelper implements SensorEventListener {
         } else {
             Log.d(TAG, "on sensor change == > PPG= " + values[0]);
         }
+        ndkHeart = (int) values[0];
+        isWear = (int)values[4] > 1;
+        IcLog.d(TAG, "isWear == > " + isWear);
+        if (!isWear) {
+            //延时1秒进行检查
+            noWearCount++;
+            IcLog.d(TAG, "noWearCount == > " + noWearCount);
+            if (noWearCount > 20) {
+                handleResult();
+            }
+        } else {
+            noWearCount = 0;
+            //开始去检测了
+        }
+
+        if (ndkHeart > 0) {
+            ndkHigh = (int)values[1];
+            ndkLow = (int)values[2];
+            oxygen = (int)values[3];
+            if (oxygen <= 0) oxygen = randomOxygenValue();
+            if (mListener != null) {
+                IcLog.d(TAG, "ndkHigh == > " + ndkHigh + "ndkLow == > " + ndkLow + "oxygen == > " + oxygen);
+                mListener.onHeartRateUpdate(ndkHigh, ndkLow, ndkHeart, oxygen);
+            }
+            checkCount++;
+            IcLog.d(TAG, "checkCount == > " + checkCount);
+            if (checkCount <= 10) {
+                //继续测试
+            } else {
+                handleResult();
+            }
+            IcLog.d(TAG, "use time == > " + (System.currentTimeMillis() - getPPGStartTime));
+        } else {
+            //如果为0的话,记录下来
+            invalidateTime++;
+            IcLog.d(TAG, "invalidateTime == > " + invalidateTime);
+            if (invalidateTime <= 30) {
+            } else {
+                handleResult();
+            }
+        }
     }
 
     @Override
diff --git a/app/src/main/java/com/ic/work/hardware/BloodRunnable.java b/app/src/main/java/com/ic/work/hardware/BloodRunnable.java
deleted file mode 100644 (file)
index 19cda8d..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-package com.ic.work.hardware;
-
-import com.ic.work.event.BloodCheckResultEvent;
-import com.ic.work.event.BloodCheckTempEvent;
-import com.ic.work.event.BloodCheckTipsEvent;
-import com.ic.work.event.BloodSensorEvent;
-import com.ic.work.event.TaskFinishedEvent;
-import com.ic.work.utils.HardwareUtils;
-import com.ic.work.utils.IcLog;
-
-import org.greenrobot.eventbus.EventBus;
-
-import java.util.Random;
-
-import static com.ic.aidl.blood.BloodState.BLOOD_ING_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DATA_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DEVICE;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_WEAR;
-import static com.ic.aidl.blood.BloodState.BLOOD_NULL_TIPS;
-import static com.ic.aidl.blood.BloodState.BLOOD_PLEASE_QUIET;
-import static com.ic.aidl.blood.BloodState.BLOOD_START_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_STOP_CHECK;
-
-public class BloodRunnable implements Runnable {
-
-    private static final String TAG = "BloodRunnable";
-
-    @Override
-    public void run() {
-
-        boolean[] deviceState = HardwareUtils.isPPGavailableIc66();
-
-        if (!deviceState[0]) {
-            sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE);
-            //add by TrillGates notify task finished.
-            EventBus.getDefault().post(new TaskFinishedEvent());
-            return;
-        }
-
-        if (deviceState[1]) {
-            sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK);
-            EventBus.getDefault().post(new BloodSensorEvent(1));
-        } else {
-            checkBloodOther();
-        }
-        //add by TrillGates notify task finished.
-        EventBus.getDefault().post(new TaskFinishedEvent());
-    }
-
-    private void sendTipsEventBus(int top, int bottom) {
-        EventBus.getDefault().post(new BloodCheckTipsEvent(top, bottom));
-    }
-
-
-    private void checkBloodOther() {
-        int ndkHeart = 0;
-        int ndkHigh = 0;
-        int ndkLow = 0;
-        int oxygen = 0;
-
-        boolean isWeared = false;
-
-        int checkCount = 0;
-        int noWearCount = 0;
-        boolean isSendCheckTips = false;
-
-        //开启
-        HardwareUtils.onNdkEnablePPG();
-
-        sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK);
-
-        try {
-            while (!Thread.currentThread().isInterrupted()) {
-                ndkHeart = HardwareUtils.getNdkPPGValue();
-                isWeared = HardwareUtils.isWeared();
-
-                IcLog.i(TAG, "Get Heart Value:" + isWeared + ",ndkHeart:" + ndkHeart);
-
-                if (!isWeared) {
-                    //超过10连续未佩戴则认为没有佩戴
-                    if (noWearCount > 10) break;
-                    noWearCount++;
-                } else {
-                    //已佩戴则noWearCount 清零重新计数
-                    noWearCount = 0;
-                    if (ndkHeart > 0) {
-                        ndkHigh = HardwareUtils.getNdkHighBloodValue();
-                        ndkLow = HardwareUtils.getNdkLowBloodValue();
-                        oxygen = HardwareUtils.getNdkOxygenValue();
-                        if (oxygen <= 0) oxygen = randomOxygenValue();
-                        EventBus.getDefault().post(new BloodCheckTempEvent(ndkHigh, ndkLow, ndkHeart, oxygen));
-
-                        //测试到数据30秒后停止测量
-                        if (checkCount >= 30) {
-                            break;
-                        }
-                        checkCount++;
-                    }
-
-                    if (!isSendCheckTips) {
-                        //正在测量中,请稍等
-                        sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK);
-                        isSendCheckTips = true;
-                    }
-                }
-
-
-                Thread.sleep(1000);
-            }
-
-            if (noWearCount >= 5) {
-                sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_WEAR);
-            } else if (ndkHeart == 0) {
-                sendTipsEventBus(BLOOD_STOP_CHECK, BLOOD_NOT_DATA_CHECK);
-            } else {
-                EventBus.getDefault().post(new BloodCheckResultEvent(ndkHigh, ndkLow, ndkHeart, oxygen));
-            }
-
-            HardwareUtils.onNdkDisablePPG();
-
-        } catch (InterruptedException e) {
-            IcLog.e(TAG, "Stop Get Heart Value", e);
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            IcLog.d(TAG, "disable ppg..");
-            HardwareUtils.onNdkDisablePPG();
-        }
-    }
-
-    public int randomOxygenValue() throws Exception {
-        int min = 95;
-        int max = 100;
-        return min + ((int) (new Random().nextFloat() * (max - min)));
-    }
-
-}
diff --git a/app/src/main/java/com/ic/work/hardware/BloodSensorManager.java b/app/src/main/java/com/ic/work/hardware/BloodSensorManager.java
deleted file mode 100644 (file)
index 2cd508c..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.ic.work.hardware;
-
-import android.content.Context;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-
-import com.ic.work.event.AkBloodCheckResultEvent;
-import com.ic.work.event.BloodCheckTipsEvent;
-import com.ic.work.event.BloodSensorEvent;
-import com.ic.work.utils.IcLog;
-
-import org.greenrobot.eventbus.EventBus;
-
-import static android.content.Context.SENSOR_SERVICE;
-import static com.ic.aidl.blood.BloodState.BLOOD_ING_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_WEAR;
-import static com.ic.aidl.blood.BloodState.BLOOD_NULL_TIPS;
-import static com.ic.aidl.blood.BloodState.BLOOD_PLEASE_QUIET;
-
-public class BloodSensorManager {
-
-    private static final String TAG ="BloodSensorManager";
-
-    private SensorManager sensorManager;
-
-    public void createSensorManager(Context context){
-        if(sensorManager == null){
-            sensorManager = (SensorManager) context.getSystemService(SENSOR_SERVICE);
-        }
-        Sensor mHeartRate = sensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
-        sensorManager.registerListener(sensorEventListener, mHeartRate, SensorManager.SENSOR_DELAY_UI);
-
-        EventBus.getDefault().post(new BloodCheckTipsEvent(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK));
-    }
-
-    public void unregisterSensorListener(){
-        sensorManager.unregisterListener(sensorEventListener);
-    }
-
-    private final SensorEventListener sensorEventListener = new SensorEventListener() {
-
-        @Override
-        public void onSensorChanged(SensorEvent sensorEvent) {
-            float values[] = sensorEvent.values;
-            /*[0]---心率;[1]---血压高压;[2]---血压低压;[3]---血氧;[4]---佩戴检测(1--脱手,2--上手);*/
-            IcLog.i(TAG, "Weared= " + values[4] +
-                    " ,BPH= " + values[1] +
-                    " ,BPL= " + values[2] +
-                    " ,PPG= " + values[0] +
-                    ", spo2= " + values[3]);
-
-            if (values[4] == 2 && values[0] > 0) {
-                //结果检测出来后停止检测
-                EventBus.getDefault().post(new AkBloodCheckResultEvent(
-                        (int) values[1],
-                        (int) values[2],
-                        (int) values[0],
-                        (int) values[3]));
-
-                EventBus.getDefault().post(new BloodSensorEvent(2));
-            }else if(values[4] == 1){
-                sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_WEAR);
-                EventBus.getDefault().post(new BloodSensorEvent(2));
-            }
-        }
-
-        @Override
-        public void onAccuracyChanged(Sensor sensor, int i) {
-        }
-    };
-
-    private void sendTipsEventBus(int top, int bottom) {
-        EventBus.getDefault().post(new BloodCheckTipsEvent(top, bottom));
-    }
-}
index a745f30..4b82ae9 100644 (file)
@@ -1,11 +1,12 @@
 package com.ic.work.hardware;
 
 import android.content.Context;
+import android.hardware.SensorManager;
 
+import com.ic.jni.ICJniUtils;
 import com.ic.work.db.PedInjection;
 import com.ic.work.event.PedCountEvent;
 import com.ic.work.event.TaskFinishedEvent;
-import com.ic.work.utils.HardwareUtils;
 import com.ic.work.utils.IcLog;
 
 import org.greenrobot.eventbus.EventBus;
@@ -14,13 +15,16 @@ public class PedRunnable extends PedBaseRunnable implements Runnable {
 
     private static final String TAG = "PedRunnable";
 
+    public static int CLEAR_STEPCOUNT = SensorManager.SENSOR_DELAY_UI;// 66
+    public static int STEPCOUNT = SensorManager.SENSOR_DELAY_NORMAL;//200
+
     public PedRunnable(Context context, PedInjection pedDB) {
         super(context, pedDB);
     }
 
     @Override
     public void run() {
-        int ped = HardwareUtils.getNdkStepCountValue();
+        int ped = ICJniUtils.getStepCount();
         IcLog.i(TAG, "Get Ped Count" + ped);
         //发送给主线程。主线更新数据UI
         EventBus.getDefault().post(new PedCountEvent(ped));
index 6ebd714..3678d17 100644 (file)
@@ -1,18 +1,22 @@
 package com.ic.work.hardware;
 
-import android.os.SystemClock;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.util.Log;
 
-import com.ic.jni.ICJniUtils;
-import com.ic.work.domain.TemperatureItem;
-import com.ic.work.utils.HardwareUtils;
+import com.ic.work.WorkServiceApp;
 import com.ic.work.utils.ICLogger;
 import com.ic.work.utils.IcLog;
 import com.ic.work.utils.TemperatureUtil;
 
+import static android.content.Context.SENSOR_SERVICE;
+
 /**
  * 获取温度的工具类
  */
-public class TemperatureHelper {
+public class TemperatureHelper implements SensorEventListener {
 
     private static final String TAG = "TemperatureHelper";
     private TemperatureChangeListener mListener = null;
@@ -38,89 +42,92 @@ public class TemperatureHelper {
     private double lastTempOut = 0.0;
     private double lastBodyTemp = 0.0;
     private double lastWristTemp = 0.0;
-    private int delayTimesInSeconds = 20;
-
+    private final int DefaultDelayTimesInSeconds = 5;
+    private int delayTimesInSeconds = DefaultDelayTimesInSeconds;
+    private SensorManager mSensorManager ;
+    private Sensor mSensorTemp;
+    private long getTempStartTime=0;
     public void getTemperature() {
-        long start = System.currentTimeMillis();
+
+        getTempStartTime = System.currentTimeMillis();
         lastTempOut = 0.0;
         lastBodyTemp = 0.0;
         lastWristTemp = 0.0;
-        delayTimesInSeconds = 20;
-        int typeOrder = HardwareUtils.isTemperatureDevAvailable();
-        IcLog.i(TAG, "TemperatureRunnable type order:" + typeOrder);
-        if (typeOrder > ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal()) {  //have temp
-            try {
-                IcLog.i(TAG, "getNdkTemperatureValue  enableTemperature");
-                HardwareUtils.disablePedometer();
-                if (HardwareUtils.enableTemperature()) {
-                    IcLog.i(TAG, "getNdkTemperatureValue  enableTemperature");
-                    SystemClock.sleep(1000);
-                }
-                do {
-                    IcLog.d(TAG, "do temperature....");
-                    SystemClock.sleep(1000);
-                    long getStartTime = System.currentTimeMillis();
-                    TemperatureItem temperatureItem = null;
-                    if (typeOrder == ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_IC68.ordinal()) {
-                        //IC68走这个
-                        IcLog.d(TAG, "type is == > IC68");
-                        temperatureItem = TemperatureUtil.doTempTest();
-                        if (temperatureItem != null) {
-                            lastWristTemp = Double.parseDouble(temperatureItem.getBodyTemp());
-                            lastTempOut = Double.parseDouble(temperatureItem.getEvnTemp());
-                        }
-                    } else if (typeOrder == ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_EM7068.ordinal()) {
-                        IcLog.d(TAG, "type is == > 7068");
-                        lastWristTemp = HardwareUtils.getNdkTemperatureValue();
-                        lastTempOut = HardwareUtils.getNdkTemperatureOutValue();
-                    }
-                    if (lastTempOut > 60 || lastTempOut < 1) {
-                        lastTempOut = 0.0f;
-                    }
-                    if (lastTempOut > 0.0f) {
-                        lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, lastTempOut);
-                    } else {
-                        lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, 26.0f);
-                    }
-                    IcLog.d(TAG, "testing..." + lastWristTemp + " " + lastBodyTemp + " " + lastTempOut);
-                    //前10秒不更新内容,后10秒再更新数据
-                    if (delayTimesInSeconds <= 10 && mListener != null) {
-                        IcLog.d(TAG, "update temperature info..thread name is ." + Thread.currentThread().getName());
-                        //获取
-                        IcLog.d(TAG, "lastWristTemp == > " + lastWristTemp);
-                        IcLog.d(TAG, "lastBodyTemp == > " + lastBodyTemp);
-                        IcLog.d(TAG, "lastTempOut == > " + lastTempOut);
-                        mListener.onTemperatureUpdate(lastWristTemp, lastBodyTemp, lastTempOut);
+        delayTimesInSeconds = DefaultDelayTimesInSeconds;
+        IcLog.i(TAG, "getTemperature ..." );
+        mSensorManager = (SensorManager) WorkServiceApp.sContext.getSystemService(SENSOR_SERVICE);
+        mSensorTemp = mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE);
+        boolean ret = mSensorManager.registerListener(this, mSensorTemp, SensorManager.SENSOR_DELAY_NORMAL);
+        Log.d(TAG, "ret == > " + ret);
+
+    }
+
+    public void setTemperatureChangeListener(TemperatureChangeListener listener) {
+        this.mListener = listener;
+    }
+
+    @Override
+    public void onSensorChanged(SensorEvent sensorEvent) {
+        float values[] = sensorEvent.values;
+        int length = values.length;
+        if(sensorEvent.sensor.getType() == Sensor.TYPE_TEMPERATURE) {
+            IcLog.d(TAG, "type is == >" + sensorEvent.sensor.getName());
+            lastWristTemp = values[0] / 100.0f;
+            lastTempOut = values[1] / 100.0f;
+            Log.d(TAG, "on sensor change == > lastWristTemp= " + lastWristTemp + " lastTempOut=" + lastTempOut);
+
+/*
+
+                 TemperatureItem temperatureItem = null;
+                    temperatureItem = TemperatureUtil.doTempTest();
+                    if (temperatureItem != null) {
+                        lastWristTemp = Double.parseDouble(temperatureItem.getBodyTemp());
+                        lastTempOut = Double.parseDouble(temperatureItem.getEvnTemp());
                     }
-                    ICLogger.d("get temperature data use time == > " + (System.currentTimeMillis() - getStartTime));
-
-                    delayTimesInSeconds--;
-                    IcLog.d(TAG, "delayTimesInSeconds " + delayTimesInSeconds);
-                    //延时delay_times_in_seconds秒后停止检测。
-                } while (delayTimesInSeconds > 0);
-            } catch (Exception e) {
-                IcLog.e(TAG, "TemperatureRunnable :", e);
-            } finally {
-                HardwareUtils.disableTemperature();
-                IcLog.i(TAG, "disableTemperature  !");
-                //如果不关掉其他的计步的服务,读取数据会不准。
-                HardwareUtils.enablePedometer();
+
+ */
+
+            if (lastTempOut > 60 || lastTempOut < 1) {
+                lastTempOut = 0.0f;
             }
+            if (lastTempOut > 0.0f) {
+                lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, lastTempOut);
+            } else {
+                lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, 26.0f);
+            }
+            IcLog.d(TAG, "testing..." + lastWristTemp + " " + lastBodyTemp + " " + lastTempOut);
+            //前10秒不更新内容,后10秒再更新数据
+            if (delayTimesInSeconds <= 10 && mListener != null) {
+                IcLog.d(TAG, "update temperature info..thread name is ." + Thread.currentThread().getName());
+                //获取
+                IcLog.d(TAG, "lastWristTemp == > " + lastWristTemp);
+                IcLog.d(TAG, "lastBodyTemp == > " + lastBodyTemp);
+                IcLog.d(TAG, "lastTempOut == > " + lastTempOut);
+                mListener.onTemperatureUpdate(lastWristTemp, lastBodyTemp, lastTempOut);
+            }
+            ICLogger.d("get temperature data use time == > " + (System.currentTimeMillis() - getTempStartTime));
+
+            delayTimesInSeconds--;
+            IcLog.d(TAG, "delayTimesInSeconds " + delayTimesInSeconds);
+             if (delayTimesInSeconds <= 0) {
+                 if (mListener != null) {
+                     ICLogger.d("result == >lastWristTemp " + lastWristTemp + " lastBodyTemp" + lastBodyTemp + " lastTempOut" + lastTempOut);
+                     mSensorManager.unregisterListener(this);
+                     mListener.onTemperatureResult(lastWristTemp, lastBodyTemp, lastTempOut);
+                 }
+             }
         }
-        if (mListener != null) {
-            ICLogger.d("result == >lastWristTemp " + lastWristTemp + " lastBodyTemp" + lastBodyTemp + " lastTempOut" + lastTempOut);
-            mListener.onTemperatureResult(lastWristTemp, lastBodyTemp, lastTempOut);
-        }
-        IcLog.d(TAG, "temp use time == > " + (System.currentTimeMillis() - start));
     }
 
-    public void setTemperatureChangeListener(TemperatureChangeListener listener) {
-        this.mListener = listener;
+    @Override
+    public void onAccuracyChanged(Sensor sensor, int i) {
+
     }
 
     public interface TemperatureChangeListener {
         void onTemperatureUpdate(double wristTemp, double bodyTemp, double envTemp);
 
         void onTemperatureResult(double wristTemp, double bodyTemp, double envTemp);
+
     }
 }
diff --git a/app/src/main/java/com/ic/work/hardware/TemperatureRunnable.java b/app/src/main/java/com/ic/work/hardware/TemperatureRunnable.java
deleted file mode 100644 (file)
index 5de5623..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.ic.work.hardware;
-
-
-import com.ic.work.domain.TemperatureItem;
-import com.ic.work.event.TaskFinishedEvent;
-import com.ic.work.event.TemperatureResultCompleteEvent;
-import com.ic.work.event.TemperatureResultEvent;
-import com.ic.work.utils.HardwareUtils;
-import com.ic.work.utils.IcLog;
-import com.ic.work.utils.TemperatureUtil;
-
-import org.greenrobot.eventbus.EventBus;
-
-public class TemperatureRunnable implements Runnable {
-    private static final String TAG = "TemperatureRunnable";
-
-    @Override
-    public void run() {
-
-    }
-}
diff --git a/app/src/main/java/com/ic/work/process/AkProcess.java b/app/src/main/java/com/ic/work/process/AkProcess.java
deleted file mode 100644 (file)
index 44791cb..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-package com.ic.work.process;
-
-import android.os.IBinder;
-import android.os.RemoteCallbackList;
-import android.os.RemoteException;
-
-import com.ic.aidl.ak.IAkAidlInterface;
-import com.ic.aidl.ak.IAkRemoteService;
-import com.ic.work.event.ThreadPoolEvent;
-import com.ic.work.utils.IcLog;
-import com.ic.work.utils.IcSystemProperty;
-
-import org.greenrobot.eventbus.EventBus;
-
-import static com.ic.work.utils.ICWorkConstants.EventType.STOP_ALL_TASK;
-import static com.ic.work.utils.ICWorkConstants.EventType.TEST_A9_BLOOD;
-import static com.ic.work.utils.ICWorkConstants.EventType.TEST_AK_BLOOD;
-import static com.ic.work.utils.ICWorkConstants.EventType.TEST_TEMPERATURE;
-
-
-public class AkProcess {
-    private static final String TAG = "BloodProcess";
-
-    private RemoteCallbackList<IAkAidlInterface> mCallbacks = new RemoteCallbackList<>();
-
-    public IBinder getAkBinder() {
-        return akBinder;
-    }
-
-    private IAkRemoteService.Stub akBinder = new IAkRemoteService.Stub() {
-        @Override
-        public void registerCallback(IAkAidlInterface cb) throws RemoteException {
-            if (cb != null) {
-                mCallbacks.register(cb);
-            }
-        }
-
-        @Override
-        public void unregisterCallback(IAkAidlInterface cb) throws RemoteException {
-            if (cb != null) {
-                mCallbacks.unregister(cb);
-            }
-        }
-
-        @Override
-        public void startCheckBlood() throws RemoteException {
-
-            String CUSTOM_NAME = IcSystemProperty.getSystemProperties("persist.sys.customname", "");
-
-            if (CUSTOM_NAME.equals("AK")) {
-                //ak
-                EventBus.getDefault().post(new ThreadPoolEvent(TEST_AK_BLOOD));
-            } else {
-                //a9
-                EventBus.getDefault().post(new ThreadPoolEvent(TEST_A9_BLOOD));
-            }
-        }
-
-        @Override
-        public void stopCheckBlood() throws RemoteException {
-            EventBus.getDefault().post(new ThreadPoolEvent(STOP_ALL_TASK));
-        }
-
-        @Override
-        public void queryPedCount() throws RemoteException {
-            EventBus.getDefault().post(new ThreadPoolEvent(1));
-        }
-
-        @Override
-        public void onStartQueryTemp() throws RemoteException {
-            EventBus.getDefault().post(new ThreadPoolEvent(TEST_TEMPERATURE));
-        }
-
-        @Override
-        public void onStopQueryTemp() throws RemoteException {
-            EventBus.getDefault().post(new ThreadPoolEvent(STOP_ALL_TASK));
-        }
-    };
-
-    public void sendBloodCheckResult(int heih, int low, int heart, int oxygen) {
-        int N = 0;
-        try {
-            N = mCallbacks.beginBroadcast();
-            for (int i = 0; i < N; i++) {
-                mCallbacks.getBroadcastItem(i).updateBloodCheckResult(heih, low, heart, oxygen);
-            }
-        } catch (NullPointerException e) {
-            IcLog.e(TAG, "", e);
-        } catch (RemoteException er) {
-            IcLog.e(TAG, "", er);
-        } finally {
-            try {
-                if (N > 0) {
-                    mCallbacks.finishBroadcast();
-                }
-            } catch (IllegalArgumentException ll) {
-                IcLog.e(TAG, "", ll);
-            }
-        }
-    }
-
-    public void sendBloodCheckTips(int top, int bottom) {
-        int N = 0;
-        try {
-            N = mCallbacks.beginBroadcast();
-            for (int i = 0; i < N; i++) {
-                mCallbacks.getBroadcastItem(i).updateBloodCheckTips(top, bottom);
-            }
-        } catch (NullPointerException e) {
-            IcLog.e(TAG, "", e);
-        } catch (RemoteException er) {
-            IcLog.e(TAG, "", er);
-        } finally {
-            try {
-                if (N > 0) {
-                    mCallbacks.finishBroadcast();
-                }
-            } catch (IllegalArgumentException ll) {
-                IcLog.e(TAG, "", ll);
-            }
-        }
-    }
-
-    public void sendPedCount(int count) {
-        int N = 0;
-        try {
-            N = mCallbacks.beginBroadcast();
-            for (int i = 0; i < N; i++) {
-                mCallbacks.getBroadcastItem(i).updatePedCount(count);
-            }
-        } catch (NullPointerException e) {
-            IcLog.e(TAG, "", e);
-        } catch (RemoteException er) {
-            IcLog.e(TAG, "", er);
-        } finally {
-            try {
-                if (N > 0) {
-                    mCallbacks.finishBroadcast();
-                }
-            } catch (IllegalArgumentException ll) {
-                IcLog.e(TAG, "", ll);
-            }
-        }
-    }
-
-    public void sendCurrTempValue(double value, double animal) {
-        int N = 0;
-        try {
-            N = mCallbacks.beginBroadcast();
-            for (int i = 0; i < N; i++) {
-                mCallbacks.getBroadcastItem(i).updateCurrTempValue(value, animal);
-            }
-        } catch (NullPointerException e) {
-            IcLog.e(TAG, "", e);
-        } catch (RemoteException er) {
-            IcLog.e(TAG, "", er);
-        } finally {
-            try {
-                if (N > 0) {
-                    mCallbacks.finishBroadcast();
-                }
-            } catch (IllegalArgumentException ll) {
-                IcLog.e(TAG, "", ll);
-            }
-        }
-    }
-
-    public void sendResultTempValue(double value, double animal) {
-        int N = 0;
-        try {
-            N = mCallbacks.beginBroadcast();
-            for (int i = 0; i < N; i++) {
-                mCallbacks.getBroadcastItem(i).updateResultTempValue(value, animal);
-            }
-        } catch (NullPointerException e) {
-            IcLog.e(TAG, "", e);
-        } catch (RemoteException er) {
-            IcLog.e(TAG, "", er);
-        } finally {
-            try {
-                if (N > 0) {
-                    mCallbacks.finishBroadcast();
-                }
-            } catch (IllegalArgumentException ll) {
-                IcLog.e(TAG, "", ll);
-            }
-        }
-    }
-
-}
diff --git a/app/src/main/java/com/ic/work/utils/HardwareUtils.java b/app/src/main/java/com/ic/work/utils/HardwareUtils.java
deleted file mode 100644 (file)
index cf5dbae..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-package com.ic.work.utils;
-
-import com.ic.jni.ICJniUtils;
-
-public class HardwareUtils {
-
-    private static final String TAG = "HardwareUtils";
-
-    public static boolean[] isPPGavailableIc66() {
-        try {
-            int value = ICJniUtils.isPPGavailable();
-            return new boolean[]{
-                    value > ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_NONE.ordinal(),
-                    value == ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()
-            };
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return new boolean[]{false, false};
-        }
-    }
-
-    public static boolean[] isPPGavailableGH301() {
-        try {
-            int value = ICJniUtils.isPPGavailable();
-            return new boolean[]{
-                    value > ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_NONE.ordinal(),
-                    value == ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_GH301.ordinal()
-            };
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return new boolean[]{false, false};
-        }
-    }
-
-    public static boolean isPPGavailable() {
-        try {
-            int value = ICJniUtils.isPPGavailable();
-            return value == 0;
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return true;
-        }
-    }
-
-    public static void onNdkEnablePPG() {
-        try {
-            ICJniUtils.enablePPG();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-        }
-    }
-
-    public static void onNdkDisablePPG() {
-        try {
-            ICJniUtils.disablePPG();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-        }
-    }
-
-    public static boolean isWeared() {
-        try {
-            int value = ICJniUtils.isWeared();
-            return value == 1;
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return true;
-        }
-    }
-
-    public static int getNdkPPGValue() {
-        try {
-            return ICJniUtils.getPPG();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static int getNdkHighBloodValue() {
-        try {
-            return ICJniUtils.getHighBloodPressure();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static int getNdkLowBloodValue() {
-        try {
-            return ICJniUtils.getLowBloodPressure();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static int getNdkOxygenValue() {
-        try {
-            return ICJniUtils.getSPO2();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static int getNdkStepCountValue() {
-        try {
-            return ICJniUtils.getStepCount();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static int resetNdkStepCountValue() {
-        try {
-            return ICJniUtils.resetStepCount();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static int enablePedometer() {
-        try {
-            return ICJniUtils.enablePedometer();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static int disablePedometer() {
-        try {
-            return ICJniUtils.disablePedometer();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static int isTemperatureDevAvailable() {
-        try {
-            return ICJniUtils.isTemperatureDevAvailable();
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal();
-        }
-    }
-
-    public static double getNdkTemperatureValue() {
-        try {
-            return ICJniUtils.getTemperature();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static double getNdkTemperatureOutValue() {
-        try {
-            double temperatureOrigin = ICJniUtils.getTemperatureOrigin();
-            IcLog.d(TAG, "getNdkTemperatureOutValue... " + temperatureOrigin);
-            return temperatureOrigin;
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static double getBodyTempFromWristTemp(double wrist_temp, double ref_temp) {
-        try {
-            return ICJniUtils.getBodyTempFromWristTemp(wrist_temp, ref_temp);
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return 0;
-        }
-    }
-
-    public static boolean isTemperatureDevOpened() {
-        try {
-            return ICJniUtils.isTemperatureDevOpened() == 0;
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return false;
-        }
-    }
-
-    public static boolean enableTemperature() {
-        int ret = 0;
-        try {
-            ret = ICJniUtils.enableTemperature();
-            IcLog.d(TAG, "enableTemperature ret " + ret);
-            return ret > 0;
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-            return false;
-        }
-    }
-
-    public static void disableTemperature() {
-        try {
-            ICJniUtils.disableTemperature();
-        } catch (Exception e) {
-            IcLog.e(TAG, "", e);
-        }
-    }
-
-
-}
index 7353836..92c7235 100644 (file)
@@ -65,10 +65,7 @@ public interface ICWorkConstants {
         int TEST_TEMPERATURE = 6;
         //血氧
         int TEST_BLOOD = 3;
-        //A9的心率
-        int TEST_A9_BLOOD = 7;
-        //AK的心率
-        int TEST_AK_BLOOD = 8;
+
         //删除所有的任务
         int STOP_ALL_TASK = 4;
     }
index af1cd3f..1abe350 100644 (file)
@@ -12,13 +12,13 @@ public class TemperatureUtil {
     private static double tempOut_value = 0.0f;
 
     public static double get_tempOut_value_origin() {
-        tempOut_value = ICJniUtils.getTemperatureOrigin();
+        tempOut_value = 0.0;//ICJniUtils.getTemperatureOrigin();
         Log.i(TAG, "测量环境温度 原始值 " + tempOut_value);
         return tempOut_value;
     }
 
     public static double get_temp_value_adjusted() {
-        temp_value_orig = ICJniUtils.getTemperature();
+        temp_value_orig = 0.0;//ICJniUtils.getTemperature();
         Log.i(TAG, "测量体温 原始值 " + temp_value_orig);
         return temp_value_orig;
     }
@@ -50,7 +50,7 @@ public class TemperatureUtil {
      * 这里获取到CPU温度,主板温度,体温,外温的数据,然后写到log里,后面转成数据表,再转成函数表达式。
      */
     public static TemperatureItem doTempTest() {
-        if (ICJniUtils.isTemperatureDevAvailable() > ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal()) {
+       // if (ICJniUtils.isTemperatureDevAvailable() > ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal()) {
 
             double bodyTemp/*体温*/ = 0.0f;
             double cpuTemp/*cpu温度*/ = 0.0f;
@@ -132,7 +132,7 @@ public class TemperatureUtil {
             } catch (Exception e) {
                 e.printStackTrace();
             }
-        }
+        //}
         return null;
     }
 }
index c34b001..38e8980 100644 (file)
@@ -1,2 +1,2 @@
 #Thu Jul 16 16:46:05 CST 2020
-VERSION_CODE=57
+VERSION_CODE=60