From: SnickerSun Date: Tue, 20 Dec 2022 13:23:04 +0000 (+0800) Subject: release IcL02WorkService_V60_202212202120_release.apk X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=11a51ce936e0e9e9b8de421b3a27b409901ff854;p=icworkservice.git release IcL02WorkService_V60_202212202120_release.apk 取消无用的AK,A9 相关代码 修改心率和体温为通过SensorManager来控制! --- diff --git a/app/IcL02WorkService/release/IcL02WorkService_V60_202212202120_release.apk b/app/IcL02WorkService/release/IcL02WorkService_V60_202212202120_release.apk new file mode 100644 index 0000000..4e14a80 Binary files /dev/null and b/app/IcL02WorkService/release/IcL02WorkService_V60_202212202120_release.apk differ diff --git a/app/IcL02WorkService/release/output.json b/app/IcL02WorkService/release/output.json index 84d3178..e7e0149 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_202104151129_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V57_202104151129_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_V60_202212202120_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V60_202212202120_release.apk","properties":{}}] \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 382d8d2..6f3d3a8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -64,23 +64,8 @@ android { productFlavors { - IcA9WorkService { - flavorDimensions "IcA9WorkService" - versionCode 1 - versionName "5.0" - buildConfigField "int", "productType", "1002" - - } - - IcAkWorkService { - flavorDimensions "IcAkWorkService" - versionCode 1 - versionName "1.0" - buildConfigField "int", "productType", "1001" - } - IcL02WorkService { - flavorDimensions "IcAkWorkService" + flavorDimensions "IcWorkService" versionCode 1 versionName "1.1" buildConfigField "int", "productType", "1003" diff --git a/app/src/main/aidl/com/ic/aidl/ak/BloodState.java b/app/src/main/aidl/com/ic/aidl/ak/BloodState.java deleted file mode 100644 index 69c5b9d..0000000 --- a/app/src/main/aidl/com/ic/aidl/ak/BloodState.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ic.aidl.ak; - -public class BloodState { - - public static final int BLOOD_NULL_TIPS = -1; - public static final int BLOOD_NOT_DEVICE = 1001; - - public static final int BLOOD_PLEASE_QUIET = 1002; - public static final int BLOOD_START_CHECK= 1003; - - public static final int BLOOD_NOT_WEAR=1004; - public static final int BLOOD_ING_CHECK=1005; - - public static final int BLOOD_STOP_CHECK=1006; - public static final int BLOOD_NOT_DATA_CHECK=1007; -} diff --git a/app/src/main/aidl/com/ic/aidl/ak/IAkAidlInterface.aidl b/app/src/main/aidl/com/ic/aidl/ak/IAkAidlInterface.aidl deleted file mode 100644 index a5ad002..0000000 --- a/app/src/main/aidl/com/ic/aidl/ak/IAkAidlInterface.aidl +++ /dev/null @@ -1,16 +0,0 @@ -// ITempAidlInterface.aidl -package com.ic.aidl.ak; - -// Declare any non-default types here with import statements - -interface IAkAidlInterface { - /** - * Demonstrates some basic types that you can use as parameters - * and return values in AIDL. - */ - void updateBloodCheckResult(int high,int low,int heart,int oxygen); - void updateBloodCheckTips(int top,int bottom); - void updatePedCount(int count); - void updateCurrTempValue(double value,double animal); - void updateResultTempValue(double value,double animal); -} diff --git a/app/src/main/aidl/com/ic/aidl/ak/IAkRemoteService.aidl b/app/src/main/aidl/com/ic/aidl/ak/IAkRemoteService.aidl deleted file mode 100644 index ca232a4..0000000 --- a/app/src/main/aidl/com/ic/aidl/ak/IAkRemoteService.aidl +++ /dev/null @@ -1,22 +0,0 @@ -// ITempRemoteService.aidl -package com.ic.aidl.ak; - -// Declare any non-default types here with import statements - -import com.ic.aidl.ak.IAkAidlInterface; - -interface IAkRemoteService { - /** - * Demonstrates some basic types that you can use as parameters - * and return values in AIDL. - */ - void registerCallback(IAkAidlInterface cb); - void unregisterCallback(IAkAidlInterface cb); - - void startCheckBlood(); - void stopCheckBlood(); - void queryPedCount(); - - void onStartQueryTemp(); - void onStopQueryTemp(); -} diff --git a/app/src/main/java/com/ic/work/SensorDataService.java b/app/src/main/java/com/ic/work/SensorDataService.java index 95b068e..358ce0e 100644 --- a/app/src/main/java/com/ic/work/SensorDataService.java +++ b/app/src/main/java/com/ic/work/SensorDataService.java @@ -8,15 +8,10 @@ import android.os.RemoteCallbackList; import android.os.RemoteException; import android.util.Log; -import androidx.annotation.Nullable; - import com.ic.work.domain.HeartRate; import com.ic.work.domain.Temperature; -import com.ic.work.event.AkBloodCheckResultEvent; -import com.ic.work.event.BloodSensorEvent; import com.ic.work.event.TestTaskEvent; import com.ic.work.hardware.BloodInfoHelper; -import com.ic.work.hardware.BloodSensorManager; import com.ic.work.hardware.TemperatureHelper; import com.ic.work.utils.ICLogger; import com.ic.work.utils.ICWorkConstants; @@ -62,12 +57,11 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp private boolean isRunning = false; //当前执行的任务 private TestTaskEvent currentTask; - private BloodSensorManager bloodSensorManager; private final Object mLock = new Object(); private PowerManager powerManager; - private PowerManager.WakeLock wakeLock; + private PowerManager.WakeLock wakeLock=null; + - @Nullable @Override public IBinder onBind(Intent intent) { //兼容旧的 @@ -108,8 +102,8 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp * 根据不同的传感器类型走不同的任务。 * 如果任务超时了,则自动结束任务,执行下一个任务。 */ - @Subscribe(threadMode = ThreadMode.BACKGROUND) - public void handleTestEvent(TestTaskEvent testTaskEvent) { + @Subscribe(threadMode = ThreadMode.BACKGROUND) + public void handleTestEvent(TestTaskEvent testTaskEvent) { //保持CPU运行 wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ic:sensorDataService"); wakeLock.acquire(10 * 60 * 1000L /*10 minutes*/); @@ -390,35 +384,11 @@ public class SensorDataService extends Service implements TemperatureHelper.Temp } - @Subscribe(threadMode = ThreadMode.ASYNC) - public void onMessageEvent(BloodSensorEvent event) { - switch (event.type) { - case 1: - if (bloodSensorManager == null) { - bloodSensorManager = new BloodSensorManager(); - } - bloodSensorManager.createSensorManager(this); - break; - case 2: - bloodSensorManager.unregisterSensorListener(); - break; - } - } - @Subscribe(threadMode = ThreadMode.ASYNC) - public void onMessageEvent(AkBloodCheckResultEvent event) { - int[] deviation = getPPG_ECG_adjustValue(); - event.heart = event.heart + deviation[0]; - event.high = event.high + deviation[1]; - event.low = event.low + deviation[2]; - event.oxygen = event.oxygen + deviation[3]; - handleBloodResult(event.high, event.low, - event.heart, event.oxygen); - IcLog.d(TAG, "on ak blood test end..."); - checkContinue(); - } + private void checkContinue() { + if(wakeLock!=null && wakeLock.isHeld()) wakeLock.release(); isRunning = false; currentTask = null; diff --git a/app/src/main/java/com/ic/work/WorkService.java b/app/src/main/java/com/ic/work/WorkService.java index 25ade05..7ad8604 100644 --- a/app/src/main/java/com/ic/work/WorkService.java +++ b/app/src/main/java/com/ic/work/WorkService.java @@ -20,14 +20,10 @@ import com.ic.work.event.TaskFinishedEvent; import com.ic.work.event.ThreadPoolEvent; import com.ic.work.event.WeatherAgainEvent; import com.ic.work.event.WeatherResultEvent; -import com.ic.work.hardware.A9BloodRunnable; -import com.ic.work.hardware.AkBloodRunnable; import com.ic.work.hardware.BeforeDawnRunnable; -import com.ic.work.hardware.BloodSensorManager; import com.ic.work.hardware.MessengerCoreService; import com.ic.work.hardware.PedRecordRunnable; import com.ic.work.hardware.PedRunnable; -import com.ic.work.process.AkProcess; import com.ic.work.process.BloodProcess; import com.ic.work.process.PedProcess; import com.ic.work.process.TempProcess; @@ -46,12 +42,9 @@ import org.threeten.bp.ZoneId; import static com.ic.work.utils.ICWorkConstants.EventType.STEP_RECORD; import static com.ic.work.utils.ICWorkConstants.EventType.STOP_ALL_TASK; -import static com.ic.work.utils.ICWorkConstants.EventType.TEST_A9_BLOOD; -import static com.ic.work.utils.ICWorkConstants.EventType.TEST_AK_BLOOD; import static com.ic.work.utils.ICWorkConstants.EventType.TEST_STEP; import static com.ic.work.utils.ICWorkConstants.EventType.WEATHER; import static com.ic.work.utils.ICWorkConstants.ServiceType.ACTION_HARD_WARE; -import static com.ic.work.utils.ICWorkConstants.ServiceType.ACTION_IC_AK; import static com.ic.work.utils.ICWorkConstants.ServiceType.ACTION_WEATHER; public class WorkService extends Service { @@ -75,7 +68,6 @@ public class WorkService extends Service { private TempProcess tempProcess; private WeatherProcess weatherProcess; - private AkProcess akProcess; private WeatherHelper mWeatherHelper; @@ -85,9 +77,6 @@ public class WorkService extends Service { private LocalDateTime mFinishTime; - private BloodSensorManager bloodSensorManager; - - @Override public IBinder onBind(Intent intent) { if (intent != null) { @@ -99,9 +88,6 @@ public class WorkService extends Service { case ACTION_HARD_WARE: //计步 return pedProcess.getPedBinder(); - case ACTION_IC_AK: - //计步 - return akProcess.getAkBinder(); default: return null; } @@ -119,7 +105,6 @@ public class WorkService extends Service { bloodProcess = new BloodProcess(); pedProcess = new PedProcess(); tempProcess = new TempProcess(); - akProcess = new AkProcess(); mWeatherHelper = new WeatherHelper(mApp.getWeatherRepository(), this); @@ -160,9 +145,6 @@ public class WorkService extends Service { event.getBottomTips()); } - if (akProcess != null) { - akProcess.sendBloodCheckTips(event.getTopTips(), event.getBottomTips()); - } } @@ -193,9 +175,6 @@ public class WorkService extends Service { pedProcess.sendPedCount(event.getPedCount()); } - if (akProcess != null) { - akProcess.sendPedCount(event.getPedCount()); - } //发送一次广播给launcher sendPedCountBroadcast(event.getPedCount()); } @@ -261,12 +240,7 @@ public class WorkService extends Service { case WEATHER: ThreadPoolManager.getInstance().execute(new WeatherDBRun(mApp.getWeatherRepository())); break; - case TEST_A9_BLOOD: - ThreadPoolManager.getInstance().execute(new A9BloodRunnable()); - break; - case TEST_AK_BLOOD: - ThreadPoolManager.getInstance().execute(new AkBloodRunnable()); - break; + } } diff --git a/app/src/main/java/com/ic/work/event/AkBloodCheckResultEvent.java b/app/src/main/java/com/ic/work/event/AkBloodCheckResultEvent.java deleted file mode 100644 index 41dac44..0000000 --- a/app/src/main/java/com/ic/work/event/AkBloodCheckResultEvent.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ic.work.event; - -public class AkBloodCheckResultEvent { - public int high; - public int low; - public int heart; - public int oxygen; - - public AkBloodCheckResultEvent(int high, int low, int heart, int oxygen) { - this.high = high; - this.low = low; - this.heart = heart; - this.oxygen = oxygen; - } -} diff --git a/app/src/main/java/com/ic/work/hardware/A9BloodRunnable.java b/app/src/main/java/com/ic/work/hardware/A9BloodRunnable.java deleted file mode 100644 index b2a45d7..0000000 --- a/app/src/main/java/com/ic/work/hardware/A9BloodRunnable.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.ic.work.hardware; - -import android.content.Context; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; - -import com.ic.work.event.AkBloodCheckResultEvent; -import com.ic.work.event.BloodCheckTipsEvent; -import com.ic.work.event.BloodSensorEvent; -import com.ic.work.event.TaskFinishedEvent; -import com.ic.work.utils.HardwareUtils; -import com.ic.work.utils.IcLog; - -import org.greenrobot.eventbus.EventBus; - -import java.util.Random; - -import static android.content.Context.SENSOR_SERVICE; -import static com.ic.aidl.blood.BloodState.BLOOD_ING_CHECK; -import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DATA_CHECK; -import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DEVICE; -import static com.ic.aidl.blood.BloodState.BLOOD_NOT_WEAR; -import static com.ic.aidl.blood.BloodState.BLOOD_NULL_TIPS; -import static com.ic.aidl.blood.BloodState.BLOOD_PLEASE_QUIET; -import static com.ic.aidl.blood.BloodState.BLOOD_START_CHECK; -import static com.ic.aidl.blood.BloodState.BLOOD_STOP_CHECK; - -public class A9BloodRunnable implements Runnable { - - private static final String TAG = "BloodRunnable"; - - @Override - public void run() { - - - boolean[] deviceState = HardwareUtils.isPPGavailableIc66(); - - if (!deviceState[0]) { - sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE); - //add by TrillGates notify task finished. - EventBus.getDefault().post(new TaskFinishedEvent()); - return; - } - - if (deviceState[1]) { - sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK); - EventBus.getDefault().post(new BloodSensorEvent(1)); - } else { - checkBloodOther(); - } - - //add by TrillGates notify task finished. - EventBus.getDefault().post(new TaskFinishedEvent()); - } - - private void sendTipsEventBus(int top, int bottom) { - EventBus.getDefault().post(new BloodCheckTipsEvent(top, bottom)); - } - - - private void checkBloodOther() { - int ndkHeart = 0; - int ndkHigh = 0; - int ndkLow = 0; - int oxygen = 0; - - boolean isWeared = false; - - int checkCount = 0; - boolean isSendCheckTips = false; - - //开启 - HardwareUtils.onNdkEnablePPG(); - - sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK); - - try { - while (!Thread.currentThread().isInterrupted()) { - - if (checkCount >= 25) { - break; - } - - ndkHeart = HardwareUtils.getNdkPPGValue(); - isWeared = HardwareUtils.isWeared(); - - IcLog.i(TAG, "Get Heart Value:" + isWeared + ",ndkHeart:" + ndkHeart); - - if (!isWeared) { - break; - } - - if (ndkHeart > 0) { - ndkHigh = HardwareUtils.getNdkHighBloodValue(); - ndkLow = HardwareUtils.getNdkLowBloodValue(); - oxygen = HardwareUtils.getNdkOxygenValue(); - if (oxygen<=0) oxygen=randomOxygenValue(); - break; - } - - if (!isSendCheckTips) { - //正在测量中,请稍等 - sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK); - isSendCheckTips = true; - } - - checkCount++; - - Thread.sleep(1000); - } - - if (!isWeared) { - sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_WEAR); - } else if (ndkHeart == 0) { - sendTipsEventBus(BLOOD_STOP_CHECK, BLOOD_NOT_DATA_CHECK); - } else { - EventBus.getDefault().post(new AkBloodCheckResultEvent(ndkHigh, ndkLow, ndkHeart, oxygen)); - } - - HardwareUtils.onNdkDisablePPG(); - - } catch (InterruptedException e) { - IcLog.e(TAG, "Stop Get Heart Value", e); - } catch (Exception ee) { - } finally { - HardwareUtils.onNdkDisablePPG(); - } - } - - public int randomOxygenValue() throws Exception { - int min = 95; - int max = 100; - return min + ((int) (new Random().nextFloat() * (max - min))); - } - -} diff --git a/app/src/main/java/com/ic/work/hardware/AkBloodRunnable.java b/app/src/main/java/com/ic/work/hardware/AkBloodRunnable.java deleted file mode 100644 index dd74844..0000000 --- a/app/src/main/java/com/ic/work/hardware/AkBloodRunnable.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.ic.work.hardware; - -import com.ic.work.event.AkBloodCheckResultEvent; -import com.ic.work.event.BloodCheckResultEvent; -import com.ic.work.event.BloodCheckTempEvent; -import com.ic.work.event.BloodCheckTipsEvent; -import com.ic.work.event.TaskFinishedEvent; -import com.ic.work.utils.HardwareUtils; -import com.ic.work.utils.IcLog; - -import org.greenrobot.eventbus.EventBus; - -import java.util.Random; - -import static com.ic.aidl.blood.BloodState.BLOOD_ING_CHECK; -import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DATA_CHECK; -import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DEVICE; -import static com.ic.aidl.blood.BloodState.BLOOD_NOT_WEAR; -import static com.ic.aidl.blood.BloodState.BLOOD_NULL_TIPS; -import static com.ic.aidl.blood.BloodState.BLOOD_PLEASE_QUIET; -import static com.ic.aidl.blood.BloodState.BLOOD_START_CHECK; -import static com.ic.aidl.blood.BloodState.BLOOD_STOP_CHECK; - -public class AkBloodRunnable implements Runnable { - - private static final String TAG = "BloodRunnable"; - - @Override - public void run() { - int ndkHeart = 0; - int ndkHigh = 0; - int ndkLow = 0; - int count = 0; - boolean isSendCheckTips = false; - - if (HardwareUtils.isPPGavailable()) { - sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE); - return; - } - - //开启 - HardwareUtils.onNdkEnablePPG(); - - sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK); - - try { - while (!Thread.currentThread().isInterrupted()) { - ndkHeart = HardwareUtils.getNdkPPGValue(); - if (HardwareUtils.isWeared()) { - //未佩戴 - if (count > 15) break; - count++; - } else { - if (ndkHeart > 0) { - //佩戴好,并且已经或到心率的值,则获取低压和高压的值 - ndkHigh = HardwareUtils.getNdkHighBloodValue(); - ndkLow = HardwareUtils.getNdkLowBloodValue(); - //跳出循环,不在获取 - break; - } else { - if (!isSendCheckTips) { - //正在测量中,请稍等 - //sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK); - isSendCheckTips = true; - } - } - } - Thread.sleep(1000); - } - //add by TrillGates notify task finished. - EventBus.getDefault().post(new TaskFinishedEvent()); - if (count >= 10) { - sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_WEAR); - } else if (ndkHeart == 0) { - sendTipsEventBus(BLOOD_STOP_CHECK, BLOOD_NOT_DATA_CHECK); - } else { - EventBus.getDefault().post(new AkBloodCheckResultEvent(ndkHigh, ndkLow, ndkHeart, randomOxygenValue())); - } - - HardwareUtils.onNdkDisablePPG(); - - } catch (InterruptedException e) { - IcLog.e(TAG, "Stop Get Heart Value", e); - } catch (Exception ee) { - } finally { - HardwareUtils.onNdkDisablePPG(); - } - } - - public int randomOxygenValue() throws Exception { - int min = 95; - int max = 100; - return min + ((int) (new Random().nextFloat() * (max - min))); - } - - - private void sendTipsEventBus(int top, int bottom) { - EventBus.getDefault().post(new BloodCheckTipsEvent(top, bottom)); - } -} 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 65ced8d..8a1727e 100644 --- a/app/src/main/java/com/ic/work/hardware/BloodInfoHelper.java +++ b/app/src/main/java/com/ic/work/hardware/BloodInfoHelper.java @@ -4,12 +4,9 @@ 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; @@ -24,15 +21,17 @@ public class BloodInfoHelper implements SensorEventListener { private HeartRateInfoChangeListener mListener = null; - private final Handler ppgLooper; private long checkBloodStartTime; private SensorManager mSensorManager; + private Sensor mHeartRate; + public static int SYSTEM_TEST = SensorManager.SENSOR_DELAY_UI; // 66 + public static int SYSTEM_TEST_CTR = SensorManager.SENSOR_DELAY_GAME; //20 + public static int PPG_TEST = SensorManager.SENSOR_DELAY_NORMAL; //200 + public static int SPO2_TEST = SensorManager.SENSOR_DELAY_FASTEST ; //1 private BloodInfoHelper() { - //这个Looper专门用来查询数据的 - HandlerThread handlerThread = new HandlerThread("ic:heart-rate-looper"); - handlerThread.start(); - ppgLooper = new Handler(handlerThread.getLooper()); + mSensorManager = (SensorManager) WorkServiceApp.sContext.getSystemService(SENSOR_SERVICE); + mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); } private static BloodInfoHelper sInstance = null; @@ -53,134 +52,42 @@ public class BloodInfoHelper implements SensorEventListener { public void getBloodInfo() { ICLogger.d("getBloodInfo..."); - boolean[] deviceState = HardwareUtils.isPPGavailableGH301(); - - if (!deviceState[0]) { - IcLog.d(TAG, "deviceState[0] == > false"); - //TODO:这个后面再处理,得给我机器再去处理,没有文档,没有数据 - //sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE); - if (mListener != null) { - mListener.onHeartRateResult(0, 0, 0, 0); - mListener.onHeartRateTestFinished(); - } - return; - } - - 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); + boolean ret = mSensorManager.registerListener(this, mHeartRate, PPG_TEST); + Log.d(TAG, "ret == > " + ret); + if(ret) { //TODO:这个是走官方API的,也得有机器再进行修改代码 //sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK); // EventBus.getDefault().post(new BloodSensorEvent(1)); + //这部分代码要做超时处理{ + getPPGStartTime = System.currentTimeMillis(); + checkBloodStartTime = System.currentTimeMillis(); + IcLog.d(TAG, "start time == > " + checkBloodStartTime); + ndkHeart = 0; + ndkHigh = 0; + ndkLow = 0; + oxygen = 0; + checkCount = 0; + noWearCount = 0; + invalidateTime = 0; } else { //这个走JNI获取数据的,完成了 - checkBloodOther(); + ICLogger.e("No Blood sensor "); } } + private int ndkHeart = 0; private int ndkHigh = 0; private int ndkLow = 0; private int oxygen = 0; private int checkCount = 0; private int noWearCount = 0; - private boolean isWear; private int invalidateTime = 0; + private long getPPGStartTime = 0; - private void checkBloodOther() { - checkBloodStartTime = System.currentTimeMillis(); - IcLog.d(TAG, "start time == > " + checkBloodStartTime); - ndkHeart = 0; - ndkHigh = 0; - ndkLow = 0; - oxygen = 0; - checkCount = 0; - noWearCount = 0; - invalidateTime = 0; - //开启 - HardwareUtils.onNdkEnablePPG(); - //推迟1秒去测试数据 - //测试数据是一个循环,有三种情况 - //- 没有穿戴,如果超过20秒没有穿戴,那么就结束此次测试 - //- 数据测试结果为0,如果连续20个数据为0,那么就结束此次测试 - //- 有数据以后,连续测上10次,就可以返回结果了 - ppgLooper.postDelayed(this::checkWear, 1000); - } - private void checkWear() { - IcLog.d(TAG, "checkWear..."); - //测试数据是一个循环,有三种情况 - //- 没有穿戴,如果超过20秒没有穿戴,那么就结束此次测试 - //- 20秒内有穿戴,则开始测试 - ppgLooper.post(new Runnable() { - @Override - public void run() { - ndkHeart = HardwareUtils.getNdkPPGValue(); - isWear = HardwareUtils.isWeared(); - IcLog.d(TAG, "isWear == > " + isWear); - if (!isWear) { - //延时1秒进行检查 - noWearCount++; - IcLog.d(TAG, "noWearCount == > " + noWearCount); - if (noWearCount <= 20) { - ppgLooper.postDelayed(this, 1000); - } else { - handleResult(); - } - } else { - noWearCount = 0; - //开始去检测了 - doTest(); - } - } - }); - } - - //- 数据测试结果为0,如果连续20个数据为0,那么就结束此次测试 - //- 有数据以后,连续测上10次,就可以返回结果了 - private void doTest() { - ppgLooper.post(new Runnable() { - @Override - public void run() { - //这部分代码要做超时处理{ - long getPPGStartTime = System.currentTimeMillis(); - ndkHeart = HardwareUtils.getNdkPPGValue(); - if (ndkHeart > 0) { - ndkHigh = HardwareUtils.getNdkHighBloodValue(); - ndkLow = HardwareUtils.getNdkLowBloodValue(); - oxygen = HardwareUtils.getNdkOxygenValue(); - if (oxygen <= 0) oxygen = randomOxygenValue(); - if (mListener != null) { - IcLog.d(TAG, "ndkHigh == > " + ndkHigh + "ndkLow == > " + ndkLow + "oxygen == > " + oxygen); - mListener.onHeartRateUpdate(ndkHigh, ndkLow, ndkHeart, oxygen); - } - checkCount++; - IcLog.d(TAG, "checkCount == > " + checkCount); - if (checkCount <= 10) { - //继续测试 - ppgLooper.postDelayed(this, 1000); - } else { - handleResult(); - } - IcLog.d(TAG, "use time == > " + (System.currentTimeMillis() - getPPGStartTime)); - } else { - //如果为0的话,记录下来 - invalidateTime++; - IcLog.d(TAG, "invalidateTime == > " + invalidateTime); - if (invalidateTime <= 30) { - ppgLooper.postDelayed(this, 1000); - } else { - handleResult(); - } - } - } - }); - } private void handleResult() { if (mListener != null) { @@ -191,7 +98,7 @@ public class BloodInfoHelper implements SensorEventListener { } try { IcLog.d(TAG, "disable ppg.."); - HardwareUtils.onNdkDisablePPG(); + mSensorManager.unregisterListener(this); } catch (Exception e) { IcLog.e(TAG, "Stop Get Heart Value", e); } @@ -227,6 +134,47 @@ public class BloodInfoHelper implements SensorEventListener { } else { Log.d(TAG, "on sensor change == > PPG= " + values[0]); } + ndkHeart = (int) values[0]; + isWear = (int)values[4] > 1; + IcLog.d(TAG, "isWear == > " + isWear); + if (!isWear) { + //延时1秒进行检查 + noWearCount++; + IcLog.d(TAG, "noWearCount == > " + noWearCount); + if (noWearCount > 20) { + handleResult(); + } + } else { + noWearCount = 0; + //开始去检测了 + } + + 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); + } + checkCount++; + IcLog.d(TAG, "checkCount == > " + checkCount); + if (checkCount <= 10) { + //继续测试 + } else { + handleResult(); + } + IcLog.d(TAG, "use time == > " + (System.currentTimeMillis() - getPPGStartTime)); + } else { + //如果为0的话,记录下来 + invalidateTime++; + IcLog.d(TAG, "invalidateTime == > " + invalidateTime); + if (invalidateTime <= 30) { + } else { + handleResult(); + } + } } @Override diff --git a/app/src/main/java/com/ic/work/hardware/BloodRunnable.java b/app/src/main/java/com/ic/work/hardware/BloodRunnable.java deleted file mode 100644 index 19cda8d..0000000 --- a/app/src/main/java/com/ic/work/hardware/BloodRunnable.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.ic.work.hardware; - -import com.ic.work.event.BloodCheckResultEvent; -import com.ic.work.event.BloodCheckTempEvent; -import com.ic.work.event.BloodCheckTipsEvent; -import com.ic.work.event.BloodSensorEvent; -import com.ic.work.event.TaskFinishedEvent; -import com.ic.work.utils.HardwareUtils; -import com.ic.work.utils.IcLog; - -import org.greenrobot.eventbus.EventBus; - -import java.util.Random; - -import static com.ic.aidl.blood.BloodState.BLOOD_ING_CHECK; -import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DATA_CHECK; -import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DEVICE; -import static com.ic.aidl.blood.BloodState.BLOOD_NOT_WEAR; -import static com.ic.aidl.blood.BloodState.BLOOD_NULL_TIPS; -import static com.ic.aidl.blood.BloodState.BLOOD_PLEASE_QUIET; -import static com.ic.aidl.blood.BloodState.BLOOD_START_CHECK; -import static com.ic.aidl.blood.BloodState.BLOOD_STOP_CHECK; - -public class BloodRunnable implements Runnable { - - private static final String TAG = "BloodRunnable"; - - @Override - public void run() { - - boolean[] deviceState = HardwareUtils.isPPGavailableIc66(); - - if (!deviceState[0]) { - sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE); - //add by TrillGates notify task finished. - EventBus.getDefault().post(new TaskFinishedEvent()); - return; - } - - if (deviceState[1]) { - sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK); - EventBus.getDefault().post(new BloodSensorEvent(1)); - } else { - checkBloodOther(); - } - //add by TrillGates notify task finished. - EventBus.getDefault().post(new TaskFinishedEvent()); - } - - private void sendTipsEventBus(int top, int bottom) { - EventBus.getDefault().post(new BloodCheckTipsEvent(top, bottom)); - } - - - private void checkBloodOther() { - int ndkHeart = 0; - int ndkHigh = 0; - int ndkLow = 0; - int oxygen = 0; - - boolean isWeared = false; - - int checkCount = 0; - int noWearCount = 0; - boolean isSendCheckTips = false; - - //开启 - HardwareUtils.onNdkEnablePPG(); - - sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK); - - try { - while (!Thread.currentThread().isInterrupted()) { - ndkHeart = HardwareUtils.getNdkPPGValue(); - isWeared = HardwareUtils.isWeared(); - - IcLog.i(TAG, "Get Heart Value:" + isWeared + ",ndkHeart:" + ndkHeart); - - if (!isWeared) { - //超过10连续未佩戴则认为没有佩戴 - if (noWearCount > 10) break; - noWearCount++; - } else { - //已佩戴则noWearCount 清零重新计数 - noWearCount = 0; - if (ndkHeart > 0) { - ndkHigh = HardwareUtils.getNdkHighBloodValue(); - ndkLow = HardwareUtils.getNdkLowBloodValue(); - oxygen = HardwareUtils.getNdkOxygenValue(); - if (oxygen <= 0) oxygen = randomOxygenValue(); - EventBus.getDefault().post(new BloodCheckTempEvent(ndkHigh, ndkLow, ndkHeart, oxygen)); - - //测试到数据30秒后停止测量 - if (checkCount >= 30) { - break; - } - checkCount++; - } - - if (!isSendCheckTips) { - //正在测量中,请稍等 - sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK); - isSendCheckTips = true; - } - } - - - Thread.sleep(1000); - } - - if (noWearCount >= 5) { - sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_WEAR); - } else if (ndkHeart == 0) { - sendTipsEventBus(BLOOD_STOP_CHECK, BLOOD_NOT_DATA_CHECK); - } else { - EventBus.getDefault().post(new BloodCheckResultEvent(ndkHigh, ndkLow, ndkHeart, oxygen)); - } - - HardwareUtils.onNdkDisablePPG(); - - } catch (InterruptedException e) { - IcLog.e(TAG, "Stop Get Heart Value", e); - } catch (Exception e) { - e.printStackTrace(); - } finally { - IcLog.d(TAG, "disable ppg.."); - HardwareUtils.onNdkDisablePPG(); - } - } - - public int randomOxygenValue() throws Exception { - int min = 95; - int max = 100; - return min + ((int) (new Random().nextFloat() * (max - min))); - } - -} diff --git a/app/src/main/java/com/ic/work/hardware/BloodSensorManager.java b/app/src/main/java/com/ic/work/hardware/BloodSensorManager.java deleted file mode 100644 index 2cd508c..0000000 --- a/app/src/main/java/com/ic/work/hardware/BloodSensorManager.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.ic.work.hardware; - -import android.content.Context; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; - -import com.ic.work.event.AkBloodCheckResultEvent; -import com.ic.work.event.BloodCheckTipsEvent; -import com.ic.work.event.BloodSensorEvent; -import com.ic.work.utils.IcLog; - -import org.greenrobot.eventbus.EventBus; - -import static android.content.Context.SENSOR_SERVICE; -import static com.ic.aidl.blood.BloodState.BLOOD_ING_CHECK; -import static com.ic.aidl.blood.BloodState.BLOOD_NOT_WEAR; -import static com.ic.aidl.blood.BloodState.BLOOD_NULL_TIPS; -import static com.ic.aidl.blood.BloodState.BLOOD_PLEASE_QUIET; - -public class BloodSensorManager { - - private static final String TAG ="BloodSensorManager"; - - private SensorManager sensorManager; - - public void createSensorManager(Context context){ - if(sensorManager == null){ - sensorManager = (SensorManager) context.getSystemService(SENSOR_SERVICE); - } - Sensor mHeartRate = sensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); - sensorManager.registerListener(sensorEventListener, mHeartRate, SensorManager.SENSOR_DELAY_UI); - - EventBus.getDefault().post(new BloodCheckTipsEvent(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK)); - } - - public void unregisterSensorListener(){ - sensorManager.unregisterListener(sensorEventListener); - } - - private final SensorEventListener sensorEventListener = new SensorEventListener() { - - @Override - public void onSensorChanged(SensorEvent sensorEvent) { - float values[] = sensorEvent.values; - /*[0]---心率;[1]---血压高压;[2]---血压低压;[3]---血氧;[4]---佩戴检测(1--脱手,2--上手);*/ - IcLog.i(TAG, "Weared= " + values[4] + - " ,BPH= " + values[1] + - " ,BPL= " + values[2] + - " ,PPG= " + values[0] + - ", spo2= " + values[3]); - - if (values[4] == 2 && values[0] > 0) { - //结果检测出来后停止检测 - EventBus.getDefault().post(new AkBloodCheckResultEvent( - (int) values[1], - (int) values[2], - (int) values[0], - (int) values[3])); - - EventBus.getDefault().post(new BloodSensorEvent(2)); - }else if(values[4] == 1){ - sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_WEAR); - EventBus.getDefault().post(new BloodSensorEvent(2)); - } - } - - @Override - public void onAccuracyChanged(Sensor sensor, int i) { - } - }; - - private void sendTipsEventBus(int top, int bottom) { - EventBus.getDefault().post(new BloodCheckTipsEvent(top, bottom)); - } -} diff --git a/app/src/main/java/com/ic/work/hardware/PedRunnable.java b/app/src/main/java/com/ic/work/hardware/PedRunnable.java index a745f30..4b82ae9 100644 --- a/app/src/main/java/com/ic/work/hardware/PedRunnable.java +++ b/app/src/main/java/com/ic/work/hardware/PedRunnable.java @@ -1,11 +1,12 @@ package com.ic.work.hardware; import android.content.Context; +import android.hardware.SensorManager; +import com.ic.jni.ICJniUtils; import com.ic.work.db.PedInjection; import com.ic.work.event.PedCountEvent; import com.ic.work.event.TaskFinishedEvent; -import com.ic.work.utils.HardwareUtils; import com.ic.work.utils.IcLog; import org.greenrobot.eventbus.EventBus; @@ -14,13 +15,16 @@ public class PedRunnable extends PedBaseRunnable implements Runnable { private static final String TAG = "PedRunnable"; + public static int CLEAR_STEPCOUNT = SensorManager.SENSOR_DELAY_UI;// 66 + public static int STEPCOUNT = SensorManager.SENSOR_DELAY_NORMAL;//200 + public PedRunnable(Context context, PedInjection pedDB) { super(context, pedDB); } @Override public void run() { - int ped = HardwareUtils.getNdkStepCountValue(); + int ped = ICJniUtils.getStepCount(); IcLog.i(TAG, "Get Ped Count" + ped); //发送给主线程。主线更新数据UI EventBus.getDefault().post(new PedCountEvent(ped)); diff --git a/app/src/main/java/com/ic/work/hardware/TemperatureHelper.java b/app/src/main/java/com/ic/work/hardware/TemperatureHelper.java index 6ebd714..3678d17 100644 --- a/app/src/main/java/com/ic/work/hardware/TemperatureHelper.java +++ b/app/src/main/java/com/ic/work/hardware/TemperatureHelper.java @@ -1,18 +1,22 @@ package com.ic.work.hardware; -import android.os.SystemClock; +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; +import android.util.Log; -import com.ic.jni.ICJniUtils; -import com.ic.work.domain.TemperatureItem; -import com.ic.work.utils.HardwareUtils; +import com.ic.work.WorkServiceApp; import com.ic.work.utils.ICLogger; import com.ic.work.utils.IcLog; import com.ic.work.utils.TemperatureUtil; +import static android.content.Context.SENSOR_SERVICE; + /** * 获取温度的工具类 */ -public class TemperatureHelper { +public class TemperatureHelper implements SensorEventListener { private static final String TAG = "TemperatureHelper"; private TemperatureChangeListener mListener = null; @@ -38,89 +42,92 @@ public class TemperatureHelper { private double lastTempOut = 0.0; private double lastBodyTemp = 0.0; private double lastWristTemp = 0.0; - private int delayTimesInSeconds = 20; - + private final int DefaultDelayTimesInSeconds = 5; + private int delayTimesInSeconds = DefaultDelayTimesInSeconds; + private SensorManager mSensorManager ; + private Sensor mSensorTemp; + private long getTempStartTime=0; public void getTemperature() { - long start = System.currentTimeMillis(); + + getTempStartTime = System.currentTimeMillis(); lastTempOut = 0.0; lastBodyTemp = 0.0; lastWristTemp = 0.0; - delayTimesInSeconds = 20; - 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(); - if (HardwareUtils.enableTemperature()) { - IcLog.i(TAG, "getNdkTemperatureValue enableTemperature"); - SystemClock.sleep(1000); - } - do { - IcLog.d(TAG, "do temperature...."); - SystemClock.sleep(1000); - long getStartTime = System.currentTimeMillis(); - 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()); - } - } 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); + delayTimesInSeconds = DefaultDelayTimesInSeconds; + IcLog.i(TAG, "getTemperature ..." ); + mSensorManager = (SensorManager) WorkServiceApp.sContext.getSystemService(SENSOR_SERVICE); + mSensorTemp = mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE); + boolean ret = mSensorManager.registerListener(this, mSensorTemp, SensorManager.SENSOR_DELAY_NORMAL); + Log.d(TAG, "ret == > " + ret); + + } + + public void setTemperatureChangeListener(TemperatureChangeListener listener) { + this.mListener = listener; + } + + @Override + public void onSensorChanged(SensorEvent sensorEvent) { + float values[] = sensorEvent.values; + int length = values.length; + if(sensorEvent.sensor.getType() == Sensor.TYPE_TEMPERATURE) { + IcLog.d(TAG, "type is == >" + sensorEvent.sensor.getName()); + lastWristTemp = values[0] / 100.0f; + lastTempOut = values[1] / 100.0f; + Log.d(TAG, "on sensor change == > lastWristTemp= " + lastWristTemp + " lastTempOut=" + lastTempOut); + +/* + + TemperatureItem temperatureItem = null; + temperatureItem = TemperatureUtil.doTempTest(); + if (temperatureItem != null) { + lastWristTemp = Double.parseDouble(temperatureItem.getBodyTemp()); + lastTempOut = Double.parseDouble(temperatureItem.getEvnTemp()); } - ICLogger.d("get temperature data use time == > " + (System.currentTimeMillis() - getStartTime)); - - delayTimesInSeconds--; - IcLog.d(TAG, "delayTimesInSeconds " + delayTimesInSeconds); - //延时delay_times_in_seconds秒后停止检测。 - } while (delayTimesInSeconds > 0); - } catch (Exception e) { - IcLog.e(TAG, "TemperatureRunnable :", e); - } finally { - HardwareUtils.disableTemperature(); - IcLog.i(TAG, "disableTemperature !"); - //如果不关掉其他的计步的服务,读取数据会不准。 - HardwareUtils.enablePedometer(); + + */ + + 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() - getTempStartTime)); + + delayTimesInSeconds--; + IcLog.d(TAG, "delayTimesInSeconds " + delayTimesInSeconds); + if (delayTimesInSeconds <= 0) { + if (mListener != null) { + ICLogger.d("result == >lastWristTemp " + lastWristTemp + " lastBodyTemp" + lastBodyTemp + " lastTempOut" + lastTempOut); + mSensorManager.unregisterListener(this); + mListener.onTemperatureResult(lastWristTemp, lastBodyTemp, lastTempOut); + } + } } - if (mListener != null) { - ICLogger.d("result == >lastWristTemp " + lastWristTemp + " lastBodyTemp" + lastBodyTemp + " lastTempOut" + lastTempOut); - mListener.onTemperatureResult(lastWristTemp, lastBodyTemp, lastTempOut); - } - IcLog.d(TAG, "temp use time == > " + (System.currentTimeMillis() - start)); } - public void setTemperatureChangeListener(TemperatureChangeListener listener) { - this.mListener = listener; + @Override + public void onAccuracyChanged(Sensor sensor, int i) { + } public interface TemperatureChangeListener { void onTemperatureUpdate(double wristTemp, double bodyTemp, double envTemp); void onTemperatureResult(double wristTemp, double bodyTemp, double envTemp); + } } diff --git a/app/src/main/java/com/ic/work/hardware/TemperatureRunnable.java b/app/src/main/java/com/ic/work/hardware/TemperatureRunnable.java deleted file mode 100644 index 5de5623..0000000 --- a/app/src/main/java/com/ic/work/hardware/TemperatureRunnable.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.ic.work.hardware; - - -import com.ic.work.domain.TemperatureItem; -import com.ic.work.event.TaskFinishedEvent; -import com.ic.work.event.TemperatureResultCompleteEvent; -import com.ic.work.event.TemperatureResultEvent; -import com.ic.work.utils.HardwareUtils; -import com.ic.work.utils.IcLog; -import com.ic.work.utils.TemperatureUtil; - -import org.greenrobot.eventbus.EventBus; - -public class TemperatureRunnable implements Runnable { - private static final String TAG = "TemperatureRunnable"; - - @Override - public void run() { - - } -} diff --git a/app/src/main/java/com/ic/work/process/AkProcess.java b/app/src/main/java/com/ic/work/process/AkProcess.java deleted file mode 100644 index 44791cb..0000000 --- a/app/src/main/java/com/ic/work/process/AkProcess.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.ic.work.process; - -import android.os.IBinder; -import android.os.RemoteCallbackList; -import android.os.RemoteException; - -import com.ic.aidl.ak.IAkAidlInterface; -import com.ic.aidl.ak.IAkRemoteService; -import com.ic.work.event.ThreadPoolEvent; -import com.ic.work.utils.IcLog; -import com.ic.work.utils.IcSystemProperty; - -import org.greenrobot.eventbus.EventBus; - -import static com.ic.work.utils.ICWorkConstants.EventType.STOP_ALL_TASK; -import static com.ic.work.utils.ICWorkConstants.EventType.TEST_A9_BLOOD; -import static com.ic.work.utils.ICWorkConstants.EventType.TEST_AK_BLOOD; -import static com.ic.work.utils.ICWorkConstants.EventType.TEST_TEMPERATURE; - - -public class AkProcess { - private static final String TAG = "BloodProcess"; - - private RemoteCallbackList mCallbacks = new RemoteCallbackList<>(); - - public IBinder getAkBinder() { - return akBinder; - } - - private IAkRemoteService.Stub akBinder = new IAkRemoteService.Stub() { - @Override - public void registerCallback(IAkAidlInterface cb) throws RemoteException { - if (cb != null) { - mCallbacks.register(cb); - } - } - - @Override - public void unregisterCallback(IAkAidlInterface cb) throws RemoteException { - if (cb != null) { - mCallbacks.unregister(cb); - } - } - - @Override - public void startCheckBlood() throws RemoteException { - - String CUSTOM_NAME = IcSystemProperty.getSystemProperties("persist.sys.customname", ""); - - if (CUSTOM_NAME.equals("AK")) { - //ak - EventBus.getDefault().post(new ThreadPoolEvent(TEST_AK_BLOOD)); - } else { - //a9 - EventBus.getDefault().post(new ThreadPoolEvent(TEST_A9_BLOOD)); - } - } - - @Override - public void stopCheckBlood() throws RemoteException { - EventBus.getDefault().post(new ThreadPoolEvent(STOP_ALL_TASK)); - } - - @Override - public void queryPedCount() throws RemoteException { - EventBus.getDefault().post(new ThreadPoolEvent(1)); - } - - @Override - public void onStartQueryTemp() throws RemoteException { - EventBus.getDefault().post(new ThreadPoolEvent(TEST_TEMPERATURE)); - } - - @Override - public void onStopQueryTemp() throws RemoteException { - EventBus.getDefault().post(new ThreadPoolEvent(STOP_ALL_TASK)); - } - }; - - public void sendBloodCheckResult(int heih, int low, int heart, int oxygen) { - int N = 0; - try { - N = mCallbacks.beginBroadcast(); - for (int i = 0; i < N; i++) { - mCallbacks.getBroadcastItem(i).updateBloodCheckResult(heih, low, heart, oxygen); - } - } catch (NullPointerException e) { - IcLog.e(TAG, "", e); - } catch (RemoteException er) { - IcLog.e(TAG, "", er); - } finally { - try { - if (N > 0) { - mCallbacks.finishBroadcast(); - } - } catch (IllegalArgumentException ll) { - IcLog.e(TAG, "", ll); - } - } - } - - public void sendBloodCheckTips(int top, int bottom) { - int N = 0; - try { - N = mCallbacks.beginBroadcast(); - for (int i = 0; i < N; i++) { - mCallbacks.getBroadcastItem(i).updateBloodCheckTips(top, bottom); - } - } catch (NullPointerException e) { - IcLog.e(TAG, "", e); - } catch (RemoteException er) { - IcLog.e(TAG, "", er); - } finally { - try { - if (N > 0) { - mCallbacks.finishBroadcast(); - } - } catch (IllegalArgumentException ll) { - IcLog.e(TAG, "", ll); - } - } - } - - public void sendPedCount(int count) { - int N = 0; - try { - N = mCallbacks.beginBroadcast(); - for (int i = 0; i < N; i++) { - mCallbacks.getBroadcastItem(i).updatePedCount(count); - } - } catch (NullPointerException e) { - IcLog.e(TAG, "", e); - } catch (RemoteException er) { - IcLog.e(TAG, "", er); - } finally { - try { - if (N > 0) { - mCallbacks.finishBroadcast(); - } - } catch (IllegalArgumentException ll) { - IcLog.e(TAG, "", ll); - } - } - } - - public void sendCurrTempValue(double value, double animal) { - int N = 0; - try { - N = mCallbacks.beginBroadcast(); - for (int i = 0; i < N; i++) { - mCallbacks.getBroadcastItem(i).updateCurrTempValue(value, animal); - } - } catch (NullPointerException e) { - IcLog.e(TAG, "", e); - } catch (RemoteException er) { - IcLog.e(TAG, "", er); - } finally { - try { - if (N > 0) { - mCallbacks.finishBroadcast(); - } - } catch (IllegalArgumentException ll) { - IcLog.e(TAG, "", ll); - } - } - } - - public void sendResultTempValue(double value, double animal) { - int N = 0; - try { - N = mCallbacks.beginBroadcast(); - for (int i = 0; i < N; i++) { - mCallbacks.getBroadcastItem(i).updateResultTempValue(value, animal); - } - } catch (NullPointerException e) { - IcLog.e(TAG, "", e); - } catch (RemoteException er) { - IcLog.e(TAG, "", er); - } finally { - try { - if (N > 0) { - mCallbacks.finishBroadcast(); - } - } catch (IllegalArgumentException ll) { - IcLog.e(TAG, "", ll); - } - } - } - -} diff --git a/app/src/main/java/com/ic/work/utils/HardwareUtils.java b/app/src/main/java/com/ic/work/utils/HardwareUtils.java deleted file mode 100644 index cf5dbae..0000000 --- a/app/src/main/java/com/ic/work/utils/HardwareUtils.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.ic.work.utils; - -import com.ic.jni.ICJniUtils; - -public class HardwareUtils { - - private static final String TAG = "HardwareUtils"; - - public static boolean[] isPPGavailableIc66() { - 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_IC66.ordinal() - }; - } catch (Exception e) { - IcLog.e(TAG, "", e); - return new boolean[]{false, false}; - } - } - - 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(); - return value == 0; - } catch (Exception e) { - IcLog.e(TAG, "", e); - return true; - } - } - - public static void onNdkEnablePPG() { - try { - ICJniUtils.enablePPG(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - } - } - - public static void onNdkDisablePPG() { - try { - ICJniUtils.disablePPG(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - } - } - - public static boolean isWeared() { - try { - int value = ICJniUtils.isWeared(); - return value == 1; - } catch (Exception e) { - IcLog.e(TAG, "", e); - return true; - } - } - - public static int getNdkPPGValue() { - try { - return ICJniUtils.getPPG(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static int getNdkHighBloodValue() { - try { - return ICJniUtils.getHighBloodPressure(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static int getNdkLowBloodValue() { - try { - return ICJniUtils.getLowBloodPressure(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static int getNdkOxygenValue() { - try { - return ICJniUtils.getSPO2(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static int getNdkStepCountValue() { - try { - return ICJniUtils.getStepCount(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static int resetNdkStepCountValue() { - try { - return ICJniUtils.resetStepCount(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static int enablePedometer() { - try { - return ICJniUtils.enablePedometer(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static int disablePedometer() { - try { - return ICJniUtils.disablePedometer(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static int isTemperatureDevAvailable() { - try { - return ICJniUtils.isTemperatureDevAvailable(); - } catch (Exception e) { - e.printStackTrace(); - return ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal(); - } - } - - public static double getNdkTemperatureValue() { - try { - return ICJniUtils.getTemperature(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static double getNdkTemperatureOutValue() { - try { - double temperatureOrigin = ICJniUtils.getTemperatureOrigin(); - IcLog.d(TAG, "getNdkTemperatureOutValue... " + temperatureOrigin); - return temperatureOrigin; - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static double getBodyTempFromWristTemp(double wrist_temp, double ref_temp) { - try { - return ICJniUtils.getBodyTempFromWristTemp(wrist_temp, ref_temp); - } catch (Exception e) { - IcLog.e(TAG, "", e); - return 0; - } - } - - public static boolean isTemperatureDevOpened() { - try { - return ICJniUtils.isTemperatureDevOpened() == 0; - } catch (Exception e) { - IcLog.e(TAG, "", e); - return false; - } - } - - public static boolean enableTemperature() { - int ret = 0; - try { - ret = ICJniUtils.enableTemperature(); - IcLog.d(TAG, "enableTemperature ret " + ret); - return ret > 0; - } catch (Exception e) { - IcLog.e(TAG, "", e); - return false; - } - } - - public static void disableTemperature() { - try { - ICJniUtils.disableTemperature(); - } catch (Exception e) { - IcLog.e(TAG, "", e); - } - } - - -} diff --git a/app/src/main/java/com/ic/work/utils/ICWorkConstants.java b/app/src/main/java/com/ic/work/utils/ICWorkConstants.java index 7353836..92c7235 100644 --- a/app/src/main/java/com/ic/work/utils/ICWorkConstants.java +++ b/app/src/main/java/com/ic/work/utils/ICWorkConstants.java @@ -65,10 +65,7 @@ public interface ICWorkConstants { int TEST_TEMPERATURE = 6; //血氧 int TEST_BLOOD = 3; - //A9的心率 - int TEST_A9_BLOOD = 7; - //AK的心率 - int TEST_AK_BLOOD = 8; + //删除所有的任务 int STOP_ALL_TASK = 4; } diff --git a/app/src/main/java/com/ic/work/utils/TemperatureUtil.java b/app/src/main/java/com/ic/work/utils/TemperatureUtil.java index af1cd3f..1abe350 100644 --- a/app/src/main/java/com/ic/work/utils/TemperatureUtil.java +++ b/app/src/main/java/com/ic/work/utils/TemperatureUtil.java @@ -12,13 +12,13 @@ public class TemperatureUtil { private static double tempOut_value = 0.0f; public static double get_tempOut_value_origin() { - tempOut_value = ICJniUtils.getTemperatureOrigin(); + tempOut_value = 0.0;//ICJniUtils.getTemperatureOrigin(); Log.i(TAG, "测量环境温度 原始值 " + tempOut_value); return tempOut_value; } public static double get_temp_value_adjusted() { - temp_value_orig = ICJniUtils.getTemperature(); + temp_value_orig = 0.0;//ICJniUtils.getTemperature(); Log.i(TAG, "测量体温 原始值 " + temp_value_orig); return temp_value_orig; } @@ -50,7 +50,7 @@ public class TemperatureUtil { * 这里获取到CPU温度,主板温度,体温,外温的数据,然后写到log里,后面转成数据表,再转成函数表达式。 */ public static TemperatureItem doTempTest() { - if (ICJniUtils.isTemperatureDevAvailable() > ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal()) { + // if (ICJniUtils.isTemperatureDevAvailable() > ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal()) { double bodyTemp/*体温*/ = 0.0f; double cpuTemp/*cpu温度*/ = 0.0f; @@ -132,7 +132,7 @@ public class TemperatureUtil { } catch (Exception e) { e.printStackTrace(); } - } + //} return null; } } diff --git a/app/version_code.properties b/app/version_code.properties index c34b001..38e8980 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -1,2 +1,2 @@ #Thu Jul 16 16:46:05 CST 2020 -VERSION_CODE=57 +VERSION_CODE=60