21

是否可以在不使用蓝牙/GSM/CDMA/IR 的情况下通过 wi-fi 连接两部安卓手机?此外,没有任何笔记本电脑或 Wi-Fi 接入点或 Wi-Fi 路由器。

我认为,可以在两部手机上创建一些 SSID,对 IP 地址进行静态配置。android会连接到另一个android wi-fi吗?

如果它们将被连接,我如何将文件从一部手机发送到第二部?有 ftp 客户端和服务器吗?或者我可以通过 ssh 连接到其他手机吗?还是电话/网络猫?也许是 http ?

4

4 回答 4

18

这称为ad hoc 网络,之前已经问过:

Android 可以做点对点的 ad-hoc 网络吗?

Android Wifi 直接多连接 ad-hoc

Android ad-hoc/接入点连接能力

更新:

简短回答:Android 尚不支持 ad hoc,因此这行不通。

您可以使用蓝牙以 p2p 方式连接两部 Android 手机。

更新 2:

android.net.wifi.p2p包中的 Android 4.0 ICS 中的 API 14 支持通过 Wifi 的直接设备到设备连接。您可以通过FEATURE_WIFI_DIRECT测试设备功能。

于 2011-05-13T15:09:16.600 回答
3

这实际上可以通过SDK V 14实现。正如文件所述

  1. 为 Wi-Fi Direct Intents 创建广播接收器
  2. 设置权限
  3. 在 onCreate() 中设置接收器
  4. 设置意图过滤器
  5. 在 onResume() 中注册接收者

我在下面包含了一些关键代码结构来实现这一点。但请阅读文档以获取更多信息。

这是一个示例广播接收器

public class WiFiDirectBroadcastReceiver extends BroadcastReceiver {

    private WifiP2pManager manager;
    private Channel channel;
    private MyWiFiActivity activity;

    public WiFiDirectBroadcastReceiver(WifiP2pManager manager, Channel channel,
            MyWifiActivity activity) {
        super();
        this.manager = manager;
        this.channel = channel;
        this.activity = activity;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
            int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
            if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
                // Wifi Direct is enabled
            } else {
                // Wi-Fi Direct is not enabled
            }
        } else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
            // Call WifiP2pManager.requestPeers() to get a list of current peers
        } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
            // Respond to new connection or disconnections
        } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
            // Respond to this device's wifi state changing
        }
    }
}

权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2012-11-24T15:00:32.907 回答
1

如果您只想使用该功能而不是在自己的应用程序中实现它,请查看SuperbeamSend 等应用程序!或快速文件传输,主要使用 WiFi 直连。

这里有一些链接。

于 2013-09-09T14:17:36.710 回答
0

尝试通过 wifi 连接 FTPDroid 和 Turbo Client。要么这样,要么设置 VPN 并通过 SSH、FTP 和/或 SFTP 远程连接所有设备。

于 2013-09-26T18:19:18.227 回答