Untitled

mail@pastecode.io avatar
unknown
java
4 years ago
13 kB
4
Indexable
Never
public void onLeScan(BluetoothDevice bluetoothDevice, int i, byte[] bArr) {
        boolean z;
        int i2;
        boolean z2;
        long j;
        long currentTimeMillis;
        long j2;
        String str;
        StringBuilder sb;
        byte[] bArr2 = bArr;
        if (!this.isDestroy && bluetoothDevice.getName() != null && bluetoothDevice.getName().equals(Const.DEVICE_NAME)) {
            String address = bluetoothDevice.getAddress();
            final Device device = null;
            final int i3 = -1;
            for (int i4 = 0; i4 < this.deviceList.size(); i4++) {
                if (((Device) this.deviceList.get(i4)).getDeviceMac().toLowerCase().equals(address.toLowerCase())) {
                    device = (Device) this.deviceList.get(i4);
                    i3 = i4;
                }
            }
            if (device != null) {
                ObjectAnimator objectAnimator = this.animator;
                if (objectAnimator != null) {
                    objectAnimator.cancel();
                }
                String str2 = "";
                for (byte b : bArr2) {
                    StringBuilder sb2 = new StringBuilder();
                    sb2.append(str2);
                    byte b2 = b & 255;
                    if (Integer.toHexString(b2).length() == 2) {
                        sb = new StringBuilder();
                        str = " ";
                    } else {
                        sb = new StringBuilder();
                        str = " 0";
                    }
                    sb.append(str);
                    sb.append(Integer.toHexString(b2));
                    sb2.append(sb.toString());
                    str2 = sb2.toString();
                }
                String str3 = this.TAG;
                StringBuilder sb3 = new StringBuilder();
                sb3.append("onLeScan: scanRecord: ");
                sb3.append(str2);
                Log.d(str3, sb3.toString());
                int customDataStartIndex = Utils.getCustomDataStartIndex(bArr);
                if (customDataStartIndex == -1) {
                    String str4 = this.TAG;
                    StringBuilder sb4 = new StringBuilder();
                    sb4.append("unavailable device: ");
                    sb4.append(bluetoothDevice.getName());
                    sb4.append(": ");
                    sb4.append(address);
                    Log.e(str4, "onLeScan: ", new Exception(sb4.toString()));
                    return;
                }
                boolean z3 = true;
                if (bArr2[customDataStartIndex] == 21 || bArr2[customDataStartIndex] == 19) {
                    int littleEndianDataParse = Utils.littleEndianDataParse(bArr2, customDataStartIndex + 12, 2);
                    float littleEndianDataParseHaveSign = ((float) Utils.littleEndianDataParseHaveSign(bArr2, customDataStartIndex + 14, 2)) / 16.0f;
                    int i5 = customDataStartIndex + 2;
                    if (bArr2[i5] == 16 || bArr2[i5] == 17 || bArr2[i5] == 18) {
                        float littleEndianDataParseHaveSign2 = ((float) Utils.littleEndianDataParseHaveSign(bArr2, customDataStartIndex + 16, 2)) / 16.0f;
                        j = (long) Utils.littleEndianDataParse(bArr2, customDataStartIndex + 18, 4);
                        if (((device.getHumidityType() & 1) == 1 && littleEndianDataParseHaveSign2 <= device.getPresetLowestHumidity() && device.getRecentHumidity() > device.getPresetLowestHumidity()) || ((device.getHumidityType() & 2) == 2 && littleEndianDataParseHaveSign2 >= device.getPresetHighestHumidity() && device.getRecentHumidity() < device.getPresetHighestHumidity())) {
                            NotificationSender.getInstance().notify(this, 2, device, littleEndianDataParseHaveSign2);
                        }
                        if (device.getRecentHumidity() != littleEndianDataParseHaveSign2) {
                            device.setRecentHumidity(littleEndianDataParseHaveSign2);
                            z2 = true;
                            long j3 = 1000 * j;
                            currentTimeMillis = System.currentTimeMillis() - j3;
                            long j4 = j3 + currentTimeMillis;
                            if (!Utils.isNew(currentTimeMillis, device.getStartTime(), j)) {
                                String str5 = this.TAG;
                                StringBuilder sb5 = new StringBuilder();
                                sb5.append("onLeScan: start change: ");
                                j2 = j4;
                                sb5.append(Math.abs(device.getStartTime() - currentTimeMillis));
                                sb5.append(", ");
                                sb5.append(Math.ceil((double) Math.abs(((float) (device.getStartTime() - currentTimeMillis)) / 1000.0f)));
                                Log.e(str5, sb5.toString());
                                device.setStartTime(currentTimeMillis);
                                try {
                                    MyApplication myApplication = this.myApplication;
                                    Session session = new Session(currentTimeMillis, device.getHighestTemp(), device.getHighestTempTime(), device.getLowestTemp(), device.getLowestTempTime(), device.getTempType(), device.getName(), device.getLocation(), device.getPresetHighest(), device.getPresetLowest(), device.getImgName(), device.getDeviceType());
                                    device.setSessionID(myApplication.addSession(session));
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                                z2 = true;
                            } else {
                                j2 = j4;
                            }
                            if (((device.getTempType() & 1) == 1 && littleEndianDataParseHaveSign <= device.getPresetLowest() && device.getRecentTemp() > device.getPresetLowest()) || ((device.getTempType() & 2) == 2 && littleEndianDataParseHaveSign >= device.getPresetHighest() && device.getRecentTemp() < device.getPresetHighest())) {
                                NotificationSender.getInstance().notify(this, 1, device, littleEndianDataParseHaveSign);
                            }
                            if (device.getRecentTempTime() != j2) {
                                long j5 = j2;
                                device.setRecentTempTime(j5);
                                device.setRecentTemp(littleEndianDataParseHaveSign);
                                if (littleEndianDataParseHaveSign > device.getHighestTemp()) {
                                    device.setHighestTemp(littleEndianDataParseHaveSign);
                                    device.setHighestTempTime(j5);
                                }
                                if (littleEndianDataParseHaveSign < device.getLowestTemp()) {
                                    device.setLowestTemp(littleEndianDataParseHaveSign);
                                    device.setLowestTempTime(j5);
                                }
                                z2 = true;
                            }
                            if (device.getBattery() == littleEndianDataParse) {
                                device.setBattery(littleEndianDataParse);
                            } else {
                                z3 = z2;
                            }
                            String str6 = this.TAG;
                            StringBuilder sb6 = new StringBuilder();
                            sb6.append("onLeScan: battery: ");
                            sb6.append(littleEndianDataParse);
                            sb6.append(", currentTemperature: ");
                            sb6.append(littleEndianDataParseHaveSign);
                            sb6.append(", currentTempDeviceRuntime: ");
                            sb6.append(j);
                            Log.i(str6, sb6.toString());
                            i2 = i;
                            z = z3;
                        }
                    } else {
                        j = (long) Utils.littleEndianDataParse(bArr2, customDataStartIndex + 16, 4);
                    }
                    z2 = false;
                    long j32 = 1000 * j;
                    currentTimeMillis = System.currentTimeMillis() - j32;
                    long j42 = j32 + currentTimeMillis;
                    if (!Utils.isNew(currentTimeMillis, device.getStartTime(), j)) {
                    }
                    NotificationSender.getInstance().notify(this, 1, device, littleEndianDataParseHaveSign);
                    if (device.getRecentTempTime() != j2) {
                    }
                    if (device.getBattery() == littleEndianDataParse) {
                    }
                    String str62 = this.TAG;
                    StringBuilder sb62 = new StringBuilder();
                    sb62.append("onLeScan: battery: ");
                    sb62.append(littleEndianDataParse);
                    sb62.append(", currentTemperature: ");
                    sb62.append(littleEndianDataParseHaveSign);
                    sb62.append(", currentTempDeviceRuntime: ");
                    sb62.append(j);
                    Log.i(str62, sb62.toString());
                    i2 = i;
                    z = z3;
                } else if (bArr2[customDataStartIndex] != 23 || device.getStartTime() == 0) {
                    i2 = i;
                    z = false;
                } else {
                    float littleEndianDataParseHaveSign3 = ((float) Utils.littleEndianDataParseHaveSign(bArr2, customDataStartIndex + 12, 2)) / 16.0f;
                    float littleEndianDataParseHaveSign4 = ((float) Utils.littleEndianDataParseHaveSign(bArr2, customDataStartIndex + 18, 2)) / 16.0f;
                    long startTime = device.getStartTime() + (((long) Utils.littleEndianDataParse(bArr2, customDataStartIndex + 14, 4)) * 1000);
                    long startTime2 = device.getStartTime() + (((long) Utils.littleEndianDataParse(bArr2, customDataStartIndex + 20, 4)) * 1000);
                    String str7 = this.TAG;
                    StringBuilder sb7 = new StringBuilder();
                    sb7.append("onLeScan: highest: ");
                    sb7.append(littleEndianDataParseHaveSign3);
                    sb7.append(", lowest: ");
                    sb7.append(littleEndianDataParseHaveSign4);
                    Log.i(str7, sb7.toString());
                    if (device.getHighestTempTime() == startTime && device.getHighestTemp() == littleEndianDataParseHaveSign3) {
                        z = false;
                    } else {
                        device.setHighestTempTime(startTime);
                        device.setHighestTemp(littleEndianDataParseHaveSign3);
                        z = true;
                    }
                    if (!(device.getLowestTempTime() == startTime2 && device.getLowestTemp() == littleEndianDataParseHaveSign4)) {
                        device.setLowestTempTime(startTime2);
                        device.setLowestTemp(littleEndianDataParseHaveSign4);
                        z = true;
                    }
                    if (z) {
                        Session sessionBySessionID = this.myApplication.getSessionBySessionID(device.getSessionID());
                        sessionBySessionID.setHighest(littleEndianDataParseHaveSign3);
                        sessionBySessionID.setHighestTime(startTime);
                        sessionBySessionID.setLowest(littleEndianDataParseHaveSign4);
                        sessionBySessionID.setLowestTime(startTime2);
                        String str8 = this.TAG;
                        StringBuilder sb8 = new StringBuilder();
                        sb8.append("getShowData3 lowestValue: ");
                        sb8.append(littleEndianDataParseHaveSign4);
                        sb8.append(", time: ");
                        sb8.append(startTime2);
                        Log.i(str8, sb8.toString());
                        this.myApplication.updateSession(sessionBySessionID);
                    }
                    i2 = i;
                }
                device.setSignal(i2);
                if (z) {
                    this.handler.post(new Runnable() {
                        public void run() {
                            CurrentActivity.this.deviceAdapter.notifyItemChanged(i3);
                            CurrentActivity.this.myApplication.updateDevice(device);
                        }
                    });
                }
            }
        }
    }