2017-05-08 64 views
0

我最近正在做一个基于BLE信标的室内定位项目。可以在Android设备上扫描多少个信标?

我曾尝试在我的Android应用中包含Estimote或Android Beacon库,但我的设备(Zenfone3,HTC X9)只能扫描约10-20个信标,我们已部署了约100个信标壁。

与我们应用的iOS版本相比,它可以每秒钟扫描大约50-80个信标。我想知道可以在Android设备上扫描多少个信标?那么有没有什么方法可以接收更多的灯塔广告?它在Android或全球蓝牙芯片组的蓝牙API上真的有门槛吗?


更新(2017年5月8日16:17):

我保证所有的信标功能。我使用Radius Network的“Locate”来扫描附近的信标,并确保我的空间中真的有50多个信标。


更新(2017年5月10日10:00):

亲爱的周华健,感谢你为您真诚的答复。以下是我的解决方法。 我测试了3个案例。在一个500m左右×100米的空间,我部署不同数量的信标:

壳体1(100信标): 从在每一个第二约16不同的设备接收广告。

情况2(50个信标): 每秒接收来自约15个不同设备的广告。

情况3(20个信标): 每秒接收来自约14个不同设备的广告。

我想要实现的是我希望每秒都能接收来自所有设备的广告。请您提供任何方法来满足我的需求?

以下是日志我得到每当我收到一个广告从ScanResult从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 
+0

设备的广告时间间隔是多少? – Emil

+0

我们的设备是BLE信标,在39频道上的传输间隔为100ms。 –

回答

0

如果您有100个广告设备,且广告时间间隔为100毫秒,则无法接收100%的广告数据包。首先,即使您使用100%占空比扫描间隔,Android设备也不会真正扫描100%的时间,因为它在某些时间点必须将天线用于其他设备,如WiFi或安排其他设备的连接事件。如果你说你只在39频道上播放广告,你将失去大约三分之一的数据包,因为扫描器在广告频道之间循环播放。您也很有可能在广播中发生冲突,因为发送数据包需要几百微妙的时间。发生这种情况时,接收器很可能会收到垃圾。

+0

请您分享结果以及在您的环境中收集蓝牙广告的经验吗?像信标的数量,信标传输间隔或类似的东西?我很感激。 –

+0

我想大多数设备的广告间隔为1秒左右。我不确定你想要什么信息。没有太多有趣的事实可以说明我的猜测。由于我们没有将广告数据用于设备以外的其他设备,因此丢弃某些数据包并不重要。只需做一些基本计算,事实是广告数据包以1 MBit/s的速度发送,并且在广告数据+地址上的开销为80位,您将根据广告时间间隔计算出碰撞的可能性。 – Emil

0

不应该有任何限制。 Android的蓝牙堆栈只是转发广告并扫描应用程序的响应。我们有数百个广告设备,并且仍然可以正常工作。

是否有特定设备的广告根本无法工作,可能是由于数据包格式或其他原因?

+0

亲爱的Emil,非常感谢您的真诚回复。我面临的挑战是,我希望每** **的每个设备**的每个广告**都能**。 –

+0

请参阅我的更新。 –