首页 > 解决方案 > Android 关于设备间通信的问题

问题描述

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

  1. 这些设备没有连接到互联网,因此网络套接字不是一种选择。
  2. 一个设备需要能够连接到至少两个或更多的设备。
  3. 这些设备将使用电池供电,因此通信应尽可能节能。

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

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

我开始研究这个的默认值BluetoothManager,这在逻辑上是第一个想法。然而,普通的蓝牙会消耗大量电力,而且似乎效率不高,尤其是因为它可能发生,一个小时内根本不需要传输任何数据。(频率是不可预测的)。

然后我继续搜索,我发现的下一件事是低功耗蓝牙。它似乎比普通蓝牙更有前途,但是我读了很多说法,BLE 不是很稳定。我努力寻找更好的资源,以便更好地理解 BLE 以及如何在 android 中使用它。此外,我发现的资源只集中在如何连接到低功耗蓝牙外围设备,比如健身追踪器,我还没有找到关于如何在 android 中公开自己的 GATT 服务器以便不同的 android 设备可以连接到它的任何东西.

因此,我寻找替代方案并偶然发现了 Google Play 服务中的Nearby Connections API,它看起来也很有前途。但是我不确定功耗,因为 API 优先考虑高带宽和性能,这不一定是我的第一要务。然而它也说

在底层,API 结合使用蓝牙、BLE 和 Wifi 热点,利用各自的优势,同时规避各自的弱点。

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

所以这是我的所有问题:

非常感谢你的帮助

标签: androidbluetoothbluetooth-lowenergygoogle-nearby

解决方案


Nearby Connections 存在,因此您不必担心如何在 Android 上使用无线电 API,更不用说如何让它们在多个 Android 版本中工作了。:)

在为 Nearby Connections 工作了大约 3 年之后,我可以证明 BLE 确实是一场噩梦。

高功率操作(适用于蓝牙经典和 BLE)正在扫描——只要您不一直扫描,保持建立连接的功耗可以忽略不计。

我强烈建议您尝试使用 P2P_CLUSTER进行附近的连接——我们完全为像您这样的 M:N 用例构建了它。

PS 和@virhonestum 一样,Nearby Connections 是一个完全离线的 API,根本不需要连接到互联网。


推荐阅读