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

Using AT commands with an Android phone
Adding GCM push service notification to an existing Android application
how to remove spaces between bars?
Displaying Android Action Bar
Updating and sharing a variable between 3 classes
ActivityNotFoundException Android App
Date comparison Sqlite Android
runOnUiThread in fragment
What sort of things I can test in my android project using JUnit
Time picker 4.2 and getting Edit Text
Flurry should be used in Services and AsyncTasks?
Linking two projects, other R.java not generated
Is here some use of information provided in Android Keystore? Is it even readable after we sign the app?
Delete multiple image from GridView on one time button press
Creating Imagebutton programatically
Filter LogCat to get only the messages from My Application

Categories

HOME
api
telegram
css3
tivoli
simulink
hugo
settings
mapbox
jax-ws
vert.x
webix
computer-science
teechart
fosrestbundle
augeas
startup
jsonpath
php-5.6
job-scheduling
git-extensions
database-connection
babel
epsilon
jquery-callback
strongname
android-sharedpreferences
handler
cppreference
nsurl
google-cast
postback
yowsup
magento-1.9.2.4
filesystemwatcher
css-position
news
android-ibeacon
placeholder
android-checkbox
puredata
vaadin-elements
gitlist
openblas
scalding
stdmap
spring-data-couchbase
cpu-cache
google-photos
rxtx
choice
burrows-wheeler-transform
resourcemanager
signalr.client
eigenvector
beanstalk
asyncdisplaykit
tfs-workitem
jdi
flock
doctype
lasso
uncompress
android-broadcast
zxspectrum
actionfilterattribute
exceldatareader
iiop
formview
kissfft
reflector
ray
dot42
authlogic
maven-scm
cfcache
clickbank
git-repo
syndicationfeed
xmltodict
mt4j
light
ice-cube
mvc-editor-templates
asdf
workitem
dolby-audio-api
pclzip
traceability
onload-event
preload
extreme-programming
mapping-by-code
database-create
httponly
failing-tests
apache-commons-dbutils
google-maps-mobile
flex-mobile
denied
mbeans
cdonts
burndowncharts
build-environment
silverlight-oob
information-management

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App