安卓Wifi直连多重连接Ad-hoc

10

我想在多个Android设备之间创建一个adhoc网络,但是找不到相关文档。

我认为Wifi Direct可以实现我想要的功能,但是是否可能在一台设备上有多个连接?我看到我们可以让某个设备充当访问点并与多个设备通信,但是我们能否从一个客户端设备与两个访问点设备通信?

例如,我有3个设备:A -> B -> C

“A”设备需要与“C”设备通信,但他们相隔太远,所以我想在A和B之间建立adhoc wifi direct连接,在B和C之间建立adhoc wifi direct连接,这样A就可以与C通信。它也可以适用于多于3个设备。

谢谢!


我正在尝试在同一场景A->B->C中连接三个设备,并且A想通过B向C发送消息。您能否在Android上使用WiFi Direct实现这一点? - user340
8个回答


2

我已经花了一个月的时间研究如何在Android手机上建立特定通信。我试图创建一个可以不需要3G或访问点就能工作的应用程序,主要想法是让客户在近距离内传输语音或数据。

有些人已经实现了与几乎相同主题相关的基本系统。它基本上是通过Wi-Fi访问点运作的,所以您需要一个访问点才能建立连接。虽然这不是我想要的,但对其他人可能有帮助。您可能需要联系他们以获取更多详细信息。

https://sites.google.com/site/androidwalkietalkie/home


1

目前只有Galaxy S2支持Wi-Fi Direct功能


1
Wifi Direct支持在单个接口上同时拥有主机和客户端功能。这意味着设备将充当AP,允许其他设备作为客户端连接到它,并且还可以作为客户端连接到另一个AP。并且可以通过在接口之间传输Internet流量来共享Internet连接。 然而,Android上当前的Wifi Direct实现是针对手机的,不是Android SDK的一部分。因此,他们是否支持并发性并不清楚。这种能力不受硬件限制。

1

The Serval Project,部分基于WiFi Tether,是我找到的唯一具有此功能的地方。它仍处于alpha阶段,但似乎是该领域的先驱。The wiki比上面链接的主项目页面更有用,提供了安装说明和一些文档。

Serval可能适合您的需求,也可能不适合,但我认为应该指出Android上的adhoc网络并非不可能。不过,最好等待谷歌实现它作为标准API(如果您相信他们会这样做的话 :))。


1

Android目前不支持adhoc WiFi - 抱歉!

更新(2019年):Android已经支持WiFi Direct一段时间了,但是这个答案还没有更新。

您的情况可以实现。只要B(组所有者)在A和C的范围内,A就能够连接到C。

有关更多信息,请参阅Android的开发人员文档:

https://developer.android.com/guide/topics/connectivity/wifip2p


2
冰淇淋三明治现在支持WiFi Direct。 - Didier A.
WiFi Direct绝不是一个adhoc网络。您可以使用类似WiFi Direct的东西构建自己的网络,但您将无法直接获得adhoc功能。 - lostintranslation
@CommonsWare现在是否可以使用Wi-Fi P2P进行链式通信?https://developer.android.com/guide/topics/connectivity/wifip2p.html - pathe.kiran
@pathe.kiran:我不知道你如何定义“链式通信”。如果你指的是问题中的A->B->C场景,理论上WiFi P2P可能会有所帮助。但我怀疑在许多情况下,B可以与A和C联系,但A和C却无法相互联系。 - CommonsWare
@CommonsWare 假设所有设备都拥有彼此范围内的设备名称列表。对于链式通信,设备 A 想要发送数据给在 B 范围内的设备 C。A 将广播消息,因此 B 将创建热点,然后设备 A 将向 B 发送他的消息(数据 + 目标设备名称),一旦 B 收到数据,它将关闭它的热点并将广播消息,这样设备 C 将知道设备 B 有一些消息。所以 C 将创建热点,然后 B 将消息发送给 C。 - pathe.kiran
显示剩余2条评论

1

安卓关闭了特设 Wi-Fi 功能。你需要问谷歌为什么这么做。如果你有使用可自定义安卓镜像的设备,你可以打补丁让它支持此功能。或者你可以 root 你的设备并重新启用特设 Wi-Fi,网上有很多关于如何在已 root 的安卓设备上启用特设 Wi-Fi 的解决方案。这是个软件问题,我所知道的每台安卓设备硬件都支持特设 Wi-Fi。


谢谢您的回答,但即使您对设备进行了root,我想要的是否可能实现?通过B和C从A到D进行通信?A->B->C->D - Hrk
是的,但您需要设置某种形式的路由,最简单的方法是在您的应用程序内部。如果在应用程序内部传递设备之间的数据,则数据也可以从A传递到B,然后从B传递到C等。 - Andy
谢谢再次回复。您的意思是说B上可以同时连接两个Wi-Fi网络(A和C)吗? - Hrk
是的,在已经获取了 root 权限的手机上,可以使用 ad hoc 模式。 - Andy

1

你可能会对AllJoyn感兴趣。它是高通专门为安卓操作系统开发的软件开发工具包,其中包括通过创建adhoc连接实现Wi-Fi对等互联的功能。这与Wi-Fi Direct相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接