release IcL02WorkService_V61_202305022333_release.apk l005
authorSnickerSun <snickersun@163.com>
Tue, 2 May 2023 15:35:41 +0000 (23:35 +0800)
committerSnickerSun <snickersun@163.com>
Tue, 2 May 2023 15:35:41 +0000 (23:35 +0800)
修正日志输出
修正gh3018不出现佩戴消息,不能关闭心率,造成耗电的问题。

app/IcL02WorkService/release/IcL02WorkService_V61_202305022333_release.apk [new file with mode: 0644]
app/IcL02WorkService/release/output.json
app/src/main/AndroidManifest.xml
app/src/main/java/com/ic/work/SensorDataService.java
app/src/main/java/com/ic/work/hardware/BloodInfoHelper.java
app/src/main/java/com/ic/work/hardware/TemperatureHelper.java
app/src/main/java/com/ic/work/utils/ICLogger.java
app/src/main/java/com/ic/work/utils/StorageUtils.java
app/src/main/java/com/ic/work/utils/Utils.java
app/version_code.properties

diff --git a/app/IcL02WorkService/release/IcL02WorkService_V61_202305022333_release.apk b/app/IcL02WorkService/release/IcL02WorkService_V61_202305022333_release.apk
new file mode 100644 (file)
index 0000000..410c412
Binary files /dev/null and b/app/IcL02WorkService/release/IcL02WorkService_V61_202305022333_release.apk differ
index e7e0149..00abcb6 100644 (file)
@@ -1 +1 @@
-[{"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
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V61_202305022333_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V61_202305022333_release.apk","properties":{}}]
\ No newline at end of file
index 4889914..9c6c048 100644 (file)
@@ -73,6 +73,7 @@
                 <action android:name="com.jx.lanucher.action.heartrate" />
                 <action android:name="com.ic.sensor.data.action.TEMPERATURE" />
                 <action android:name="com.ic.sensor.data.action.HEART_RATE" />
+                <action android:name="action.WORK_SERVICE_SECOND_TIMER" />
             </intent-filter>
         </service>
 
index 358ce0e..51e49c8 100644 (file)
@@ -50,6 +50,7 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
     public static final String KEY_TEMP_WRIST = "wrist";  //  double 腕温
     public static final String KEY_TEMP_OUT = "out";  //  double 腕温
     private static final String HEART_ACTION = "com.ic.action.BLOOD_HEART";
+    public static final String ACTION_WORKSERVICE_SECOND_TIMER = "action.WORK_SERVICE_SECOND_TIMER";
     private static final String TAG = "SensorDataService";
     private final LinkedBlockingDeque<TestTaskEvent> mTaskList = new LinkedBlockingDeque<>();
 
@@ -439,6 +440,9 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
             jxTempMode = intent.getIntExtra(JX_KEY_MODE, -1);
             //创建测试温度的任务
             createTask(jxTempMode, TestTaskEvent.SensorType.TEMPERATURE, null);
+        } else if (ACTION_WORKSERVICE_SECOND_TIMER.equals(action)){
+            ICLogger.d("onStartCommand "+ACTION_WORKSERVICE_SECOND_TIMER);
+            BloodInfoHelper.getInstance().checkResultData();
         }
         return super.onStartCommand(intent, flags, startId);
     }
index 8a1727e..237a165 100644 (file)
@@ -6,9 +6,11 @@ import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
 import android.util.Log;
 
+import com.ic.work.SensorDataService;
 import com.ic.work.WorkServiceApp;
 import com.ic.work.utils.ICLogger;
 import com.ic.work.utils.IcLog;
+import com.ic.work.utils.Utils;
 
 import java.util.Random;
 
@@ -69,6 +71,8 @@ public class BloodInfoHelper implements SensorEventListener {
             checkCount = 0;
             noWearCount = 0;
             invalidateTime = 0;
+
+            Utils.setSensorDataServiceRealTimeAlarmInSeconds(WorkServiceApp.sContext,1, SensorDataService.ACTION_WORKSERVICE_SECOND_TIMER);
         } else {
             //这个走JNI获取数据的,完成了
             ICLogger.e("No Blood sensor ");
@@ -117,25 +121,10 @@ public class BloodInfoHelper implements SensorEventListener {
         this.mListener = listener;
     }
 
-    @Override
-    public void onSensorChanged(SensorEvent event) {
-        float values[] = event.values;
-        int length = values.length;
-        Log.e(TAG, "onSensorChanged() is called " + length);
-        if (length >= 5) {
-            /*[0]---心率;[1]---血压高压;[2]---血压低压;[3]---血氧;[4]---佩戴检测(1--脱手,2--上手);*/
-            Log.e(TAG, "onSensorChanged() is called " + length
-                    + "PPG=  " + values[0]
-                    + "BPH= " + values[1]
-                    + "BPL=  " + values[2]
-                    + "spo2= " + values[3]
-                    + "Weared= " + values[4]
-            );
-        } else {
-            Log.d(TAG, "on sensor change == > PPG= " + values[0]);
-        }
-        ndkHeart = (int) values[0];
-        isWear = (int)values[4] > 1;
+    /**
+     * 按秒钟检查测试结果,防止无佩戴时长时间不超时。
+     */
+    public void checkResultData(){
         IcLog.d(TAG, "isWear == > " + isWear);
         if (!isWear) {
             //延时1秒进行检查
@@ -143,6 +132,7 @@ public class BloodInfoHelper implements SensorEventListener {
             IcLog.d(TAG, "noWearCount == > " + noWearCount);
             if (noWearCount > 20) {
                 handleResult();
+                return;
             }
         } else {
             noWearCount = 0;
@@ -150,10 +140,6 @@ public class BloodInfoHelper implements SensorEventListener {
         }
 
         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);
@@ -164,6 +150,7 @@ public class BloodInfoHelper implements SensorEventListener {
                 //继续测试
             } else {
                 handleResult();
+                return;
             }
             IcLog.d(TAG, "use time == > " + (System.currentTimeMillis() - getPPGStartTime));
         } else {
@@ -173,8 +160,37 @@ public class BloodInfoHelper implements SensorEventListener {
             if (invalidateTime <= 30) {
             } else {
                 handleResult();
+                return;
             }
         }
+        Utils.setSensorDataServiceRealTimeAlarmInSeconds(WorkServiceApp.sContext,1, SensorDataService.ACTION_WORKSERVICE_SECOND_TIMER);
+
+    }
+    @Override
+    public void onSensorChanged(SensorEvent event) {
+        float values[] = event.values;
+        int length = values.length;
+        Log.e(TAG, "onSensorChanged() is called " + length);
+        if (length >= 5) {
+            /*[0]---心率;[1]---血压高压;[2]---血压低压;[3]---血氧;[4]---佩戴检测(1--脱手,2--上手);*/
+            Log.e(TAG, "onSensorChanged() is called " + length
+                    + "PPG=  " + values[0]
+                    + "BPH= " + values[1]
+                    + "BPL=  " + values[2]
+                    + "spo2= " + values[3]
+                    + "Weared= " + values[4]
+            );
+        } else {
+            Log.d(TAG, "on sensor change == > PPG= " + values[0]);
+        }
+        ndkHeart = (int) values[0];
+        isWear = (int)values[4] > 1;
+        if (ndkHeart > 0) {
+            ndkHigh = (int) values[1];
+            ndkLow = (int) values[2];
+            oxygen = (int) values[3];
+            if (oxygen <= 0) oxygen = randomOxygenValue();
+        }
     }
 
     @Override
index 3678d17..f68f165 100644 (file)
@@ -112,8 +112,8 @@ public class TemperatureHelper implements SensorEventListener {
              if (delayTimesInSeconds <= 0) {
                  if (mListener != null) {
                      ICLogger.d("result == >lastWristTemp " + lastWristTemp + " lastBodyTemp" + lastBodyTemp + " lastTempOut" + lastTempOut);
-                     mSensorManager.unregisterListener(this);
                      mListener.onTemperatureResult(lastWristTemp, lastBodyTemp, lastTempOut);
+                     mSensorManager.unregisterListener(this);
                  }
              }
         }
index 1bbfcce..ce865f0 100644 (file)
@@ -23,12 +23,6 @@ public class ICLogger {
     private static Context mContext = null;
 
     private static Logger Log = null;
-    private static Logger GPS = null;
-    private static Logger Nmea = null;
-    private static Logger APILog = null;
-    private static Logger alarmCycle = null;
-    private static Logger Battery = null;
-    private static Logger LBS = null;
     //  private static java.util.logging.Logger originLog= getLogger(ICLogger.class.getSimpleName());
     private static final boolean DEBUG = true;    //BuildConfig.DEBUG;
 
@@ -116,71 +110,18 @@ public class ICLogger {
             //Log 和log目前是同一个配置
             Log = getLogger("log");
             Log.info("init Logger " + Log.getName());
-//        Log.addAppender( getRollingFileAppender("log","%d %m%n "));
-//        Log.info("init Logger "+Log.getName()+" "+((RollingFileAppender)Log.getAppender("log")).getFile());
-
-            GPS = getLogger("GPS");
-            GPS.addAppender(getRollingFileAppender("GPS", "%d %m%n "));
-            GPS.info("init Logger " + GPS.getName() + " " + ((RollingFileAppender) GPS.getAppender("GPS")).getFile());
-
-            Nmea = getLogger("Nmea");
-            Nmea.addAppender(getRollingFileAppender("Nmea", "%m%n"));
-            Nmea.info("init Logger " + Nmea.getName() + " " + ((RollingFileAppender) Nmea.getAppender("Nmea")).getFile());
-
-            APILog = getLogger("APILog");
-            APILog.addAppender(getRollingFileAppender("APILog", "%d %m%n "));
-            APILog.info("init Logger " + APILog.getName() + " " + ((RollingFileAppender) APILog.getAppender("APILog")).getFile());
-
-            alarmCycle = getLogger("alarmCycle");
-            alarmCycle.addAppender(getRollingFileAppender("alarmCycle", "%d %m%n "));
-            alarmCycle.info("init Logger " + alarmCycle.getName() + " " + ((RollingFileAppender) alarmCycle.getAppender("alarmCycle")).getFile());
-
-            Battery = getLogger("Battery");
-            Battery.addAppender(getRollingFileAppender("Battery", "%d %m%n "));
-            Battery.info("init Logger " + Battery.getName() + " " + ((RollingFileAppender) Battery.getAppender("Battery")).getFile());
-
-
-            LBS = getLogger("LBS");
-            LBS.addAppender(getRollingFileAppender("LBS", "%d %m%n "));
-            LBS.info("init Logger " + LBS.getName() + " " + ((RollingFileAppender) LBS.getAppender("LBS")).getFile());
+            //Log.addAppender( getRollingFileAppender("log","%d %m%n "));
+            //Log.info("init Logger "+Log.getName()+" "+((RollingFileAppender)Log.getAppender("log")).getFile());
             isInitConfig = true;
         }
     }
 
     public static void logRAWtoFile(String filename, String msg) {
-        if (filename.equals("Nmea")) {
-            Nmea.info(msg);
-        } else if (filename.equals("LBS")) {
-            LBS.info(msg);
-        } else if (filename.equals("GPS")) {
-            GPS.info(msg);
-        } else if (filename.equals("APILog")) {
-            APILog.info(msg);
-        } else if (filename.equals("alarmCycle")) {
-            alarmCycle.info(msg);
-        } else if (filename.equals("Battery")) {
-            Battery.info(msg);
-        } else {
-            Log.info(msg);
-        }
+        Log.info(msg);
     }
 
     public static void logToFile(String filename, String msg) {
-        if (filename.equals("Nmea")) {
-            Nmea.info(msg);
-        } else if (filename.equals("LBS")) {
-            LBS.info(msg);
-        } else if (filename.equals("GPS")) {
-            GPS.info(msg);
-        } else if (filename.equals("APILog")) {
-            APILog.info(msg);
-        } else if (filename.equals("alarmCycle")) {
-            alarmCycle.info(msg);
-        } else if (filename.equals("Battery")) {
-            Battery.info(msg);
-        } else {
-            Log.info(msg);
-        }
+        Log.info(msg);
     }
 
     private static RollingFileAppender getRollingFileAppender(String name, String layoutpattern) {
index d8107a7..5d2ec5d 100644 (file)
@@ -54,7 +54,7 @@ public final class StorageUtils {
             if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
                 dir = new File(Environment.getExternalStoragePublicDirectory(DIRECTORY_DOCUMENTS), "Android/ic/icWorkService");
             } else {
-                dir = new File(Environment.getExternalStorageDirectory().getPath(), "Android/ic/icprotocol");
+                dir = new File(Environment.getExternalStorageDirectory().getPath(), "Android/ic/icWorkService");
             }
 
             String path = dir.getPath();
index e6a9f8f..361a567 100644 (file)
@@ -1,5 +1,15 @@
 package com.ic.work.utils;
 
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.SystemClock;
+
+import com.ic.work.SensorDataService;
+import com.ic.work.WorkService;
+
 import java.lang.reflect.Method;
 
 public class Utils {
@@ -21,5 +31,17 @@ public class Utils {
         }
         return str;
     }
-
+    public static void setSensorDataServiceRealTimeAlarmInSeconds(Context context, int seconds, String actionname) {
+        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+        Intent intent = new Intent(context, SensorDataService.class);
+        intent.setAction(actionname);
+        PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+        alarmManager.cancel(pendingIntent);
+        long l = SystemClock.elapsedRealtime();
+        if (Build.VERSION.SDK_INT >= 19) {
+            alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (seconds * 1000), pendingIntent);
+            return;
+        }
+        alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (seconds * 1000), pendingIntent);
+    }
 }
index 38e8980..e9f3555 100644 (file)
@@ -1,2 +1,2 @@
 #Thu Jul 16 16:46:05 CST 2020
-VERSION_CODE=60
+VERSION_CODE=61