2011-05-13 56 views
22

是否有可能通过Wi-Fi连接两个Android手机,而无需使用蓝牙/ GSM/CDMA/IR?此外,没有任何笔记本电脑或Wi-Fi接入点或Wi-Fi路由器。连接两个安卓手机与Wi-Fi(没有笔记本电脑或接入点),并发送文件

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

如果他们将被连接,我怎样才能从一个手机发送文件到第二个?有没有一个FTP客户端和服务器?或我可以ssh到其他电话?或者telnel/netcat?也许http?

+2

[Android可以做点对点ad-hoc网络吗?](http://stackoverflow.com/questions/1932150/can-android-do-peer-to-peer-ad-hoc-网络) – 2011-05-13 15:09:47

回答

18

这就是所谓的ad hoc network之前一直问:

Can Android do peer-to-peer ad-hoc networking?

Android Wifi direct multiple connection ad-hoc

Android ad-hoc/access point connection capabilities

更新:

简短的回答:特设尚未supporte在Android上,所以这是行不通的。

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

更新2:

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

+0

谢谢!你可以评论Q的第二部分 - 关于如何发送文件后特设配置? – osgx 2011-05-13 15:10:25

+0

目前ad hoc无法配置 – 2011-05-13 15:11:58

+0

蓝牙太慢而且太短。特设在gui中不被支持,但我可以手工完成(在j-b-ed手机上编辑配置文件) – osgx 2011-05-13 15:19:24

3

这实际上可能与SDK V 14。作为the documents状态:

  1. 创建的Wi-Fi Direct的意图广播接收机
  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" /> 
0

尝试用FTPDroid和Turbo客户端通过WiFi连接。要么,要么建立VPN并通过SSH,FTP和/或SFTP远程连接所有设备。

相关问题