Android有关设备之间通信的问题

时间:2018-08-08 14:15:34

标签: android bluetooth bluetooth-lowenergy google-nearby

这是我的问题:我有三个或更多需要相互通信的Android设备。他们总是彼此靠近,但是不幸的是我有一些限制。

  1. 设备无法连接到互联网,因此无法使用网络套接字。
  2. 设备必须能够连接至少两个或更多设备。
  3. 设备将由电池供电,因此通信应尽可能节能。

幸运的是,我只需要支持API 19及以上版本。现在更多细节。基本上想到麦当劳,前面的收银机会得到一个输入,然后将其发送到厨房后面的oder设备,告诉厨师需要准备什么食物。我正在尝试通过平板电脑实现类似的目的。因此,一个或多个设备用作接收用户输入的寄存器。然后,这些设备应将数据发送到背面的其他平板电脑(或单平板电脑,如果更容易的话)。因此,这些设备应该在开始时就相互连接,然后在接下来的6到8个小时内,根据用户输入,每小时发送0到300条消息。

这是我到目前为止发现的内容:

为此,我开始研究默认的BluetoothManager,从逻辑上讲这是第一个想法。但是,常规的蓝牙可能会消耗大量功率,并且效率似乎并不高,特别是因为它可能发生,因此一个小时根本不需要传输任何数据。 (频率不可预测)。

然后我继续搜索,发现的下一个是Bluetooth Low Energy。它似乎比普通的蓝牙更有希望,但是我读了很多声明说BLE并不是很稳定。而且,我一直在努力寻找好的资源,这些资源需要我更好地了解BLE以及如何在android中使用它。此外,我发现的资源仅集中在如何连接蓝牙低能耗设备(如健身追踪器)上,而我却没有发现有关如何在android中公开自己的GATT服务器的任何内容,因此其他android设备可以与其连接

所以我在寻找替代品,偶然发现了Google Play服务中的Nearby Connections API,这看起来也很有希望。但是我不确定功耗,因为API具有高带宽和高性能,这不一定是我的第一要务。但是它也说

  

在后台,该API结合了蓝牙,BLE和Wifi热点,既利用了各自的优势,又避免了各自的弱点。

据我了解,它可以依靠非功耗密集型通信方法吗?

这是我所有的问题:

  • 在android上创建BLE外围设备是否有很好的资源?
  • BLE是否真的像我阅读的书本一样不稳定,或者是否已有改进,或者这些陈述是错误的?
  • 附近连接的功耗如何?当没有数据传输时,它会降到最低吗?
  • 还有其他方法可以实现这种M:N通信吗?

非常感谢您的帮助

3 个答案:

答案 0 :(得分:2)

附近的连接存在,因此您不必担心如何在Android上使用无线电API,更不用担心如何使它们在多个Android版本上正常工作。 :)

在“附近的连接”领域工作了大约3年之后,我可以证明BLE确实是一场噩梦。

高功率操作(对于蓝牙经典版和BLE而言)正在扫描-只要您不一直扫描,只需保持连接建立就可以忽略不计。

我强烈建议您尝试Nearby Connections with P2P_CLUSTER-我们正是针对像您这样的M:N用例构建了它。

P.S。还有@virhonestum,“附近的连接”是一个完全脱机的API,根本不需要连接到Internet。

答案 1 :(得分:1)

BLE是一个不错的平台,但对于您正在做的事情而言,它可能不是最高效,最可预测的设置。

基本上,信标发送设备(寄存器)会将非常小的信息包放在一起,然后每秒发送一次,而另一台设备将扫描该信息包。信标是很容易的部分,但是扫描可能很棘手,并且会消耗更多电池。

由于大多数信标通常会广播与数据库有关的url或数字,因此要努力构建自定义数据包才能做到这一点,“附近”还需要互联网连接才能工作,并且只能通过屏幕事件或通过手动扫描来获取活动,但是BLE信标不需要互联网连接。如果不是主要问题,Android Beacon库通常是实现它的最简单方法。

如果您的设备内置WiFi,我会尝试进行某种自组织wifi连接。

答案 2 :(得分:0)

您提到设备没有与Internet的连接,因此无法选择使用Web套接字,但是如果将它们连接到本地网络,您仍然可以使用套接字在应用实例之间进行通信。

我不确定您的应用是否有这种可能,但是您可以在此处找到如何执行此操作的示例:http://brendaninnis.ca/connect-nearby-devices-part-2.html