Android Proximity SDK unable to detect beacons

I am trying to use proximity SDK for Android to detect beacons. I created a sample app from the cloud (Estimote Cloud->Mobile App->Add New App->Proximity for Multiple Beacons). When I compiled/installed/ran the app, I was able to see the beacons detected inside the app. When I closed the app and reopened it subsequently it could not detect it again. I tried this many times and it would not detect it. Some times it would detect it once again after a few attempts or phone restarts.

I saw on logcat that when it successfully detected beacons, status was 0. But when it failed status was 6. See logs below
Successful case
07-25 20:16:54.972 22083-22188/com.estimote.proximitycontent D/BluetoothAdapter: isLeEnabled(): ON
07-25 20:16:54.999 22083-22097/com.estimote.proximitycontent D/BluetoothLeScanner: onScannerRegistered() - status=0 scannerId=32 mScannerId=0
Failed Case
07-25 20:17:37.692 22508-22566/com.estimote.proximitycontent D/BluetoothAdapter: isLeEnabled(): ON
07-25 20:17:37.698 22508-22523/com.estimote.proximitycontent D/BluetoothLeScanner: onScannerRegistered() - status=6 scannerId=-1 mScannerId=0

Reading up online, I see that “status=6 means too frequent scanning and Android would silently fail”

How do I reliably use proximity SDK to detect proximity beacons reliably every single time? Here are the Beacon config details
Beacon H/W: J1.9_B1.1
Firmware: 4.14.4
Estimote Monitoring: ON
Android Version: 9 (Btw tried it on 7 as well and same result)

Also this issue is not observed in IOS and only on Android.

Thanks
Ram

As you’ve already figured out, our Proximity SDK currently starts many BluetoothLeScanners under the hood, and Android has a limit of 5 start-scans per 30 seconds. Which means once you start a Proximity Observer, you probably cannot start it again within 30 seconds. It’s something we’ll likely need to optimize better in the future.

As a workaround for now, you can disable telemetry reporting (withTelemetryReportingDisabled) and secure-monitoring (withEstimoteSecureMonitoringDisabled), which should reduce the number of scanners we use.