如何通过Android上的Wi-Fi热点以编程方式启动本地网络连接?

时间:2011-11-25 09:49:19

标签: android android-wifi local-network

我想使用Android设备上的内置Wi-Fi热点启动本地网络连接。 有办法实现吗? 以及如何在两个设备之间进行通信?

编辑: 我想以编程方式进行。然后我可以在设备之间传输我自己的数据。

6 个答案:

答案 0 :(得分:5)

我之前没有这样做,所以我的答案都是理论上的。

我认为您需要做的是将一台设备声明为服务器并使用已知名称手动启动其热点。

Start / stop built-in Wi-Fi / USB tethering from code?(根据这个问题,你无法以编程方式启动热点)。

设置热点后,启动服务器应用程序并等待传入​​连接。服务器应用程序可以显示IP地址或主机名。

在客户端上,您可以进行简单检查,查看热点名称是否存在,如果找到则自动连接到该名称。请参阅此链接以连接到网络:

Using WifiManager to connect to a network

至于你的第二个问题,如何沟通 - 你需要在设备之间建立连接。为此,您需要服务器的IP地址。最简单的方法是在服务器UI上显示IP地址,然后在客户端上手动输入,然后按连接。然后,它将在已知端口上建立与服务器的连接,您可以在客户端和服务器之间发送消息。

作为参考,我找到了NanoHttpd,这是Android的网络服务器。它使用ServerSocket来监听传入的连接。

答案 1 :(得分:3)

可能的答案:

在ICS和非root设备之前

您无法通过wifi连接到设备。没有API要做。蓝牙是您的最佳选择或用户互动。

在ICS和root设备之前

我不确定是否有人攻击了代码,但当我尝试自动连接到wifi点时,我注意到了:

  • api隐藏在SDK中。
  • 执行连接的方法检查请求它的线程。如果它不是os线程,则抛出异常。

使用ICS

使用ICS,有一种通过wifi连接设备的新方法Wi-Fi Direct。 这是一个带有一些演示的link

答案 2 :(得分:0)

这将有助于启动。 link1

答案 3 :(得分:0)

如果您要为每个终端(设备)开发自己的应用程序,那么我认为您的套接字编程将起到作用。

是的,android支持socket编程,就像java socket编程一样。

第一个谷歌java套接字编程教程然后你可以在android中使用相同的知识。

还要记得在清单中包含使用互联网权限,实际上那是长时间吃掉我的大脑的东西:)

答案 4 :(得分:0)

你的意思是启用wifi的设备之间没有像p2p这样的服务器之间的通信?如果是这样,ICS支持的wifi直接检查http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html

在ICS之前没有用于wifi直接的标准Android API,虽然Galaxy S2有wifi直接它使用第三方开发人员无法使用的专有API。

答案 5 :(得分:0)

我不知道在程序上创建wify局域网,但是你可以手动创建wify局域网,然后你可以像brianestey那样做java tcp / udp程序

“至于你的第二个问题,如何沟通 - 你需要在设备之间建立连接。为此,你需要服务器的IP地址。最简单的办法就是在网上显示ip地址服务器UI然后在客户端上手动输入它并按下连接。然后它将在已知端口上建立与服务器的连接,您可以在客户端和服务器之间发送消息。“

用于手动连接,请按照步骤

进行操作
  • 从任何一部手机中获取设置/无线及网络/便携式Wi-Fi热点设置

  • 创建新的热点并从那里打开wi-fi便携式热点

  • 将所有其他设备连接到该热点,包括您的电脑

  • 你会在程序上得到每个设备的ip(包括pc,但我不知道)