修改了工具类.算法
authorTrillGates <williamtrillgates@gmail.com>
Thu, 3 Mar 2022 03:06:03 +0000 (11:06 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Thu, 3 Mar 2022 03:06:03 +0000 (11:06 +0800)
.idea/gradle.xml
.idea/runConfigurations.xml [deleted file]
app/src/main/java/com/ic/work/hardware/BloodInfoHelper.java
app/src/main/java/com/ic/work/utils/AlgorithmUtils.java
app/src/main/java/com/ic/work/utils/TemperatureUtil.java

index 9bba60d..526b4c2 100644 (file)
@@ -4,7 +4,7 @@
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
-        <option name="testRunner" value="PLATFORM" />
+        <option name="testRunner" value="GRADLE" />
         <option name="distributionType" value="DEFAULT_WRAPPED" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
         <option name="modules">
@@ -14,7 +14,6 @@
           </set>
         </option>
         <option name="resolveModulePerSourceSet" value="false" />
-        <option name="useQualifiedModuleNames" value="true" />
       </GradleProjectSettings>
     </option>
   </component>
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
deleted file mode 100644 (file)
index 7f68460..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="RunConfigurationProducerService">
-    <option name="ignoredProducers">
-      <set>
-        <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
-        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
-        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
-      </set>
-    </option>
-  </component>
-</project>
\ No newline at end of file
index 891c763..d5450fe 100644 (file)
@@ -1,5 +1,7 @@
 package com.ic.work.hardware;
 
+import static android.content.Context.SENSOR_SERVICE;
+
 import android.hardware.Sensor;
 import android.hardware.SensorEvent;
 import android.hardware.SensorEventListener;
@@ -15,8 +17,6 @@ import com.ic.work.utils.IcLog;
 
 import java.util.Random;
 
-import static android.content.Context.SENSOR_SERVICE;
-
 /**
  * 此工具类获取血氧,血压,心率等信息,结果通过:
  */
@@ -106,7 +106,7 @@ public class BloodInfoHelper implements SensorEventListener {
         ppgLooper.postDelayed(mTimeoutTask, TIME_OUT_VALUE);
     }
 
-    public static int MaxTestCount = 10;
+    public static int MaxTestCount = 40;
     //10秒还没有数据回来,那么就结束测试
     public static final int TIME_OUT_VALUE = 10 * 1000;
 
index 9dd0df3..e53555d 100644 (file)
@@ -43,6 +43,20 @@ public class AlgorithmUtils {
         return result;
     }
 
+    public static double generalTransfer(double wristTemp, double envTemp) {
+        if (wristTemp < 31.0f) {
+            return 0;
+        }
+        if (envTemp < 5.0f || envTemp > 45.0f) {
+            return 0;
+        }
+        double result = 0.02411 * wristTemp * wristTemp * wristTemp - 2.288 * wristTemp * wristTemp - 0.004356 * wristTemp * wristTemp * envTemp + 0.2851 * wristTemp * envTemp - 4.702 * envTemp + 72.46 * wristTemp - 728.9 + 0.5;
+        if (result < 36.0f) {
+            result = 36.0f;
+        }
+        return result;
+    }
+
 
     //对数据进行处理=======================================================start
     // 环境温度计算公式:
@@ -140,7 +154,7 @@ public class AlgorithmUtils {
     private int zeroTime = 0;
 
     public double MW13C(double wristTemp,
-                        double boardTemp, double batteryTemp,double envTemp) throws TempValueException {
+                        double boardTemp, double batteryTemp, double envTemp) throws TempValueException {
         if (wristTemp == 0.0) {
             zeroTime++;
             return 0.0;
index 9232b6d..ff1d0c2 100644 (file)
@@ -117,8 +117,6 @@ public class TemperatureUtil {
             ICLogger.d("envTemp ==> " + envTemp);
             ICLogger.d("wristTemp ==> " + wristTemp);
             String property = Utils.getSystemProperties("persist.sys.id_num", null);
-            double resultEnvTemp = -100;
-            double resultWristTemp = 0;
             ICLogger.d("property  == > " + property);
             double lastBodyTemp = 0.0;
             if ("l004pt".equals(property)) {
@@ -133,21 +131,13 @@ public class TemperatureUtil {
                     ICLogger.d("final wrist temp == > " + bodyTempResult);
                 }
             } else if ("q3ft".equals(property)) {
-                resultEnvTemp = AlgorithmUtils.s123GetEnvData(envTemp, boardTemp);
-                resultWristTemp = AlgorithmUtils.s123GetBodyTemp(wristTemp, boardTemp);
-                if (resultEnvTemp > 0.0f) {
-                    lastBodyTemp = TemperatureUtil.getBodyTemp(resultWristTemp, resultEnvTemp);
-                } else {
-                    lastBodyTemp = TemperatureUtil.getBodyTemp(resultWristTemp, 26.0f);
+                //要体温和环境温度都有值
+                if (wristTemp > 0 && envTemp > 0) {
+                    lastBodyTemp = AlgorithmUtils.generalTransfer(wristTemp, envTemp);
+                    IcLog.d(TAG, "evnTemp == > " + envTemp + "bodyTemp == > " + wristTemp + " resultWristTemp = >  " + lastBodyTemp);
                 }
-
-                IcLog.d(TAG, "evnTemp == > " + envTemp + " resultEnvTemp = >  " + resultEnvTemp);
-                IcLog.d(TAG, "bodyTemp == > " + wristTemp + " resultWristTemp = >  " + lastBodyTemp);
             } else if ("L56A".equals(property)) {
                 double bodyTempResult = AlgorithmUtils.l56A(wristTemp, envTemp);
-                wristTemp = bodyTempResult;
-                resultEnvTemp = AlgorithmUtils.s123GetEnvData(envTemp, boardTemp);
-                resultWristTemp = AlgorithmUtils.s123GetBodyTemp(wristTemp, boardTemp);
                 ICLogger.d("bodyTempResult == > " + bodyTempResult);
                 if (bodyTempResult != -1) {
                     //越接近34.1越准确
@@ -163,12 +153,9 @@ public class TemperatureUtil {
                 if (wristTemp == 0) {
                     return null;
                 }
-                resultWristTemp = wristTemp;
-                resultEnvTemp = envTemp;
                 lastBodyTemp = ICJniUtils.getBodyTempFromWristTemp(wristTemp, envTemp);
                 ICLogger.d("lastBodyTemp ==> " + lastBodyTemp);
             } else {
-                resultWristTemp = wristTemp;
                 //   double bodyTempResult = AlgorithmUtils.l004Pt(bodyTemp, evnTemp);
                 ICLogger.d("wrist TempResult == > " + wristTemp);
                 if (wristTemp != -1) {
@@ -181,18 +168,20 @@ public class TemperatureUtil {
                 return null;
             }
             try {
-                //发送消息给launcher显示
-                TemperatureItem temperatureItem = new TemperatureItem(
-                        String.format("%.01f", resultWristTemp),
-                        String.format("%.01f", lastBodyTemp),
-                        String.format("%.01f", cpuTemp),
-                        String.format("%.01f", resultEnvTemp),
-                        String.format("%.01f", gpuTemp),
-                        "0.00",
-                        String.format("%.01f", boardTemp),
-                        "0.00");
-                ICLogger.d("temperatureItem ==> " + temperatureItem);
-                return temperatureItem;
+                if (envTemp > 0 && wristTemp > 0) {
+                    //发送消息给launcher显示
+                    TemperatureItem temperatureItem = new TemperatureItem(
+                            String.format("%.01f", wristTemp),
+                            String.format("%.01f", lastBodyTemp),
+                            String.format("%.01f", cpuTemp),
+                            String.format("%.01f", envTemp),
+                            String.format("%.01f", gpuTemp),
+                            "0.00",
+                            String.format("%.01f", boardTemp),
+                            "0.00");
+                    ICLogger.d("temperatureItem ==> " + temperatureItem);
+                    return temperatureItem;
+                }
             } catch (Exception e) {
                 e.printStackTrace();
             }