From: TrillGates Date: Sat, 6 Mar 2021 03:37:42 +0000 (+0800) Subject: get ic66 heart info X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=fb6b800bfb741d4b18318a37783e1f6257146128;p=icworkservice.git get ic66 heart info --- diff --git a/app/IcL02WorkService/release/IcL02WorkService_V57_202102011415_release.apk b/app/IcL02WorkService/release/IcL02WorkService_V57_202102011623_release.apk similarity index 100% rename from app/IcL02WorkService/release/IcL02WorkService_V57_202102011415_release.apk rename to app/IcL02WorkService/release/IcL02WorkService_V57_202102011623_release.apk diff --git a/app/IcL02WorkService/release/output.json b/app/IcL02WorkService/release/output.json index ae296ab..a195a26 100644 --- a/app/IcL02WorkService/release/output.json +++ b/app/IcL02WorkService/release/output.json @@ -1 +1 @@ -[{"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 +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V57_202102011623_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V57_202102011623_release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6b79077..4889914 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,8 @@ package="com.ic.work" android:sharedUserId="android.uid.system"> + + diff --git a/app/src/main/java/com/ic/jni/ICJniUtils.java b/app/src/main/java/com/ic/jni/ICJniUtils.java index 23de3d0..7104810 100644 --- a/app/src/main/java/com/ic/jni/ICJniUtils.java +++ b/app/src/main/java/com/ic/jni/ICJniUtils.java @@ -25,6 +25,7 @@ public class ICJniUtils { PPG_EGC_TYPE_HRS3301, PPG_EGC_TYPE_IC66, PPG_EGC_TYPE_PAH8002, + PPG_EGC_TYPE_GH301, PPG_EGC_TYPE_MAX } diff --git a/app/src/main/java/com/ic/work/hardware/BloodInfoHelper.java b/app/src/main/java/com/ic/work/hardware/BloodInfoHelper.java index e93c8fb..65ced8d 100644 --- a/app/src/main/java/com/ic/work/hardware/BloodInfoHelper.java +++ b/app/src/main/java/com/ic/work/hardware/BloodInfoHelper.java @@ -1,23 +1,32 @@ package com.ic.work.hardware; +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; import java.util.Random; +import static android.content.Context.SENSOR_SERVICE; + /** * 此工具类获取血氧,血压,心率等信息,结果通过: */ -public class BloodInfoHelper { +public class BloodInfoHelper implements SensorEventListener { private HeartRateInfoChangeListener mListener = null; private final Handler ppgLooper; private long checkBloodStartTime; + private SensorManager mSensorManager; private BloodInfoHelper() { //这个Looper专门用来查询数据的 @@ -44,10 +53,10 @@ public class BloodInfoHelper { public void getBloodInfo() { ICLogger.d("getBloodInfo..."); - boolean[] deviceState = HardwareUtils.isPPGavailableIc66(); + boolean[] deviceState = HardwareUtils.isPPGavailableGH301(); if (!deviceState[0]) { - IcLog.d(TAG, "deviceState[0] == > " + deviceState[0]); + IcLog.d(TAG, "deviceState[0] == > false"); //TODO:这个后面再处理,得给我机器再去处理,没有文档,没有数据 //sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE); if (mListener != null) { @@ -59,6 +68,10 @@ public class BloodInfoHelper { 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); //TODO:这个是走官方API的,也得有机器再进行修改代码 //sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK); // EventBus.getDefault().post(new BloodSensorEvent(1)); @@ -197,6 +210,30 @@ public class BloodInfoHelper { 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]); + } + } + + @Override + public void onAccuracyChanged(Sensor sensor, int accuracy) { + Log.e(TAG, "onAccuracyChanged() is called " + sensor.getName() + " accuracy=" + accuracy); + } + public interface HeartRateInfoChangeListener { diff --git a/app/src/main/java/com/ic/work/utils/HardwareUtils.java b/app/src/main/java/com/ic/work/utils/HardwareUtils.java index 2e24e74..cf5dbae 100644 --- a/app/src/main/java/com/ic/work/utils/HardwareUtils.java +++ b/app/src/main/java/com/ic/work/utils/HardwareUtils.java @@ -19,6 +19,19 @@ public class HardwareUtils { } } + 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();