wangzhibo
2026-08-30 af6b816e29ebe329c59cfdd368bf41d2a4940946
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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) {
            }
        };
    }
}