androidbluetoothbluetooth-lowenergyandroid-8.0-oreooneplusthree

BLE Scan on android 8.0


I've developed an app that do ble scan for nearby devices (multiple kinds of beacons around). I am scanning using the BluetoothLeScanner with CALLBACK_TYPE_ALL_MATCHES and an empty ScanFilter array (since I want to get callbacks for all nearby devices).

My app was working just fine on my OnePlus 5 device Android 7.x (and few other devices) - until I have upgraded to android 8.0 OTA on my device.

I am not sure if it is Android 8.0 issue or OnePlus Oxygen bug but I face to following situation: Around me there are many kinds of beacons, some advertise standard ibeacon/eddystone packets and others advertise custom packets.

I receive callbacks (onScanResult) only for the standard ibeacon/eddystone packets and not for the custom ones. Before upgrading I got the callbacks for all kind of packets - standard and non-standard.

Was something changed in the underline filter of received ble packets in android 8.0? Is it a bug in latest Oxygen OS version? Should I add some kind of flag to get non standard packets?

Any idea will be much appreciated. Thanks.


Solution

  • After investigating the packets sent by each beacon, I have figured out that one of the custom beacons sent a packet with wrong data length byte. That caused the packet to be filtered out by OS 8 (Android OR Oxygen) - did not matter to older versions.

    Now i'll have to talk to the firmware company for a fix...