0

How do Androids prioritize incoming Bluetooth 4.0 messages when there are a lot of signals in a specific location? When there are a lot of beacon messages in an area (a crowd wearing Fitbit devices etc.), Android appears to process some incoming ble messages based on a certain criteria, and ignore the rest. This appears to be prioritized at a lower level than the Android development framework gives us access to. Running various tests with amplified beacon signals in a crowded space, iPhones don't appear to act in the same manner.

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115

2 Answers2

2

I suspect the differences in behavior are based on the BLE chipset implementation and not necessarily by any conscious design let alone BLE specification. You will likely find that the behavior differs even between iOS device models (with different chipsets) and most certainly between the much more fragmented different Android models.

Any practically useful answer to this question is likely to be based on specific test conditions on specific device models rather than a definitive generalized answer.

Admittedly this is all conjecture based on lots of testing I have done. I offer it only in the absence of better and more specific answers from others.

davidgyoung
  • 63,876
  • 14
  • 121
  • 204
2

There is no "prioritization" as far as I can tell. The Bluetooth chips simply forward what they snap up on the air while they scan to the host.

What you need to keep in mind is the advertising interval. A device that sends out an advertisement more often than another is of course more likely to be detected. Also, if two devices send out an advertisement packet at the exact same moment and the signal strengths are equal, I guess the receiver will just get garbage and drop the packet.

Note that Android uses "active scanning", which means it waits for both the advertising packet and the scan response packet before the app gets notified. To get the scan response packet it must send a scan request immediately after it received the advertising packet, and immediately after that the advertiser sends the scan response packet. Now the standard defines a backoff mechanism if this fails which might be implemented differently in different controllers, hence the biggest differences for different controllers are probably due to this.

Emil
  • 16,784
  • 2
  • 41
  • 52