用于点对点连接的 Wi-Fi 与蓝牙

Wi-Fi vs Bluetooth for peer to peer connection

我正在 android 中为一个教育项目开发一个 p2p 应用程序,在该项目中,我想组成 android 附近学生的电话组,并在大学校园内交换传感器数据。

现在有一些注意事项:

  1. 设备将自动相互发现并在发现后连接并交换数据。
  2. 该进程运行时间很长,每天可能运行 4-8 小时。 (周期性感知数据并交换的过程)

现在可以使用蓝牙或 WiFi 组成 p2p 组(不是 WiFi Direct,考虑到手机已连接到校园 WiFi,通过 WiFi 的简单 UDP 数据包)。

在这种情况下,就可靠性、手机耗电量、可扩展性以及您可以提出的任何其他建议而言,使用蓝牙和 WiFi 的优缺点是什么。

既然你可以依赖校园 Wifi,我肯定会在我的应用程序中实施 Google Nearby APIs,因为它是为此类用例设计的...

它的工作方式回答了你的问题:它为你做了所有繁重的事情,包括选择 wifi 或蓝牙以获得更好的性能...

Google Nearby is definitely a good choice. You don't have to tackle all the problems when working with WiFi or Bluetooth directly. But Google Nearby only works when both devices are online and have their screens on. For a more critical review of Nearby have a look at http://blog.p2pkit.io/how-google-nearby-really-works-and-what-else-it-does

如果你不能接受这些限制,你应该看看其他框架,比如http://www.p2pkit.io

免责声明:我在 Uepaa 工作,为 Android 和 iOS 开发 p2pkit。

在其他答案和输入中,我会添加这个答案。

首先,在我们选择WiFi或蓝牙之前,我们需要找出这两种技术之间的区别。

我制作了比较图表,其中涵盖了您可能需要的有关项目的一些重要信息。

Note: There are different versions of Bluetooth's and WiFi, this chart is to represent the the general picture of Standard Bluetooth, Bluetooth v4 and WiFi. It is always suggested to refer to manufacture specification of each technology.

从图表中我们可以得出结论,蓝牙的功耗比 WiFi 低,但另一方面,WiFi 的带宽比蓝牙大。

范围一般只是近似值,很多因素都会影响范围,例如人体、障碍物、位置(内部或外部),如果在内部;建筑物内部使用的结构类型和材料,来自其他来源和设备的噪音等

(*) 关于可扩展性,我已经测试了 WiFi 和蓝牙 v4,这两个系统都有多达 8 个设备,其中一个是主机(组所有者、服务器)设备,另外 7 个是来宾(客户端)。见下图

关于可靠性,使用蓝牙 v4 我遇到了一些时间连接问题,但当它工作时一切都很好。

Note: Bluetooth v4 is not back compatible with older versions of Bluetooth, so if your host is Bluetooth v4 than all other clients should have Bluetooth v4 or vice versa.

所以我不会说哪个最好,但如果你需要更长的电池寿命和轻型数据通信,那么蓝牙就是一种方式。不管是蓝牙还是WiFi你可能都需要从蓝牙开始测试,如果你满意就保留它,否则就切换到WiFi。

如果您想构建自己的代码,可以使用我之前用于另一所大学研究的代码示例 project. It is based on 8 phones (host and client) as seen in the figure above, we collected sensor information and send it to host phone using Bluetooth 4 connection. The source code we used for that can be found here。同一项目有 WiFi 和其他类型的连接。

Android 官方 google 文档有一些关于 WiFi 点对点连接的信息和代码示例,您也可以参考 code 的示例。

关于收集您的传感器数据并将其发送到一台设备。您可以添加一种开始收集传感器或任何数据的方法,并在成功建立连接后开始将其发送到其他设备。

正如其他人所建议的那样,https://developers.google.com/nearby 也是一个可行的方法。