add step count and calorie to db for watchface.
authorTrillGates <williamtrillgates@gmail.com>
Thu, 17 Jun 2021 09:31:38 +0000 (17:31 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Thu, 17 Jun 2021 09:31:38 +0000 (17:31 +0800)
app/IcL02WorkService/release/IcL02WorkService_V59_202105291708_release.apk [deleted file]
app/IcL02WorkService/release/IcL02WorkService_V59_202106171726_release.apk [new file with mode: 0644]
app/IcL02WorkService/release/output.json
app/src/main/aidl/com/ic/aidl/ped/RecordParcelable.java
app/src/main/java/com/ic/work/WorkService.java
app/src/main/java/com/ic/work/hardware/BloodInfoHelper.java
app/src/main/java/com/ic/work/hardware/PedBaseRunnable.java
app/src/main/java/com/ic/work/hardware/PedRecordRunnable.java
app/src/main/java/com/ic/work/utils/AlgorithmUtils.java
app/src/main/java/com/ic/work/utils/TemperatureUtil.java

diff --git a/app/IcL02WorkService/release/IcL02WorkService_V59_202105291708_release.apk b/app/IcL02WorkService/release/IcL02WorkService_V59_202105291708_release.apk
deleted file mode 100644 (file)
index 78c2b37..0000000
Binary files a/app/IcL02WorkService/release/IcL02WorkService_V59_202105291708_release.apk and /dev/null differ
diff --git a/app/IcL02WorkService/release/IcL02WorkService_V59_202106171726_release.apk b/app/IcL02WorkService/release/IcL02WorkService_V59_202106171726_release.apk
new file mode 100644 (file)
index 0000000..2d21064
Binary files /dev/null and b/app/IcL02WorkService/release/IcL02WorkService_V59_202106171726_release.apk differ
index c2c6b89..630164c 100644 (file)
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V59_202105291708_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V59_202105291708_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_V59_202106171726_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V59_202106171726_release.apk","properties":{}}]
\ No newline at end of file
index bcdef77..d393032 100644 (file)
@@ -85,4 +85,14 @@ public class RecordParcelable implements Parcelable {
     public void setDate(String date) {
         this.date = date;
     }
+
+    @Override
+    public String toString() {
+        return "RecordParcelable{" +
+                "number=" + number +
+                ", distance='" + distance + '\'' +
+                ", calorie='" + calorie + '\'' +
+                ", date='" + date + '\'' +
+                '}';
+    }
 }
index b3f1e90..4d16d5b 100644 (file)
@@ -253,7 +253,8 @@ public class WorkService extends Service {
         mIsBusy = true;
         switch (eventType) {
             case TEST_STEP://脚步
-                ThreadPoolManager.getInstance().execute(new PedRunnable(mApp.getApplicationContext(), mApp.getRepository()));
+                ThreadPoolManager.getInstance().execute(new PedRunnable(mApp.getApplicationContext(),
+                        mApp.getRepository()));
                 break;
             case STEP_RECORD:
                 ThreadPoolManager.getInstance().execute(new PedRecordRunnable(mApp.getRepository()));
index c80e481..9330fd5 100644 (file)
@@ -282,7 +282,6 @@ public class BloodInfoHelper implements SensorEventListener {
                     + "spo2= " + values[3]
                     + "Weared= " + values[4]
             );
-
             ndkHeart = (int) values[0];//调用底层函数保证状态更新。
             ndkHigh = (int) values[1];
             ndkLow = (int) values[2];
index bcbca8b..e687303 100644 (file)
@@ -1,7 +1,10 @@
 package com.ic.work.hardware;
 
+import android.content.ContentValues;
 import android.content.Context;
+import android.net.Uri;
 
+import com.ic.work.SensorDataService;
 import com.ic.work.db.PedInjection;
 import com.ic.work.db.entity.PedEntity;
 import com.ic.work.utils.PedUtil;
@@ -15,12 +18,14 @@ import java.util.List;
 
 public class PedBaseRunnable {
 
+    private final Context mContext;
     private PedInjection mPedInjection;
     private int mHeight;
     private int mWeight;
 
     protected PedBaseRunnable(Context context, PedInjection pedInjection) {
         mPedInjection = pedInjection;
+        this.mContext = context;
         mHeight = SPUtils.getPedHeightSP(context);
         mWeight = SPUtils.getPedWighttSP(context);
     }
@@ -33,7 +38,7 @@ public class PedBaseRunnable {
         return mPedInjection.queryDBPedCount();
     }
 
-    private List<PedEntity>  queryTimePedEntity(OffsetDateTime time){
+    private List<PedEntity> queryTimePedEntity(OffsetDateTime time) {
         return mPedInjection.queryDBPedDate(time);
     }
 
@@ -51,21 +56,28 @@ public class PedBaseRunnable {
 
     protected void updateDBPedEntity(PedEntity entity) {
         int number = entity.getPedNumber();
+        //更新到全局公用数据中去
+        ContentValues contentValues = new ContentValues();
+        contentValues.put("s_key", "sport_step_count");
+        contentValues.put("s_value", number);
+        mContext.getContentResolver().insert(
+                Uri.parse(SensorDataService.SETTINGS), contentValues
+        );
         entity.setPedDistance(getDistanceValue(number));
         entity.setPedCalorie(getCalorieValue(number));
         mPedInjection.updateDBPedDate(entity);
     }
 
-    protected void updateCountDB(int ped,OffsetDateTime dateTime){
+    protected void updateCountDB(int ped, OffsetDateTime dateTime) {
         if (isCheckPedInjection()) {
             return;
         }
 
         int size = queryDBPedCount();
-        if(size == 0){
+        if (size == 0) {
             //如果数据库中无记录,把当前数据插入到数据库中
             insertDBPedEntity(ped, dateTime, size);
-        }else {
+        } else {
             //2.去查询数据中是否有记录。
             List<PedEntity> todayPed = queryTimePedEntity(dateTime);
             if (todayPed != null && todayPed.size() > 0) {
@@ -88,13 +100,18 @@ public class PedBaseRunnable {
         entity.setPedDistance(getDistanceValue(number));
         entity.setPedCalorie(getCalorieValue(number));
         entity.setPedDate(date);
-
         return entity;
     }
 
     private String getCalorieValue(int number) {
         BigDecimal bg = new BigDecimal(PedUtil.calcConsumeEnergy(mHeight, mWeight, number));
-        return String.valueOf(bg.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue());
+        String value = String.valueOf(bg.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue());
+        //保存一份到数据库中
+        ContentValues contentValues = new ContentValues();
+        contentValues.put("s_key", "sport_calorie_value");
+        contentValues.put("s_value", value);
+        mContext.getContentResolver().insert(Uri.parse(SensorDataService.SETTINGS), contentValues);
+        return value;
     }
 
     private String getDistanceValue(int number) {
index 79bf8fa..55e6eda 100644 (file)
@@ -5,6 +5,7 @@ import com.ic.work.db.PedInjection;
 import com.ic.work.db.entity.PedEntity;
 import com.ic.work.event.PedRecordResultEvent;
 import com.ic.work.event.TaskFinishedEvent;
+import com.ic.work.utils.ICLogger;
 
 import org.greenrobot.eventbus.EventBus;
 import org.threeten.bp.format.DateTimeFormatter;
@@ -23,18 +24,18 @@ public class PedRecordRunnable implements Runnable {
 
     @Override
     public void run() {
-       List<PedEntity>  query = mPedDb.queryDBPedAllList();
-       List<RecordParcelable> recordList = new ArrayList<>();
-       for (int i=0; i< query.size(); i++){
-           RecordParcelable recordP = new RecordParcelable();
-           recordP.setNumber(query.get(i).getPedNumber());
-           recordP.setCalorie(query.get(i).getPedCalorie());
-           recordP.setDistance(query.get(i).getPedDistance());
-           recordP.setDate(query.get(i).getPedDate().format(formatter));
-
-           recordList.add(recordP);
-       }
-       //发送数据到主线程
+        List<PedEntity> query = mPedDb.queryDBPedAllList();
+        List<RecordParcelable> recordList = new ArrayList<>();
+        for (int i = 0; i < query.size(); i++) {
+            RecordParcelable recordP = new RecordParcelable();
+            recordP.setNumber(query.get(i).getPedNumber());
+            recordP.setCalorie(query.get(i).getPedCalorie());
+            recordP.setDistance(query.get(i).getPedDistance());
+            recordP.setDate(query.get(i).getPedDate().format(formatter));
+            ICLogger.d("recordP == > " + recordP.toString());
+            recordList.add(recordP);
+        }
+        //发送数据到主线程
         EventBus.getDefault().post(new PedRecordResultEvent(recordList));
         //add by TrillGates notify task finished.
         EventBus.getDefault().post(new TaskFinishedEvent());
index 8a51493..f500020 100644 (file)
@@ -102,4 +102,18 @@ public class AlgorithmUtils {
     }
 
 
+
+    public static double l56A(double bodyTemp, double innerTemp) {
+        double dx;
+        if (innerTemp <= 40.5f) {
+            dx = 0.7229f * innerTemp - 24.707f;
+        } else if (innerTemp > 40.5f && innerTemp <= 42.15) {
+            dx = 0.742f * innerTemp - 25.4852f;
+        } else {
+            dx = 5.77f;
+        }
+        return bodyTemp - dx;
+    }
+
+
 }
index b8dda2b..91026cc 100644 (file)
@@ -104,6 +104,8 @@ public class TemperatureUtil {
             if ("l004pt".equals(property)) {
                 double bodyTempResult = AlgorithmUtils.l004Pt(bodyTemp, evnTemp);
                 ICLogger.d("bodyTempResult == > " + bodyTempResult);
+                //这个是换算后的腕温
+                bodyTemp = bodyTempResult;
                 if (bodyTempResult != -1) {
                     //越接近34.1越准确
                     ICLogger.d("bodyTempResult == > " + bodyTempResult);
@@ -122,15 +124,24 @@ public class TemperatureUtil {
 
                 IcLog.d(TAG, "evnTemp == > " + evnTemp + " resultEnvTemp = >  " + resultEnvTemp);
                 IcLog.d(TAG, "bodyTemp == > " + bodyTemp + " resultBodyTemp = >  " + lastBodyTemp);
+            } else if ("L56A".equals(property)) {
+                double bodyTempResult = AlgorithmUtils.l56A(bodyTemp, evnTemp);
+                bodyTemp = bodyTempResult;
+                ICLogger.d("bodyTempResult == > " + bodyTempResult);
+                if (bodyTempResult != -1) {
+                    //越接近34.1越准确
+                    ICLogger.d("bodyTempResult == > " + bodyTempResult);
+                    lastBodyTemp = getBodyTemp(bodyTempResult, 26.1f);
+                    ICLogger.d("final body temp == > " + lastBodyTemp);
+                    ICLogger.d("final wrist temp == > " + bodyTempResult);
+                }
             } else {
-
-             //   double bodyTempResult = AlgorithmUtils.l004Pt(bodyTemp, evnTemp);
+                //   double bodyTempResult = AlgorithmUtils.l004Pt(bodyTemp, evnTemp);
                 ICLogger.d("wrist TempResult == > " + bodyTemp);
                 if (bodyTemp != -1) {
                     //越接近34.1越准确
                     lastBodyTemp = getBodyTemp(bodyTemp, 26.1f);
                     ICLogger.d("final body temp == > " + lastBodyTemp);
-
                 }
 
             }