正在查看: xDrip+ v04633772025.07.16 应用的 BackgroundScanReceiver.java JAVA 源代码文件
本页面展示 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);
}
}
}