@Override protected Void doInBackground(ScanData... params) { ScanData scanData = params[0]; IBeacon iBeacon = IBeacon.fromScanData(scanData.scanRecord, scanData.rssi); if (iBeacon != null) { lastIBeaconDetectionTime = new Date(); trackedBeacons.add(iBeacon); Log.d( TAG, "iBeacon detected :" + iBeacon.getProximityUuid() + " " + iBeacon.getMajor() + " " + iBeacon.getMinor() + " accuracy: " + iBeacon.getAccuracy() + " proximity: " + iBeacon.getProximity()); List<Region> matchedRegions = matchingRegions(iBeacon, monitoredRegionState.keySet()); Iterator<Region> matchedRegionIterator = matchedRegions.iterator(); while (matchedRegionIterator.hasNext()) { Region region = matchedRegionIterator.next(); MonitorState state = monitoredRegionState.get(region); if (state.markInside()) { state .getCallback() .call( IBeaconService.this, "monitoringData", new MonitoringData(state.isInside(), region)); } } Log.d(TAG, "looking for ranging region matches for this ibeacon"); matchedRegions = matchingRegions(iBeacon, rangedRegionState.keySet()); matchedRegionIterator = matchedRegions.iterator(); while (matchedRegionIterator.hasNext()) { Region region = matchedRegionIterator.next(); Log.d(TAG, "matches ranging region: " + region); RangeState rangeState = rangedRegionState.get(region); rangeState.addIBeacon(iBeacon); } } // I see a device: 00:02:72:C5:EC:33 with scan data: 02 01 1A 1A FF 4C 00 02 15 84 2A F9 C4 08 // F5 11 E3 92 82 F2 3C 91 AE C0 5E D0 00 00 69 C5 // 0000000000000000000000000000000000000000000000000000000000000000 // // 9: proximityUuid (16 bytes) 84 2A F9 C4 08 F5 11 E3 92 82 F2 3C 91 AE C0 5E // 25: major (2 bytes unsigned int) // 27: minor (2 bytes unsigned int) // 29: tx power (1 byte signed int) return null; }
@Override protected Void doInBackground(ScanData... params) { ScanData scanData = params[0]; IBeacon iBeacon = IBeacon.fromScanData(scanData.scanRecord, scanData.rssi); if (iBeacon != null) { processIBeaconFromScan(iBeacon); } return null; }
@Override protected Void doInBackground(ScanData... params) { ScanData scanData = params[0]; IBeacon iBeacon = IBeacon.fromScanData(scanData.scanRecord, scanData.rssi, scanData.device); if (iBeacon != null) { processIBeaconFromScan(iBeacon); } bluetoothCrashResolver.notifyScannedDevice( scanData.device, (BluetoothAdapter.LeScanCallback) getLeScanCallback()); return null; }