From 5e55d0bdc03e72480ef95434c1e1996a9acabfad Mon Sep 17 00:00:00 2001 From: adolfintel Date: Thu, 14 Mar 2019 08:43:33 +0100 Subject: [PATCH] Improved bluetooth scanner --- OpenPods/.idea/vcs.xml | 6 +++ OpenPods/app/src/main/AndroidManifest.xml | 2 +- .../java/com/dosse/airpods/PodsService.java | 54 +++++++++++++++---- 3 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 OpenPods/.idea/vcs.xml diff --git a/OpenPods/.idea/vcs.xml b/OpenPods/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/OpenPods/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OpenPods/app/src/main/AndroidManifest.xml b/OpenPods/app/src/main/AndroidManifest.xml index 6a34de2..ed34840 100644 --- a/OpenPods/app/src/main/AndroidManifest.xml +++ b/OpenPods/app/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ - + recentBeacons=new ArrayList<>(); + private static final long RECENT_BEACONS_MAX_T_NS=10000000000L; //10s private void startAirPodsScanner() { try { BluetoothManager btManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); @@ -42,9 +49,19 @@ public class PodsService extends Service { public void onScanResult(int callbackType, ScanResult result) { try { byte[] data = result.getScanRecord().getManufacturerSpecificData(76); - if (data == null) return; - String a = decodeHex(data); - if (a.length() < 16) return; + if (data == null||data.length!=27) return; + recentBeacons.add(result); + ScanResult strongestBeacon=null; + for(int i=0;iRECENT_BEACONS_MAX_T_NS){ + recentBeacons.remove(i--); + continue; + } + if(strongestBeacon==null||strongestBeacon.getRssi()