我想要使用Android设备内置的Wi-Fi热点来建立本地网络连接。 有办法实现吗? 如何在两个设备之间进行通信?
编辑: 我希望通过编程实现。这样我就可以在设备之间传输我的自己的数据。
我想要使用Android设备内置的Wi-Fi热点来建立本地网络连接。 有办法实现吗? 如何在两个设备之间进行通信?
编辑: 我希望通过编程实现。这样我就可以在设备之间传输我的自己的数据。
我以前从未做过这个,所以我的答案都是理论上的。
我认为你需要做的是将一个设备声明为服务器,并手动启动其热点并设置已知名称。
从代码中启动/停止内置Wi-Fi / USB共享?(根据此问题,您无法通过编程方式启动热点)。
一旦您设置好了热点,就可以启动服务器应用程序并等待传入连接。 服务器应用程序可以显示IP地址或主机名。
在客户端上,您可以进行简单的检查并查看热点名称是否存在,如果找到它,则自动连接到它。 请参见此链接以连接到网络:
至于您的第二个问题,如何通信-您需要在设备之间建立连接。 为此,您需要服务器的IP地址。 最简单的方法是在服务器UI上显示IP地址,然后在客户端上手动输入并按连接。 然后它会在已知端口上与服务器建立连接,您可以在客户端和服务器之间发送消息。
供参考,我发现NanoHttpd,这是Android的Web服务器。 它使用ServerSocket来侦听传入连接。
可能的答案:
ICS和非Root设备之前
没有办法通过wifi连接到设备。没有相应的API。蓝牙是你最好的选择或者需要用户交互。
ICS和Root设备之前
我不确定是否有人已经破解了代码,但当我尝试自动连接到wifi时,我注意到:
使用ICS
使用ICS有一种新的通过wifi连接设备的方式,叫做Wi-Fi Direct。这里有一些演示的链接。
你是指像点对点(p2p)那样的无需服务器的wifi设备之间的通信吗?如果是,那么它就是wifi direct,在ICS中得到支持,请查看http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html。
在ICS之前,没有标准的Android API用于wifi direct,尽管Galaxy S2有wifi direct,但它使用专有的API,第三方开发人员无法使用。
我不知道如何以编程方式创建WiFi LAN,但你可以手动创建WiFi LAN,然后按照brianestey所说的进行Java TCP/UDP程序开发。
至于你的第二个问题,如何通信 - 你需要在设备之间建立连接。为此,你需要服务器的IP地址。最简单的方法是在服务器UI上显示IP地址,然后在客户端手动输入它并按连接按钮。然后它将在已知端口上与服务器建立连接,你就可以在客户端和服务器之间发送消息。
对于手动连接,请按以下步骤操作:
从任意一部手机中获取设置/无线和网络/便携式Wi-Fi热点设置
创建新的热点并从那里打开Wi-Fi便携式热点
将所有其他设备连接到该热点,包括你的电脑
你将以编程方式获取每个设备的IP地址(包括PC,但我不确定)