这是我的问题:我有三个或更多需要相互通信的Android设备。他们总是彼此靠近,但是不幸的是我有一些限制。
幸运的是,我只需要支持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热点,既利用了各自的优势,又避免了各自的弱点。
据我了解,它可以依靠非功耗密集型通信方法吗?
这是我所有的问题:
非常感谢您的帮助
答案 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