导航菜单

页面标题

页面副标题

xDrip+ v04633772025.07.16 - AddCalibration.java 源代码

正在查看: xDrip+ v04633772025.07.16 应用的 AddCalibration.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.eveningoutpost.dexdrip;

import android.content.Intent;
import android.os.Bundle;
import android.os.PowerManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
import com.eveningoutpost.dexdrip.NavigationDrawerFragment;
import com.eveningoutpost.dexdrip.calibrations.NativeCalibrationPipe;
import com.eveningoutpost.dexdrip.g5model.FirmwareCapability;
import com.eveningoutpost.dexdrip.importedlibraries.usbserial.driver.UsbId;
import com.eveningoutpost.dexdrip.models.BgReading;
import com.eveningoutpost.dexdrip.models.BloodTest;
import com.eveningoutpost.dexdrip.models.Calibration;
import com.eveningoutpost.dexdrip.models.JoH;
import com.eveningoutpost.dexdrip.models.Sensor;
import com.eveningoutpost.dexdrip.models.UserError;
import com.eveningoutpost.dexdrip.services.Ob1G5CollectionService;
import com.eveningoutpost.dexdrip.utilitymodels.CollectionServiceStarter;
import com.eveningoutpost.dexdrip.utilitymodels.PersistentStore;
import com.eveningoutpost.dexdrip.utilitymodels.Pref;
import com.eveningoutpost.dexdrip.utilitymodels.UndoRedo;
import com.eveningoutpost.dexdrip.utils.DexCollectionType;
import java.util.UUID;

public class AddCalibration extends AppCompatActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks {
    private static double lastExternalCalibrationValue;
    Button button;
    private NavigationDrawerFragment mNavigationDrawerFragment;
    final String unit = Pref.getString("units", "mgdl");

    @Override
    protected void onCreate(Bundle bundle) {
        xdrip.checkForcedEnglish(this);
        super.onCreate(bundle);
        if (CollectionServiceStarter.isBTShare(getApplicationContext())) {
            startActivity(new Intent(this, (Class<?>) Home.class));
            finish();
        }
        setContentView(2131492892);
        addListenerOnButton();
        automatedCalibration();
    }

    @Override
    protected void onResume() {
        xdrip.checkForcedEnglish(this);
        super.onResume();
        NavigationDrawerFragment navigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(2131296801);
        this.mNavigationDrawerFragment = navigationDrawerFragment;
        navigationDrawerFragment.setUp(2131296801, (DrawerLayout) findViewById(2131296561), getString(2131755075), this);
        automatedCalibration();
    }

    @Override
    public void onNavigationDrawerItemSelected(int i) {
        this.mNavigationDrawerFragment.swapContext(i);
    }

    public synchronized void automatedCalibration() {
        PowerManager.WakeLock wakeLock = JoH.getWakeLock("xdrip-autocalib", UsbId.SILABS_CP2102);
        try {
            UserError.Log.d("AddCalibration", "Auto calibration...");
            Bundle extras = getIntent().getExtras();
            if (extras != null) {
                JoH.clearCache();
                final String string = extras.getString("bg_string");
                final String string2 = extras.getString("cal_source", "unknown");
                final long j = extras.getLong("timestamp", -1L);
                final String string3 = extras.getString("bg_age");
                final String string4 = extras.getString("from_external", "false");
                final String string5 = extras.getString("from_interactive", "false");
                final String string6 = extras.getString("note_only", "false");
                final String string7 = extras.getString("allow_undo", "false");
                if (JoH.msSince(j) >= 0 && JoH.msSince(j) <= 20000) {
                    if (!Sensor.isActive() && !Home.get_follower()) {
                        UserError.Log.w("CALERROR", "ERROR during automated calibration - no active sensor");
                        finish();
                    }
                    if (!TextUtils.isEmpty(string)) {
                        if (!TextUtils.isEmpty(string3)) {
                            final double parseDouble = Double.parseDouble(string);
                            new Thread() {
                                @Override
                                public void run() {
                                    PowerManager.WakeLock wakeLock2 = JoH.getWakeLock("xdrip-autocalibt", UsbId.SILABS_CP2102);
                                    long parseLong = Long.parseLong(string3);
                                    if (parseLong < 0 || parseLong >= 86400) {
                                        UserError.Log.wtf("CALERROR", "bg age either in future or older than 1 day: " + parseLong);
                                    } else {
                                        long j2 = parseLong > 600 ? 600L : 0L;
                                        if (parseDouble > BgReading.BESTOFFSET) {
                                            if (AddCalibration.lastExternalCalibrationValue == BgReading.BESTOFFSET) {
                                                double unused = AddCalibration.lastExternalCalibrationValue = PersistentStore.getDouble("last-external-calibration-value");
                                            }
                                            if (parseDouble != AddCalibration.lastExternalCalibrationValue) {
                                                if (!Home.get_follower()) {
                                                    double unused2 = AddCalibration.lastExternalCalibrationValue = parseDouble;
                                                    PersistentStore.setDouble("last-external-calibration-value", parseDouble);
                                                    UserError.Log.uel("AddCalibration", "Creating auto calibration from: " + parseDouble + " requested: " + JoH.dateTimeText(j) + " from source: " + string2);
                                                    Double convertedBg = Calibration.getConvertedBg(parseDouble);
                                                    if (convertedBg != null) {
                                                        long tsl = JoH.tsl() - (1000 * parseLong);
                                                        NativeCalibrationPipe.addCalibration(convertedBg.intValue(), tsl);
                                                        UserError.Log.uel("AddCalibration", "Sending native calibration pipe value: " + convertedBg.intValue() + " mg/dl taken at timestamp: " + JoH.dateTimeText(tsl) + " source: " + string2);
                                                    }
                                                    Calibration create = Calibration.create(parseDouble, parseLong, AddCalibration.this.getApplicationContext(), string6.equals("true"), j2);
                                                    if (create != null && string7.equals("true") && JoH.msSince(create.timestamp) < 3600000) {
                                                        UndoRedo.addUndoCalibration(create.uuid);
                                                    }
                                                    if (create != null) {
                                                        NativeCalibrationPipe.addCalibration((int) create.bg, create.timestamp);
                                                    }
                                                } else if (string5.equals("true")) {
                                                    UserError.Log.d("AddCalibration", "Interactive calibration and we are follower so sending to master");
                                                    AddCalibration.sendFollowerCalibration(parseDouble, parseLong);
                                                } else {
                                                    UserError.Log.d("AddCalibration", "Not an interactive calibration so not sending to master");
                                                }
                                            } else {
                                                UserError.Log.e("AddCalibration", "Ignoring Remote calibration value as identical to last one: " + parseDouble);
                                            }
                                            if (string4.equals("true")) {
                                                UserError.Log.d("jamorham calib", "Relaying tasker pushed calibration");
                                                GcmActivity.pushCalibration(string, string3);
                                            }
                                        }
                                    }
                                    JoH.releaseWakeLock(wakeLock2);
                                }
                            }.start();
                        } else {
                            UserError.Log.w("CALERROR", "ERROR during automated calibration - no valid bg age");
                        }
                    } else {
                        UserError.Log.w("CALERROR", "ERROR during automated calibration - no valid value");
                    }
                    finish();
                }
                UserError.Log.wtf("AddCalibration", "Blocked auto-calibration with out of range timestamp: " + JoH.dateTimeText(j) + " " + j + " from " + string2);
            }
        } finally {
            JoH.releaseWakeLock(wakeLock);
        }
    }

    public void addListenerOnButton() {
        Button button = (Button) findViewById(2131296927);
        this.button = button;
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (Sensor.isActive() || Home.get_follower()) {
                    EditText editText = (EditText) AddCalibration.this.findViewById(2131296392);
                    String obj = editText.getText().toString();
                    if (!TextUtils.isEmpty(obj)) {
                        try {
                            double d = JoH.tolerantParseDouble(obj);
                            if (!Home.get_follower()) {
                                if (DexCollectionType.hasDexcomRaw() && FirmwareCapability.isTransmitterRawIncapable(Ob1G5CollectionService.getTransmitterID())) {
                                    if (AddCalibration.this.unit.compareTo("mgdl") != 0) {
                                        d *= 18.0182d;
                                    }
                                    JoH.clearCache();
                                    new Calibration();
                                    Sensor.currentSensor();
                                    JoH.static_toast_long("Sending Blood Test to Transmitter");
                                    BloodTest.create(JoH.tsl() - 30000, d, "Add Calibration");
                                    if (!Pref.getBooleanDefaultFalse("bluetooth_meter_for_calibrations_auto")) {
                                        NativeCalibrationPipe.addCalibration((int) d, JoH.tsl() - 30000);
                                    }
                                } else {
                                    Calibration create = Calibration.create(d, AddCalibration.this.getApplicationContext());
                                    if (create != null) {
                                        UndoRedo.addUndoCalibration(create.uuid);
                                        NativeCalibrationPipe.addCalibration((int) create.bg, create.timestamp);
                                    } else {
                                        UserError.Log.e("AddCalibration", "Calibration creation resulted in null");
                                        JoH.static_toast_long("Could not create calibration!");
                                    }
                                }
                            } else if (Home.get_follower()) {
                                AddCalibration.sendFollowerCalibration(d, 0L);
                            }
                            AddCalibration.this.startActivity(new Intent(view.getContext(), (Class<?>) Home.class));
                        } catch (NumberFormatException e) {
                            UserError.Log.e("AddCalibration", "Number format exception ", e);
                            Home.toaststatic("Got error parsing number in calibration");
                        }
                        AddCalibration.this.finish();
                        return;
                    }
                    editText.setError("Calibration Can Not be blank");
                    return;
                }
                UserError.Log.w("CALERROR", "Sensor is not active, cannot calibrate");
            }
        });
    }

    public static void sendFollowerCalibration(double d, long j) {
        UserError.Log.d("AddCalibration", "sendFollowerCalibration: " + d + " " + j);
        String uuid = UUID.randomUUID().toString();
        GcmActivity.pushCalibration2(d, uuid, j);
        UndoRedo.addUndoCalibration(uuid);
        JoH.static_toast_long("Calibration sent to master for processing");
    }
}