-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V59_202110261726_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V59_202110261726_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_202110291644_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V59_202110291644_release.apk","properties":{}}]
\ No newline at end of file
<service
android:name=".WorkService"
android:enabled="true"
- android:exported="true"
- android:process=":remote">
+ android:exported="true">
<intent-filter>
<action android:name="com.ic.action.WORK_SERVICE" />
</intent-filter>
package com.ic.work;
-import androidx.appcompat.app.AppCompatActivity;
-
import android.content.Context;
import android.os.Bundle;
-import android.os.Handler;
import android.widget.Button;
-import com.ic.work.hardware.BeforeDawnRunnable;
+import androidx.appcompat.app.AppCompatActivity;
+
import com.ic.work.utils.IcLog;
import com.ic.work.utils.ServiceUtil;
-import com.ic.work.weather.LocationState;
-import com.ic.work.weather.WeatherHelper;
import org.threeten.bp.Duration;
import org.threeten.bp.OffsetDateTime;
IcLog.i(TAG,"interval: "+interval.toDays());
}
-
}
case HEART_RATE_AND_OXYGEN:
//获取心率内容
if (testTaskEvent.from.equals(TestTaskEvent.From.CLIENT_CMD) && isTest) {
- BloodInfoHelper.MaxtestCount = 300;
+ BloodInfoHelper.MaxTestCount = 300;
} else {
- BloodInfoHelper.MaxtestCount = 10;
+ BloodInfoHelper.MaxTestCount = 10;
}
isOxygenOrHeartRateStop = false;
getHeartInfo();
break;
case JUST_OXYGEN:
if (testTaskEvent.from.equals(TestTaskEvent.From.CLIENT_CMD) && isTest) {
- BloodInfoHelper.MaxtestCount = 300;
+ BloodInfoHelper.MaxTestCount = 300;
} else {
- BloodInfoHelper.MaxtestCount = 10;
+ BloodInfoHelper.MaxTestCount = 10;
}
isOxygenOrHeartRateStop = false;
justGetOxygen();
break;
case JUST_HEART_RATE:
if (testTaskEvent.from.equals(TestTaskEvent.From.CLIENT_CMD) && isTest) {
- BloodInfoHelper.MaxtestCount = 300;
+ BloodInfoHelper.MaxTestCount = 300;
} else {
- BloodInfoHelper.MaxtestCount = 10;
+ BloodInfoHelper.MaxTestCount = 10;
}
isOxygenOrHeartRateStop = false;
justGetHeartRate();
}
public static final String PATH = "settings";
- public static final String AUTHORITY = "com.ic.fzd.settings";
+ public static final String AUTHORITY = "com.ic.protocolSrv";
public static final String SETTINGS = "content://" + AUTHORITY + "/" + PATH;
private void temperatureSave2Db(double wristTemp, double bodyTemp, double envTemp) {
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;
import com.ic.work.process.WeatherProcess;
import com.ic.work.utils.ICLogger;
import com.ic.work.utils.IcLog;
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 {
private static final String MSG_KEY = "txtMsg";
private BloodProcess bloodProcess;
private PedProcess pedProcess;
- private TempProcess tempProcess;
private WeatherProcess weatherProcess;
private AkProcess akProcess;
private LocalDateTime mFinishTime;
- private BloodSensorManager bloodSensorManager;
-
@Override
public IBinder onBind(Intent intent) {
if (intent != null) {
- IcLog.i(TAG, intent.getPackage());
- switch (intent.getPackage()) {
- case ACTION_WEATHER:
- //天气
- return weatherProcess.getWeatherBinder();
+ IcLog.i(TAG, intent.getAction());
+ String target = intent.getStringExtra("target");
+ ICLogger.d("target ==> " + target);
+ if (target == null) {
+ return null;
+ }
+ switch (target) {
case ACTION_HARD_WARE:
//计步
return pedProcess.getPedBinder();
weatherProcess = new WeatherProcess();
bloodProcess = new BloodProcess();
pedProcess = new PedProcess();
- tempProcess = new TempProcess();
akProcess = new AkProcess();
mWeatherHelper = new WeatherHelper(mApp.getWeatherRepository(), this);
EventBus.getDefault().register(this);
//加一个超时处理,如果超过30秒没有数据返回
//那么就会干掉当前的任务,并且取消监听,重置数据
//如果有数据回来,那么就重新设置下一次超时
- ppgLooper.postDelayed(mTask, TIME_OUT_VALUE);
+ ppgLooper.postDelayed(mTimeoutTask, TIME_OUT_VALUE);
}
- public static int MaxtestCount = 10;
+
+ public static int MaxTestCount = 10;
//10秒还没有数据回来,那么就结束测试
public static final int TIME_OUT_VALUE = 10 * 1000;
- private final Runnable mTask = new Runnable() {
+ private final Runnable mTimeoutTask = new Runnable() {
@Override
public void run() {
//超时了
//测试数据是一个循环,有三种情况
//- 没有穿戴,如果超过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 {
- handleNoWearResult();
- }
+ //先删除,再去跑
+ ppgLooper.removeCallbacks(checkWearTask);
+ ppgLooper.post(checkWearTask);
+ }
+
+ private final Runnable checkWearTask = 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.removeCallbacks(this);
+ ppgLooper.postDelayed(this, 1000);
} else {
- noWearCount = 0;
- //开始去检测了
- doTest();
+ handleNoWearResult();
}
+ } else {
+ noWearCount = 0;
+ //开始去检测了
+ doTest();
}
- });
- }
+ }
+ };
private void handleNoWearResult() {
if (mListener != null) {
//- 数据测试结果为0,如果连续20个数据为0,那么就结束此次测试
//- 有数据以后,连续测上10次,就可以返回结果了
private void doTest() {
- ppgLooper.post(new Runnable() {
- @Override
- public void run() {
- //这部分代码要做超时处理{
- long getPPGStartTime = System.currentTimeMillis();
- ndkHeart = HardwareUtils.getNdkPPGValue();
- ndkHigh = HardwareUtils.getNdkHighBloodValue();
- ndkLow = HardwareUtils.getNdkLowBloodValue();
- oxygen = HardwareUtils.getNdkOxygenValue();
- dispatchPPG();
- if (checkCount > MaxtestCount || invalidateTime > 30) {
+ ppgLooper.removeCallbacks(testTask);
+ ppgLooper.post(testTask);
+ }
+
+ private final Runnable testTask = new Runnable() {
+ @Override
+ public void run() {
+ //这部分代码要做超时处理{
+ long getPPGStartTime = System.currentTimeMillis();
+ ndkHeart = HardwareUtils.getNdkPPGValue();
+ ndkHigh = HardwareUtils.getNdkHighBloodValue();
+ ndkLow = HardwareUtils.getNdkLowBloodValue();
+ oxygen = HardwareUtils.getNdkOxygenValue();
+ dispatchPPG();
+ if (checkCount > MaxTestCount || invalidateTime > 30) {
+ handleResultOtherBlood();
+ } else {
+ if (!continueTest) {
handleResultOtherBlood();
} else {
- if (!continueTest) {
- handleResultOtherBlood();
- } else {
- //继续测试
- ppgLooper.postDelayed(this, 1000);
- }
+ //继续测试
+ ppgLooper.removeCallbacks(this);
+ ppgLooper.postDelayed(this, 1000);
}
- IcLog.d(TAG, "use time == > " + (System.currentTimeMillis() - getPPGStartTime));
}
- });
- }
+ IcLog.d(TAG, "use time == > " + (System.currentTimeMillis() - getPPGStartTime));
+ }
+ };
private void handleResultOtherBlood() {
if (mListener != null) {
// isPPGTesting = true;// (ICJniUtils.isPPGStarted() == 1);
dispatchPPG();
/*[0]---心率;[1]---血压高压;[2]---血压低压;[3]---血氧;[4]---佩戴检测(1--脱手,2--上手);*/
- if (checkCount > MaxtestCount || invalidateTime > 30) {
+ if (checkCount > MaxTestCount || invalidateTime > 30) {
//结束了,干掉超时任务
- ppgLooper.removeCallbacks(mTask);
+ ppgLooper.removeCallbacks(mTimeoutTask);
handleResult();
} else {
if (!continueTest) {
- ppgLooper.removeCallbacks(mTask);
+ ppgLooper.removeCallbacks(mTimeoutTask);
handleResult();
} else {
- ppgLooper.removeCallbacks(mTask);
- ppgLooper.postDelayed(mTask, TIME_OUT_VALUE);
+ ppgLooper.removeCallbacks(mTimeoutTask);
+ ppgLooper.postDelayed(mTimeoutTask, TIME_OUT_VALUE);
}
}
} else {
* 服务类型
*/
interface ServiceType {
- String ACTION_WEATHER = "com.ic.weather";
- String ACTION_BLOOD = "com.ic.blood";
- String ACTION_HARD_WARE = "com.ic.sport";
- String ACTION_IC_TEMP = "com.ic.temp";
+ String ACTION_HARD_WARE = "sport";
String ACTION_IC_AK = "com.ic.ak";
}
}
envTemp = get_tempOut_value_origin();
wristTemp = get_temp_value_adjusted();
-
+ ICLogger.d("envTemp ==> " + envTemp);
+ ICLogger.d("wristTemp ==> " + wristTemp);
String property = Utils.getSystemProperties("persist.sys.id_num", null);
double resultEnvTemp = -100;
double resultWristTemp = 0;
}
} else if ("MW13C".equals(property)) {
wristTemp = AlgorithmUtils.getInstance(WorkServiceApp.sContext).MW13C(wristTemp,
- boardTemp, batteryTemp,envTemp);
+ boardTemp, batteryTemp, envTemp);
+ ICLogger.d("wristTemp ==> " + wristTemp);
if (wristTemp == 0) {
return null;
}
+ resultWristTemp = wristTemp;
+ resultEnvTemp = envTemp;
lastBodyTemp = ICJniUtils.getBodyTempFromWristTemp(wristTemp, envTemp);
+ ICLogger.d("lastBodyTemp ==> " + lastBodyTemp);
} else {
// double bodyTempResult = AlgorithmUtils.l004Pt(bodyTemp, evnTemp);
ICLogger.d("wrist TempResult == > " + wristTemp);
"0.00",
String.format("%.01f", boardTemp),
"0.00");
+ ICLogger.d("temperatureItem ==> " + temperatureItem);
return temperatureItem;
} catch (Exception e) {
e.printStackTrace();