Closed carbonaro closed 2 years ago
I have confirmed this problem applies to Library versions 2.19-2.19.2. It was introduce by changes needed to support Android 12.
Android 12 requires that all PendingIntent
s set one of two flags: PendingIntent.FLAG_IMMUTABLE
or PendingIntent.FLAG_MUTABLE
. In almost all cases PendingIntent.FLAG_IMMUTABLE
is the right choice, and that was what was made in all uses in this library for Android 12 support. That choice was wrong.
The PendingIntent
that is used for intent-backed scans must be mutable so that the scan results can be attached as extras. Because this is not possible, all scan results from intent-backed scans are filtered out by this flag.
Fixed in #1059. This will be released imminently as 2.19.3
Expected behavior
When entering passive scan mode (e.g. startScan called with the SCAN_MODE_LOW_POWER setting), upon beacon detection,
StartupBroadcastReceiver#onReceive
is called with an intent having the BluetoothLeScanner.EXTRA_CALLBACK_TYPE extra typically set to CALLBACK_TYPE_ALL_MATCHES or to CALLBACK_TYPE_FIRST_MATCH. Scan results can then be processed.Actual behavior
On android version => Oreo, passive beacon scans seem broken. When the app goes into background, Scans started by
ScanHelper#startAndroidOBackgroundScan
are triggering callbacks toStartupBroadcastReceiver#onReceive
butintent.getIntExtra(BluetoothLeScanner.EXTRA_CALLBACK_TYPE, -1)
always returns -1.Detections do work when the app is started in the foreground.
Steps to reproduce this behavior
With the reference app, validate that a beacon gets detected in the foreground, remove battery from the beacon, wait for the didExitRegion event, put the reference app in the background and put the battery back in the beacon. Log shows the following :
And lines with
StartupBroadcastReceiver: Already started. Ignoring intent
keep repeating themselves, indicating that no scan results are being processed.Thought it was a permissions problem, especially since android 12 requires new - not so well documented - permissions (cf. https://github.com/AltBeacon/android-beacon-library/pull/1043). Try requesting runtime permissions, with no luck. Thought it was a specific android 12 beta 5 issues, then tried on android 9 with the following permissions, without success :
Mobile device model and OS version
OnePlus 5T, android 9 Pixel 3, android 12 beta 5
Android Beacon Library version
2.19.2
IMPORTANT: This forum is reserved for feature requests or reproducible bugs with the library itself. If you need help with using the library with your project, please open a new question on StackOverflow.com.