mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
boolean ret = mSensorManager.registerListener(this, mHeartRate, SensorManager.SENSOR_DELAY_FASTEST);
Log.d(TAG, "ret == > " + ret);
- isWear=false;
+ isWear = false;
ndkHeart = 0;
ndkHigh = 0;
ndkLow = 0;
checkBloodOther();
}
}
+
private Sensor mHeartRate = null;
private int ndkHeart = 0;
private int ndkHigh = 0;
if (noWearCount <= 20) {
ppgLooper.postDelayed(this, 1000);
} else {
- handleResult();
+ handleNoWearResult();
}
} else {
noWearCount = 0;
}
});
}
- private void doPPGtest(){
+
+ private void handleNoWearResult() {
+ if (mListener != null) {
+ mListener.onNoWear();
+ mListener.onHeartRateTestFinished();
+ }
+ try {
+ IcLog.d(TAG, "disable ppg..");
+ HardwareUtils.onNdkDisablePPG();
+ } catch (Exception e) {
+ IcLog.e(TAG, "Stop Get Heart Value", e);
+ }
+ IcLog.d(TAG, "total use time == checkBloodStartTime > "
+ + (System.currentTimeMillis() - checkBloodStartTime));
+ }
+
+ private void doPPGtest() {
if (ndkHeart > 0) {
if (oxygen <= 0) oxygen = randomOxygenValue();
if (mListener != null) {
IcLog.d(TAG, "invalidateTime == > " + invalidateTime);
}
}
+
//- 数据测试结果为0,如果连续20个数据为0,那么就结束此次测试
//- 有数据以后,连续测上10次,就可以返回结果了
private void doTest() {
ndkLow = HardwareUtils.getNdkLowBloodValue();
oxygen = HardwareUtils.getNdkOxygenValue();
doPPGtest();
- if ( checkCount > 10 || invalidateTime > 30) {
+ if (checkCount > 10 || invalidateTime > 30) {
handleResultOtherBlood();
} else {
//继续测试
}
IcLog.d(TAG, "total use time == checkBloodStartTime > " + (System.currentTimeMillis() - checkBloodStartTime));
}
+
private void handleResult() {
if (mListener != null) {
mListener.onHeartRateResult(ndkHigh, ndkLow, ndkHeart, oxygen);
- }
- if (mListener != null) {
mListener.onHeartRateTestFinished();
}
try {
IcLog.d(TAG, "disable ppg..");
- if(mHeartRate!=null)
- mSensorManager.unregisterListener(this,mHeartRate);
+ if (mHeartRate != null)
+ mSensorManager.unregisterListener(this, mHeartRate);
} catch (Exception e) {
IcLog.e(TAG, "Stop Get Heart Value", e);
}
+ "Weared= " + values[4]
);
- ndkHeart = (int)values[0];//调用底层函数保证状态更新。
- ndkHigh = (int)values[1];
- ndkLow = (int)values[2];
- oxygen = (int)values[3];
- isWear = ((int)values[4] == 2);
- // isPPGTesting = true;// (ICJniUtils.isPPGStarted() == 1);
+ ndkHeart = (int) values[0];//调用底层函数保证状态更新。
+ ndkHigh = (int) values[1];
+ ndkLow = (int) values[2];
+ oxygen = (int) values[3];
+ isWear = ((int) values[4] == 2);
+ // isPPGTesting = true;// (ICJniUtils.isPPGStarted() == 1);
doPPGtest();
/*[0]---心率;[1]---血压高压;[2]---血压低压;[3]---血氧;[4]---佩戴检测(1--脱手,2--上手);*/
- if ( checkCount > 10 || invalidateTime > 30) {
+ if (checkCount > 10 || invalidateTime > 30) {
handleResult();
}
} else {
//没有佩戴之类的,总之,走不到结果那里,如果不结束的话,状态会错乱
void onHeartRateTestFinished();
+ void onNoWear();
+
}