我想使用 Android 设备上的内置 Wi-Fi 热点启动本地网络连接。有没有办法实现它?以及如何在两个设备之间进行通信?
编辑:我想以编程方式进行。然后我可以在设备之间传输我自己的数据。
我想使用 Android 设备上的内置 Wi-Fi 热点启动本地网络连接。有没有办法实现它?以及如何在两个设备之间进行通信?
编辑:我想以编程方式进行。然后我可以在设备之间传输我自己的数据。
I haven't done this before, so my answer is all theoretical.
I think what you need to do is declare one device the server and start its hotspot manually with a known name.
Start / stop built-in Wi-Fi / USB tethering from code? (According to this question, you can't start hotspot programatically).
Once you have the hotspot set up, you start up the server app and wait for incoming connections. The server app can show you the ip address or hostname.
On the clients, you can do a simple check and see if the hotspot name is around and automatically connect to it if you find it. See this link for connecting to a network:
Using WifiManager to connect to a network
As for your second question, how to communicate - you need to establish a connection between the devices. For this, you need the ip address of the server. The simplest thing to do would be to show the ip address on the server UI and then manually enter it on the clients and press connect. It would then establish a connection to the server on a known port and you can send messages between client and server.
For reference, I found NanoHttpd, which is a webserver for Android. It uses ServerSocket to listen for incoming connections.
可能的答案:
在 ICS 和无根设备之前
您无法通过 wifi 连接到设备。没有 API 可做。蓝牙是您的最佳选择或用户交互。
在 ICS 和 root 设备之前
我不确定是否有人破解了代码,但是当我尝试自动连接到 wifi 热点时,我注意到:
使用 ICS
有了 ICS,就有了一种通过 wifi 连接设备的新方法,称为Wi-Fi Direct。这是一些演示的链接。
您的意思是在没有任何服务器(如 p2p)的情况下启用 wifi 的设备之间的通信?如果是这样,它在 ICS 中支持的 wifi direct 看看这个http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html
在 ICS 之前,没有用于 wifi direct 的标准 android API,虽然 Galaxy S2 有 wifi direct,但它使用了 3rd 方开发人员无法使用的专有 API。
如果您要为每个单独的终端(设备)开发自己的应用程序,那么我认为套接字编程可以解决问题。
是的,android 支持 socket 编程,就像 java socket 编程一样。
第一个 google java socket 编程教程,然后您可以在 android 中使用相同的知识。
还要记住在清单中包含使用互联网许可,实际上那是我很长时间吃掉我的大脑的东西:)
我不知道以编程方式创建 wify LAN,但您可以手动创建 wify LAN,然后您可以按照 brianestey 所说的那样执行 java tcp/udp 程序
“至于你的第二个问题,如何通信 - 你需要在设备之间建立连接。为此,你需要服务器的 IP 地址。最简单的做法是在服务器 UI 上显示 IP 地址和“
对于手动连接,请按照步骤
从任何一部手机进行设置/无线和网络/便携式 wi-fi 热点设置
创建新热点并从那里打开 wi-fi 便携式热点
将所有其他设备连接到该热点,包括您的电脑
您将以编程方式获得每个设备的 ip(包括 pc,但我不知道)