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) { } }; } }