package com.jsbogang.womp.ble;
|
|
import android.content.Context;
|
import android.content.SharedPreferences;
|
|
import com.jsbogang.womp.workbench.WompConfig;
|
import com.veepoo.protocol.listener.base.IBleWriteResponse;
|
import com.veepoo.protocol.listener.data.IHealthAlarmIntervalListener;
|
import com.veepoo.protocol.listener.data.IHeartWaringDataListener;
|
import com.veepoo.protocol.model.datas.HealthAlarmInterval;
|
import com.veepoo.protocol.model.datas.HeartWaringData;
|
import com.veepoo.protocol.model.enums.EHealthAlarmType;
|
import com.veepoo.protocol.model.settings.HeartWaringSetting;
|
import com.veepoo.protocol.VPOperateManager;
|
|
public final class AlarmPrefs {
|
private AlarmPrefs() {}
|
|
private static SharedPreferences p(Context c) {
|
return c.getSharedPreferences(WompConfig.ALARM_PREFS, Context.MODE_PRIVATE);
|
}
|
|
public static boolean hrOn(Context c) { return p(c).getBoolean("hrOn", true); }
|
public static int hrLow(Context c) { return p(c).getInt("hrLow", WompConfig.HR_ABNORMAL_LOW); }
|
public static int hrHigh(Context c) { return p(c).getInt("hrHigh", WompConfig.HR_ABNORMAL_HIGH); }
|
public static boolean bpOn(Context c) { return p(c).getBoolean("bpOn", true); }
|
public static int bpHigh(Context c) { return p(c).getInt("bpHigh", WompConfig.BP_HIGH_DEFAULT); }
|
public static int bpLow(Context c) { return p(c).getInt("bpLow", WompConfig.BP_LOW_DEFAULT); }
|
public static boolean spo2On(Context c) { return p(c).getBoolean("spo2On", true); }
|
public static float spo2Low(Context c) { return p(c).getFloat("spo2Low", WompConfig.SPO2_LOW_DEFAULT); }
|
|
public static void save(Context c, boolean hrOn, int hrLow, int hrHigh,
|
boolean bpOn, int bpHigh, int bpLow,
|
boolean spo2On, float spo2Low) {
|
p(c).edit()
|
.putBoolean("hrOn", hrOn)
|
.putInt("hrLow", hrLow)
|
.putInt("hrHigh", hrHigh)
|
.putBoolean("bpOn", bpOn)
|
.putInt("bpHigh", bpHigh)
|
.putInt("bpLow", bpLow)
|
.putBoolean("spo2On", spo2On)
|
.putFloat("spo2Low", spo2Low)
|
.apply();
|
}
|
|
public static boolean isAbnormal(Context c, int hr, int bpHighVal, int bpLowVal, float spo2) {
|
if (hrOn(c) && hr > 0 && (hr < hrLow(c) || hr > hrHigh(c))) {
|
return true;
|
}
|
if (bpOn(c) && bpHighVal > 0 && bpHighVal >= bpHigh(c)) {
|
return true;
|
}
|
if (bpOn(c) && bpLowVal > 0 && bpLowVal <= bpLow(c)) {
|
return true;
|
}
|
if (spo2On(c) && spo2 > 0 && spo2 < spo2Low(c)) {
|
return true;
|
}
|
return false;
|
}
|
|
public static void writeToWatch(Context c) {
|
if (!VeepooBleManager.get().isReady()) {
|
return;
|
}
|
IBleWriteResponse wr = code -> {};
|
HeartWaringSetting hr = new HeartWaringSetting(hrHigh(c), hrLow(c), hrOn(c));
|
VPOperateManager.getInstance().settingHeartWarning(wr, new IHeartWaringDataListener() {
|
@Override
|
public void onHeartWaringDataChange(HeartWaringData heartWaringData) {
|
}
|
}, hr);
|
try {
|
HealthAlarmInterval bp = new HealthAlarmInterval(
|
EHealthAlarmType.BLOOD_PRESSURE_ALARM, (float) bpHigh(c), (float) bpLow(c), bpOn(c));
|
VPOperateManager.getInstance().setHealthAlarmInterval(bp, wr, emptyAlarmListener());
|
HealthAlarmInterval ox = new HealthAlarmInterval(
|
EHealthAlarmType.LOW_BLOOD_OXYGEN_ALARM, 0f, spo2Low(c), spo2On(c));
|
VPOperateManager.getInstance().setHealthAlarmInterval(ox, wr, emptyAlarmListener());
|
} catch (Throwable ignored) {
|
}
|
}
|
|
private static IHealthAlarmIntervalListener emptyAlarmListener() {
|
return new IHealthAlarmIntervalListener() {
|
@Override
|
public void functionNotSupport() {
|
}
|
|
@Override
|
public void onHealthAlarmIntervalReadSuccess(HealthAlarmInterval data, boolean isOptSuccess) {
|
}
|
|
@Override
|
public void onHealthAlarmIntervalSetting(HealthAlarmInterval data, boolean isOptSuccess) {
|
}
|
};
|
}
|
}
|