导航菜单

页面标题

页面副标题

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

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

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


package com.eveningoutpost.dexdrip.watch.thinjam;

import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import com.eveningoutpost.dexdrip.models.UserError;
import com.eveningoutpost.dexdrip.utilitymodels.RxBleProvider;
import com.eveningoutpost.dexdrip.utils.bt.BtCallBack2;
import com.eveningoutpost.dexdrip.xdrip;
import com.polidea.rxandroidble2.exceptions.BleScanException;
import com.polidea.rxandroidble2.scan.BackgroundScanner;
import com.polidea.rxandroidble2.scan.ScanResult;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class BackgroundScanReceiver extends BroadcastReceiver {
    private static final ConcurrentHashMap<String, BtCallBack2> callbacks2 = new ConcurrentHashMap<>();

    public static String getACTION_NAME() {
        return "Action-BACKGROUND-SCAN";
    }

    public static void addCallBack2(BtCallBack2 btCallBack2, String str) {
        callbacks2.put(str, btCallBack2);
    }

    public static void removeCallBack(String str) {
        callbacks2.remove(str);
    }

    private static boolean processCallbacks(String str, String str2, String str3, String str4) {
        boolean z = false;
        for (Map.Entry<String, BtCallBack2> entry : callbacks2.entrySet()) {
            UserError.Log.d(str, "Callback2: " + entry.getKey());
            entry.getValue().btCallback2(str2, str4, str3, null);
            z = true;
        }
        if (!z) {
            UserError.Log.d(str, "No callbacks registered!!");
        }
        return z;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.d("BackgroundScanReceiver", "GOT SCAN INTENT!! " + action);
        if (action == null || !action.equals("Action-BACKGROUND-SCAN")) {
            return;
        }
        String stringExtra = intent.getStringExtra("CallingClass");
        if (stringExtra == null) {
            stringExtra = getClass().getSimpleName();
        }
        BackgroundScanner backgroundScanner = RxBleProvider.getSingleton().getBackgroundScanner();
        try {
            List onScanResultReceived = backgroundScanner.onScanResultReceived(intent);
            String macAddress = ((ScanResult) onScanResultReceived.get(0)).getBleDevice().getMacAddress();
            boolean processCallbacks = processCallbacks(stringExtra, macAddress, ((ScanResult) onScanResultReceived.get(0)).getBleDevice().getName(), "SCAN_FOUND");
            UserError.Log.d(stringExtra, "Scan results received: " + macAddress + " " + onScanResultReceived);
            if (processCallbacks) {
                return;
            }
            try {
                backgroundScanner.stopBackgroundBleScan(PendingIntent.getBroadcast(xdrip.getAppContext(), 142, intent, 134217728));
            } catch (Exception unused) {
            }
        } catch (BleScanException | NullPointerException e) {
            UserError.Log.e(stringExtra, "Failed to scan devices" + e);
        }
    }
}