android


How many beacons can be scanned on Android devices?


I'm recently working on a indoor positioning project based on BLE beacons.
I had been try to include Estimote or Android Beacon Library to my Android app, but my devices (Zenfone3, HTC X9) can only scanned about 10-20 beacons in a space which we had been deployed about 100 beacons on the wall.
In contrast to the iOS version of our app, it can scanned about 50-80 beacons every seconds. I am wondering how many beacons can be scanned on Android devices? And does there have any method to receive more beacon advertisement? It there really have a threshold on the Bluetooth API of Android or onbroad Bluetooth chipset?
Update(2017/05/08 16:17):
I've assure that all the beacons are functioning. I used "Locate" from Radius Network to scan nearby beacons and make sure that I really got 50+ beacons in my space.
Update(2017/05/10 10:00):
Dear Emil, thank your for your sincere reply. The following is my workarounds.
I've test 3 cases. In a space about 500m x 100m, I deployed different numbers of beacons:
case 1 (100 beacons):
receive advertisements from about 16 different devices in every second.
case 2 (50 beacons):
receive advertisements from about 15 different devices in every second.
case 3 (20 beacons):
receive advertisements from about 14 different devices in every second.
what I want to achieve is that I want to receive advertisements from all devices in every second. Would your please provide any approaches to fulfill my needs?
The following is the log I get whenever I receive a advertisement from ScanResult from BluetoothAdapter.getBluetoothLeScanner().startScan(ScanCallback):
05-04 12:42:24.460 C4:BE:7B:5B:60:74 -87
05-04 12:42:25.055 C4:BE:C8:F6:DD:28 -84
05-04 12:42:25.066 C4:BE:C8:F6:DD:28 -84
05-04 12:42:25.075 C4:BE:5F:55:74:AE -90
05-04 12:42:25.084 C4:BE:5F:55:74:AE -90
05-04 12:42:25.090 C4:BE:14:70:C7:F1 -91
05-04 12:42:25.100 C4:BE:14:70:C7:F1 -91
05-04 12:42:25.134 C4:BE:BB:AD:8A:B3 -91
05-04 12:42:25.163 C4:BE:BB:AD:8A:B3 -91
05-04 12:42:25.169 C4:BE:D7:80:E1:34 -89
05-04 12:42:25.174 C4:BE:D7:80:E1:34 -89
05-04 12:42:25.536 C4:BE:5D:90:5C:86 -79
05-04 12:42:25.543 C4:BE:5D:90:5C:86 -79
05-04 12:42:25.559 C4:BE:20:20:C9:69 -88
05-04 12:42:25.564 C4:BE:20:20:C9:69 -88
05-04 12:42:25.986 C4:BE:C1:D9:CB:5E -86
05-04 12:42:25.999 C4:BE:C1:D9:CB:5E -86
05-04 12:42:26.007 C4:BE:CD:AA:AE:DD -94
05-04 12:42:26.016 C4:BE:CD:AA:AE:DD -94
05-04 12:42:26.038 C4:BE:E7:F1:88:EE -89
05-04 12:42:26.044 C4:BE:E7:F1:88:EE -89
05-04 12:42:26.051 C4:BE:E9:AE:45:03 -83
05-04 12:42:26.056 C4:BE:E9:AE:45:03 -83
05-04 12:42:26.063 C4:BE:97:5D:B7:50 -95
05-04 12:42:26.071 C4:BE:97:5D:B7:50 -95
05-04 12:42:26.076 C4:BE:EF:15:EB:C3 -77
05-04 12:42:26.082 C4:BE:EF:15:EB:C3 -77
05-04 12:42:26.086 C4:BE:35:94:B2:3D -70
05-04 12:42:26.092 C4:BE:35:94:B2:3D -70
05-04 12:42:26.644 C4:BE:5F:55:74:AE -92
05-04 12:42:26.667 C4:BE:5F:55:74:AE -92
05-04 12:42:26.693 C4:BE:7B:5B:60:74 -86
05-04 12:42:26.702 C4:BE:7B:5B:60:74 -86
05-04 12:42:26.708 C4:BE:D7:80:E1:34 -82
05-04 12:42:26.717 C4:BE:D7:80:E1:34 -82
05-04 12:42:26.720 C4:BE:3B:29:8A:42 -93
05-04 12:42:26.724 C4:BE:3B:29:8A:42 -93
05-04 12:42:26.731 C4:BE:4F:21:CF:81 -94
05-04 12:42:26.734 C4:BE:4F:21:CF:81 -94
05-04 12:42:26.738 C4:BE:86:4F:C2:8D -87
05-04 12:42:26.742 C4:BE:86:4F:C2:8D -87
05-04 12:42:26.746 C4:BE:E7:F1:88:EE -88
05-04 12:42:26.750 C4:BE:E7:F1:88:EE -88
05-04 12:42:26.753 C4:BE:20:20:C9:69 -86
05-04 12:42:26.757 C4:BE:20:20:C9:69 -86
05-04 12:42:26.760 C4:BE:BB:AD:8A:B3 -88
05-04 12:42:26.763 C4:BE:5D:90:5C:86 -79
05-04 12:42:26.767 C4:BE:BB:AD:8A:B3 -88
05-04 12:42:26.770 C4:BE:5D:90:5C:86 -79
05-04 12:42:27.113 C4:BE:6F:53:2A:B3 -73
05-04 12:42:27.133 C4:BE:6F:53:2A:B3 -73
05-04 12:42:27.151 C4:BE:62:C4:68:38 -82
05-04 12:42:27.160 C4:BE:62:C4:68:38 -82
05-04 12:42:27.166 C4:BE:F2:A7:4F:4E -88
05-04 12:42:27.170 C4:BE:F2:A7:4F:4E -88
There is impossible to receive 100% of the advertisement packets if you have 100 advertising devices with 100 ms advertisement interval. First the android device will not really scan 100% of the time, even if you use the 100% duty scan interval, since it at some points in time must use the antenna for something else, like wifi or scheduling other devices' connection events. If you say you advertise only on channel 39 you will lose about a third of all packets because the scanner cycles between the advertisement channels. You will also most likely have colliding advertisements on the air, since it takes some hundreds of microseconds to send a packet. The receiver will most likely just receive garbage when that happens.
There shouldn't be any limitations. Android's Bluetooth stack just forwards the advertisements and scan responses to the application. We have hundreds of advertising devices and that still works fine.
Are there particular devices' advertisements that don't work at all maybe due to the packet format or something?

Related Links

How do I figure out where the crash occurred when getting android.content.res.Resources$NotFoundException: Resource ID #0x0?
Enforce two permissions to activity in android
Scrollable tabhost
How do I share dependencies between Android modules
how to make hexagon shaped button in android?
Accuracy issue in creating a simple StopWatch Timer android app
Cannot get Java split function working with regular expression
No ripple effect on touch in recyclerview
scrolling view behaviour not working with SwipeRefreshLayout
how can i play my music application when the screen is locked?
Determine when app comes out of idle mode in Android M
ImageView keeps scaling the image, making the app lag
CursorIndexOutOfBoundsException error when trying to run
How can i solve libmedia.so issue in htc?
Automation in Android Devices
How to connect android device with appium using windows machine?

Categories

HOME
notepad++
beautifulsoup
design-patterns
gradient
grafana
xbee
mips
x264
title
qpython
windows-ce
project-intu
favicon
chargify
windows-xp
direct3d11
roundup
beautifier
gpio
android-sharedpreferences
rpgle
openmdao
twiml
send
dst
paragraph
rselenium
linkedhashmap
biztalk-rule-engine
activexobject
arduino-ide
amazon-ses
node-mssql
demo
skylink
parser-generator
movilizer
sharp-snmp
dapper-simplecrud
monkey-testing
flask-restful
xbmc
ntvs
lightning
compiler-design
java-websocket
mouseleave
google-photos
smartfoxserver
rocks
microstation
myspace
mapinfo
tooleap
nservicebus5
data-protection
aurora
kendo-upload
relativelayout
maybe
liquid-layout
user-permissions
actionfilterattribute
viewer
metatrader5
build-script
jquery-slider
gnumeric
vsx
scriptaculous
hibernate-entitymanager
video-codecs
onload-event
fb.ui
sqlclr
monotouch.dialog
boost-msm
jsr286
wiimote
box2d-iphone
screen-size
jquery-tools
xcelsius
pylucene
xui
dataform
twitterizer
mtu
luajava
undefined-index
vs-android
object-database
rowlex
wysiwym
localizable.strings
flvplayback
contentpresenter

Resources

Database Users
RDBMS discuss
Database Dev&Adm
javascript
java
csharp
php
android
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App