add different hardwear type support.
authorTrillGates <williamtrillgates@gmail.com>
Mon, 1 Feb 2021 06:17:53 +0000 (14:17 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Mon, 1 Feb 2021 06:17:53 +0000 (14:17 +0800)
12 files changed:
app/IcL02WorkService/release/IcL02WorkService_V57_202101221525_release.apk [deleted file]
app/IcL02WorkService/release/IcL02WorkService_V57_202102011415_release.apk [new file with mode: 0644]
app/IcL02WorkService/release/output.json
app/src/main/AndroidManifest.xml
app/src/main/aidl/com/ic/work/IWhiteListTriggerService.aidl [new file with mode: 0644]
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/HardwareUtils.java
app/src/main/java/com/ic/work/utils/TemperatureUtil.java
app/src/main/java/com/ic/work/weather/WhiteListService.java [new file with mode: 0644]
app/src/main/res/values/styles.xml

diff --git a/app/IcL02WorkService/release/IcL02WorkService_V57_202101221525_release.apk b/app/IcL02WorkService/release/IcL02WorkService_V57_202101221525_release.apk
deleted file mode 100644 (file)
index 23b079f..0000000
Binary files a/app/IcL02WorkService/release/IcL02WorkService_V57_202101221525_release.apk and /dev/null differ
diff --git a/app/IcL02WorkService/release/IcL02WorkService_V57_202102011415_release.apk b/app/IcL02WorkService/release/IcL02WorkService_V57_202102011415_release.apk
new file mode 100644 (file)
index 0000000..9688401
Binary files /dev/null and b/app/IcL02WorkService/release/IcL02WorkService_V57_202102011415_release.apk differ
index b8ed1db..ae296ab 100644 (file)
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V57_202101221525_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V57_202101221525_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_V57_202102011415_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V57_202102011415_release.apk","properties":{}}]
\ No newline at end of file
index 2cbd87c..6b79077 100644 (file)
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
             </intent-filter>
         </receiver>
+        <service android:name=".weather.WhiteListService">
+            <intent-filter>
+                <!--白名单服务-->
+                <action android:name="com.ic.action.WHITE_LIST" />
+            </intent-filter>
+        </service>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/aidl/com/ic/work/IWhiteListTriggerService.aidl b/app/src/main/aidl/com/ic/work/IWhiteListTriggerService.aidl
new file mode 100644 (file)
index 0000000..2cdfcfb
--- /dev/null
@@ -0,0 +1,13 @@
+// IWhiteListTriggerService.aidl
+package com.ic.work;
+
+interface IWhiteListTriggerService {
+    //trigger white list open
+    //isOpen:true --> open white list filtter or would not block number income.
+    //packageName ---> is call from app packageName
+    //return value is result.
+    boolean setWhiteListOpen(boolean isOpen,String packageName);
+
+    //get current block state
+    boolean getCurrentBlockState();
+}
\ No newline at end of file
index b19112b..95b068e 100644 (file)
@@ -455,6 +455,9 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp
         // 掌育会startService的方式来启动服务,如果已经启动了
         // 不走onCreate,则会走这里
         //可以获取到相关的值,然后去获取心率/体温
+        if (intent == null) {
+            return super.onStartCommand(null, flags, startId);
+        }
         String action = intent.getAction();
         IcLog.d(TAG, "onStartCommand action == > " + action);
         //可以通过action来判断
index 49c1fcd..e93c8fb 100644 (file)
@@ -50,6 +50,10 @@ public class BloodInfoHelper {
             IcLog.d(TAG, "deviceState[0] == > " + deviceState[0]);
             //TODO:这个后面再处理,得给我机器再去处理,没有文档,没有数据
             //sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE);
+            if (mListener != null) {
+                mListener.onHeartRateResult(0, 0, 0, 0);
+                mListener.onHeartRateTestFinished();
+            }
             return;
         }
 
index 9580394..6ebd714 100644 (file)
@@ -2,6 +2,7 @@ package com.ic.work.hardware;
 
 import android.os.SystemClock;
 
+import com.ic.jni.ICJniUtils;
 import com.ic.work.domain.TemperatureItem;
 import com.ic.work.utils.HardwareUtils;
 import com.ic.work.utils.ICLogger;
@@ -45,9 +46,9 @@ public class TemperatureHelper {
         lastBodyTemp = 0.0;
         lastWristTemp = 0.0;
         delayTimesInSeconds = 20;
-        boolean[] state = HardwareUtils.isTemperatureDevAvailable();
-        IcLog.i(TAG, "TemperatureRunnable :" + state[0] + " state[1]:" + state[1]);
-        if (state[0]) {  //have temp
+        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();
@@ -59,32 +60,40 @@ public class TemperatureHelper {
                     IcLog.d(TAG, "do temperature....");
                     SystemClock.sleep(1000);
                     long getStartTime = System.currentTimeMillis();
-                    lastWristTemp = HardwareUtils.getNdkTemperatureOutValue();
-                    TemperatureItem temperatureItem = TemperatureUtil.doTempTest();
-                    if (temperatureItem != null) {
-                        lastWristTemp = Double.parseDouble(temperatureItem.getBodyTemp());
-                        lastTempOut = Double.parseDouble(temperatureItem.getEvnTemp());
-
-                        if (lastTempOut > 60 || lastTempOut < 1) {
-                            lastTempOut = 0.0f;
-                        }
-                        if (lastTempOut > 0.0f) {
-                            lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, lastTempOut);
-                        } else {
-                            lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, 26.0f);
+                    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());
                         }
-                        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() - getStartTime));
+                    } 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);
+                    }
+                    ICLogger.d("get temperature data use time == > " + (System.currentTimeMillis() - getStartTime));
+
                     delayTimesInSeconds--;
                     IcLog.d(TAG, "delayTimesInSeconds " + delayTimesInSeconds);
                     //延时delay_times_in_seconds秒后停止检测。
index b39a7f5..2e24e74 100644 (file)
@@ -127,19 +127,12 @@ public class HardwareUtils {
         }
     }
 
-    public static boolean[] isTemperatureDevAvailable() {
-
-        boolean[] temp = new boolean[]{false, false};
+    public static int isTemperatureDevAvailable() {
         try {
-            int type = ICJniUtils.isTemperatureDevAvailable();
-            temp[0] = type > ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal();
-            if (temp[0]) {
-                temp[1] = type == ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_IC68.ordinal();
-            }
-            return temp;
+            return ICJniUtils.isTemperatureDevAvailable();
         } catch (Exception e) {
             e.printStackTrace();
-            return temp;
+            return ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal();
         }
     }
 
@@ -154,7 +147,9 @@ public class HardwareUtils {
 
     public static double getNdkTemperatureOutValue() {
         try {
-            return ICJniUtils.getTemperatureOrigin();
+            double temperatureOrigin = ICJniUtils.getTemperatureOrigin();
+            IcLog.d(TAG, "getNdkTemperatureOutValue... " + temperatureOrigin);
+            return temperatureOrigin;
         } catch (Exception e) {
             IcLog.e(TAG, "", e);
             return 0;
index 5a15ff0..de900cf 100644 (file)
@@ -57,16 +57,16 @@ public class TemperatureUtil {
             double cpuTemp/*cpu温度*/ = 0.0f;
             double evnTemp/*环境温度*/ = 0.0f;
             double gpuTemp/*gpu温度*/ = 0.0f;
-            double chargeTemp/*充电板的温度*/ = 0.0f;
-            double paTemp/*射频的温度*/ = 0.0f;
+            //double chargeTemp/*充电板的温度*/ = 0.0f;
+            // double paTemp/*射频的温度*/ = 0.0f;
             double boardTemp/*主板的温度*/ = 0.0f;
             try {
                 String cpuTempType = TempFileUtils.readFile(CMD_CPU_TYPE);
                 String cpuTempStr = TempFileUtils.readFile(CMD_CPU_TEM);
                 String gpuTempType = TempFileUtils.readFile(CMD_GPU_TYPE);
                 String gpuTempStr = TempFileUtils.readFile(CMD_GPU_TEM);
-                String chargeTempType = TempFileUtils.readFile(CMD_CHARGE_TYPE);
-                String chargeTempStr = TempFileUtils.readFile(CMD_CHARGE_TEM);
+                //String chargeTempType = TempFileUtils.readFile(CMD_CHARGE_TYPE);
+                //String chargeTempStr = TempFileUtils.readFile(CMD_CHARGE_TEM);
                 String paTempType = TempFileUtils.readFile(CMD_PA_TYPE);
                 String paTempStr = TempFileUtils.readFile(CMD_PA_TEM);
                 String boardTempType = TempFileUtils.readFile(CMD_BOARD_TYPE);
@@ -77,9 +77,9 @@ public class TemperatureUtil {
                         "\n | " +
                         " gpuTempType == >  " + gpuTempType +
                         " gpuTempStr == >  " + gpuTempStr
-                        + "\n | "
-                        + "chargeTempType == > " + chargeTempType +
-                        " chargeTempStr == > " + chargeTempStr
+                        //  + "\n | "
+                        //+ "chargeTempType == > " + chargeTempType +
+                        // " chargeTempStr == > " + chargeTempStr
                         + "\n | "
                         + "paTempType == > " + paTempType +
                         " paTempStr == > " + paTempStr
@@ -90,19 +90,19 @@ public class TemperatureUtil {
                 //数据处理一下
                 cpuTemp = Integer.parseInt(cpuTempStr) / 1000.0f;
                 gpuTemp = Integer.parseInt(gpuTempStr) / 1000.0f;
-                try {
-                    chargeTemp = Integer.parseInt(chargeTempStr) / 1000.0f;
-                } catch (Exception e) {
-                    chargeTemp = 0.0f;
-                }
-                try {
-                    paTemp = Integer.parseInt(paTempStr) / 1000.0f;
-                } catch (Exception e) {
-                    paTemp = 0.0f;
-                }
+                // try {
+                //    chargeTemp = Integer.parseInt(chargeTempStr) / 1000.0f;
+                //  } catch (Exception e) {
+                //  chargeTemp = 0.0f;
+                //  }
+                //  try {
+                //     paTemp = Integer.parseInt(paTempStr) / 1000.0f;
+                //  } catch (Exception e) {
+                //     paTemp = 0.0f;
+                // }
                 boardTemp = Integer.parseInt(boardTempStr) / 1000.0f;
             } catch (Exception e) {
-               //no crash is okay.
+                //no crash is okay.
             }
             evnTemp = get_tempOut_value_origin();
             bodyTemp = get_temp_value_adjusted();
@@ -169,9 +169,9 @@ public class TemperatureUtil {
                         String.format("%.01f", cpuTemp),
                         String.format("%.01f", resultEnvTemp),
                         String.format("%.01f", gpuTemp),
-                        String.format("%.01f", chargeTemp),
+                        "0.00",
                         String.format("%.01f", boardTemp),
-                        String.format("%.01f", paTemp));
+                        "0.00");
                 return temperatureItem;
             } catch (Exception e) {
                 e.printStackTrace();
diff --git a/app/src/main/java/com/ic/work/weather/WhiteListService.java b/app/src/main/java/com/ic/work/weather/WhiteListService.java
new file mode 100644 (file)
index 0000000..2375b0a
--- /dev/null
@@ -0,0 +1,60 @@
+package com.ic.work.weather;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+
+import androidx.annotation.Nullable;
+
+import com.ic.work.IWhiteListTriggerService;
+import com.ic.work.utils.ICLogger;
+import com.ic.work.utils.IcSystemProperty;
+
+/**
+ * 这个服务供远程开始和关闭白名单的功能,解决权限的问题
+ */
+public class WhiteListService extends Service {
+
+
+    public static final String ACTION = "com.ic.action.WHITE_LIST";
+    public static final String KEY_PROP_WHITE_LIST_TRIGGER = "persist.sys.isBlockPhone";
+
+    @Nullable
+    @Override
+    public IBinder onBind(Intent intent) {
+        String action = intent.getAction();
+        ICLogger.d("action is == > " + action);
+        if (ACTION.equals(action)) {
+            return mService;
+        }
+        return null;
+    }
+
+    private IWhiteListTriggerService.Stub mService = new IWhiteListTriggerService.Stub() {
+        @Override
+        public boolean setWhiteListOpen(boolean isOpen, String packageName) {
+            ICLogger.d("remote package is == > " + packageName);
+            try {
+                IcSystemProperty.setSystemProperties(KEY_PROP_WHITE_LIST_TRIGGER, isOpen + "");
+                String result = IcSystemProperty.getSystemProperties(KEY_PROP_WHITE_LIST_TRIGGER, "false");
+                ICLogger.d("result == > " + result);
+                return Boolean.parseBoolean(result);
+            } catch (Exception e) {
+                ICLogger.e("exception == > ", e);
+            }
+            return false;
+        }
+
+        @Override
+        public boolean getCurrentBlockState() {
+            String result = IcSystemProperty.getSystemProperties(KEY_PROP_WHITE_LIST_TRIGGER, "false");
+            return Boolean.parseBoolean(result);
+        }
+    };
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        mService = null;
+    }
+}
index 5885930..0eb88fe 100644 (file)
@@ -1,7 +1,7 @@
 <resources>
 
     <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
         <!-- Customize your theme here. -->
         <item name="colorPrimary">@color/colorPrimary</item>
         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>