switch (testTaskEvent.sensorType) {
case HEART_RATE:
//获取心率内容
- getHeartInfo();
+ getHeartInfo(testTaskEvent.from);
break;
case TEMPERATURE:
- getTemperatureInfo();
+ getTemperatureInfo(testTaskEvent.from);
break;
default:
ICLogger.d( "not support sensor..or you can add new one by coding..");
/**
* 获取温度相关的信息
*/
- private void getTemperatureInfo() {
- ICLogger.d( "getTemperatureInfo..." + Thread.currentThread().getName());
- TemperatureHelper.getInstance().getTemperature();
+ private void getTemperatureInfo(TestTaskEvent.From cmd_from) {
+ ICLogger.d( "getTemperatureInfo..." + Thread.currentThread().getName()+" "+cmd_from);
+ TemperatureHelper.getInstance().getTemperature(cmd_from);
}
//获取心率,这里要完成整个过程
- private void getHeartInfo() {
+ private void getHeartInfo(TestTaskEvent.From cmd_from) {
ICLogger.d( "getHeartInfo..." + Thread.currentThread().getName());
- BloodInfoHelper.getInstance().getBloodInfo();
+ BloodInfoHelper.getInstance().getBloodInfo(cmd_from);
}
@Override
//创建测试温度的任务
createTask(jxTempMode, TestTaskEvent.SensorType.TEMPERATURE, null);
} else if (ACTION_WORKSERVICE_SECOND_TIMER.equals(action)){
- ICLogger.d("onStartCommand "+ACTION_WORKSERVICE_SECOND_TIMER);
- BloodInfoHelper.getInstance().checkResultData();
+ if(currentTask !=null) {
+ ICLogger.d("onStartCommand " + ACTION_WORKSERVICE_SECOND_TIMER + " " + currentTask.sensorType);
+ if(currentTask.sensorType == TestTaskEvent.SensorType.HEART_RATE) {
+ BloodInfoHelper.getInstance().checkResultData();
+ }else if (currentTask.sensorType == TestTaskEvent.SensorType.TEMPERATURE)
+ {
+ TemperatureHelper.getInstance().checkResultData();
+ }
+ }
+ else
+ ICLogger.d("onStartCommand "+ACTION_WORKSERVICE_SECOND_TIMER);
+
+
}
return super.onStartCommand(intent, flags, startId);
}
import com.ic.work.SensorDataService;
import com.ic.work.WorkServiceApp;
+import com.ic.work.event.TestTaskEvent;
import com.ic.work.utils.ICLogger;
import com.ic.work.utils.Utils;
private long checkBloodStartTime;
private SensorManager mSensorManager;
private Sensor mHeartRate;
+ private static TestTaskEvent.From from = TestTaskEvent.From.SERVER_CMD;
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 static int default_max_test_count=20;
+
private BloodInfoHelper() {
mSensorManager = (SensorManager) WorkServiceApp.sContext.getSystemService(SENSOR_SERVICE);
mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
private static final String TAG = "BloodInfoHelper";
- public void getBloodInfo() {
- ICLogger.d("getBloodInfo...");
+ public void getBloodInfo(TestTaskEvent.From cmd_from) {
+ from = cmd_from;
+ ICLogger.d("getBloodInfo..."+from);
boolean ret = mSensorManager.registerListener(this, mHeartRate, PPG_TEST);
Log.d(TAG, "ret == > " + ret);
if(ret) {
//延时1秒进行检查
noWearCount++;
ICLogger.d( "noWearCount == > " + noWearCount);
- if (noWearCount > 20) {
+ if (noWearCount > 10) {
handleResult();
return;
}
//如果为0的话,记录下来
invalidateTime++;
ICLogger.d( "invalidateTime == > " + invalidateTime);
- if (invalidateTime <= 30) {
+ if (invalidateTime <= 20) {
} else {
handleResult();
return;
oxygen = (int) values[3];
if (oxygen <= 0) oxygen = randomOxygenValue();
}
+
+ checkResultData();
}
@Override
import android.hardware.SensorManager;
import android.util.Log;
+import com.ic.work.SensorDataService;
import com.ic.work.WorkServiceApp;
+import com.ic.work.event.TestTaskEvent;
import com.ic.work.utils.ICLogger;
import com.ic.work.utils.TemperatureUtil;
+import com.ic.work.utils.Utils;
import static android.content.Context.SENSOR_SERVICE;
private double lastTempOut = 0.0;
private double lastBodyTemp = 0.0;
private double lastWristTemp = 0.0;
- private final int DefaultDelayTimesInSeconds = 5;
+ private final int DefaultDelayTimesInSeconds = 10;
private int delayTimesInSeconds = DefaultDelayTimesInSeconds;
private SensorManager mSensorManager ;
+ private static TestTaskEvent.From from = TestTaskEvent.From.SERVER_CMD;
private Sensor mSensorTemp;
private long getTempStartTime=0;
- public void getTemperature() {
+ public void getTemperature(TestTaskEvent.From cmd_from) {
getTempStartTime = System.currentTimeMillis();
lastTempOut = 0.0;
lastBodyTemp = 0.0;
lastWristTemp = 0.0;
- delayTimesInSeconds = DefaultDelayTimesInSeconds;
- ICLogger.i( "getTemperature ..." );
+ from = cmd_from;
+ ICLogger.i( "getTemperature ..."+from );
+ if(from == TestTaskEvent.From.SERVER_CMD)
+ delayTimesInSeconds = 10;
+ else
+ delayTimesInSeconds = DefaultDelayTimesInSeconds;
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);
+ Utils.setSensorDataServiceRealTimeAlarmInSeconds(WorkServiceApp.sContext,1, SensorDataService.ACTION_WORKSERVICE_SECOND_TIMER);
}
if(sensorEvent.sensor.getType() == Sensor.TYPE_TEMPERATURE) {
ICLogger.d( "type is == >" + sensorEvent.sensor.getName());
lastWristTemp = values[0] / 100.0f;
- lastTempOut = 0.0f;// values[1] / 100.0f;
+ if (length > 1){
+ lastTempOut = values[1] / 100.0f;
+ }else {
+ lastTempOut = 0.0f;// 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());
- }
-
- */
-
- if (lastTempOut > 60 || lastTempOut < 1) {
- lastTempOut = 0.0f;
- }
- if (lastTempOut > 0.0f) {
- lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, lastTempOut);
- } else {
- lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, 26.0f);
- }
- ICLogger.d( "testing..." + lastWristTemp + " " + lastBodyTemp + " " + lastTempOut);
- //前10秒不更新内容,后10秒再更新数据
- if (delayTimesInSeconds <= 10 && mListener != null) {
- ICLogger.d( "update temperature info..thread name is ." + Thread.currentThread().getName());
- //获取
- ICLogger.d( "lastWristTemp == > " + lastWristTemp);
- ICLogger.d( "lastBodyTemp == > " + lastBodyTemp);
- ICLogger.d( "lastTempOut == > " + lastTempOut);
- mListener.onTemperatureUpdate(lastWristTemp, lastBodyTemp, lastTempOut);
+ }
+ checkResultData();
+ }
+ /**
+ * 按秒钟检查测试结果,防止无佩戴时长时间不超时。
+ */
+ public void checkResultData(){
+ if (lastTempOut > 60 || lastTempOut < 1) {
+ lastTempOut = 0.0f;
+ }
+ if (lastTempOut > 0.0f) {
+ lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, lastTempOut);
+ } else {
+ lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, 26.0f);
+ }
+ ICLogger.d( "testing..." + lastWristTemp + " " + lastBodyTemp + " " + lastTempOut);
+ //前10秒不更新内容,后10秒再更新数据
+ if (delayTimesInSeconds <= 10 && mListener != null) {
+ ICLogger.d( "update temperature info..thread name is ." + Thread.currentThread().getName());
+ //获取
+ ICLogger.d( "lastWristTemp == > " + lastWristTemp);
+ ICLogger.d( "lastBodyTemp == > " + lastBodyTemp);
+ ICLogger.d( "lastTempOut == > " + lastTempOut);
+ mListener.onTemperatureUpdate(lastWristTemp, lastBodyTemp, lastTempOut);
+ }
+ ICLogger.d("get temperature data use time == > " + (System.currentTimeMillis() - getTempStartTime));
+
+ delayTimesInSeconds--;
+ ICLogger.d( "delayTimesInSeconds " + delayTimesInSeconds);
+ if (delayTimesInSeconds <= 0) {
+ if (mListener != null) {
+ ICLogger.d("result == >lastWristTemp " + lastWristTemp + " lastBodyTemp" + lastBodyTemp + " lastTempOut" + lastTempOut);
+ mListener.onTemperatureResult(lastWristTemp, lastBodyTemp, lastTempOut);
}
- ICLogger.d("get temperature data use time == > " + (System.currentTimeMillis() - getTempStartTime));
-
- delayTimesInSeconds--;
- ICLogger.d( "delayTimesInSeconds " + delayTimesInSeconds);
- if (delayTimesInSeconds <= 0) {
- if (mListener != null) {
- ICLogger.d("result == >lastWristTemp " + lastWristTemp + " lastBodyTemp" + lastBodyTemp + " lastTempOut" + lastTempOut);
- mListener.onTemperatureResult(lastWristTemp, lastBodyTemp, lastTempOut);
- mSensorManager.unregisterListener(this);
- }
- }
+ mSensorManager.unregisterListener(this);
+ }else {
+ Utils.setSensorDataServiceRealTimeAlarmInSeconds(WorkServiceApp.sContext, 1, SensorDataService.ACTION_WORKSERVICE_SECOND_TIMER);
}
}
-
@Override
public void onAccuracyChanged(Sensor sensor, int i) {