Подключите два телефона Android с Wi-Fi (без ноутбука или точки доступа) и отправьте файл - PullRequest
23 голосов
/ 13 мая 2011

Можно ли подключить два телефона Android по Wi-Fi, не используя Bluetooth / GSM / CDMA / IR?Кроме того, нет ноутбука или точек доступа Wi-Fi или маршрутизаторов Wi-Fi.

Я думаю, что на обоих телефонах можно создать SSID, выполнить статическую настройку IP-адресов.Будет ли Android подключаться к другому Android Wi-Fi?

Если они будут подключены, как я могу отправить файл с одного телефона на второй?Есть ли ftp-клиент и сервер?или я могу ssh на другой телефон?Или телефон / netcat?Может быть, http?

Ответы [ 4 ]

19 голосов
/ 13 мая 2011

Это называется ad hoc network , и его спрашивали раньше:

Может ли Android создавать одноранговые сети ad-hoc?

Android Wifi прямое множественное подключение ad-hoc

Возможности подключения Android ad-hoc / точки доступа

Обновление:

Краткий ответ: ad hoc еще не поддерживается на Android, поэтому это не будет работать.

Вы можете использовать Bluetooth для соединения двух телефонов Android в режиме p2p.

Обновление 2:

Прямое соединение между устройствами через Wi-Fi поддерживается в API 14 в Android 4.0 ICS в пакете android.net.wifi.p2p .Вы можете проверить работоспособность устройств через FEATURE_WIFI_DIRECT .

3 голосов
/ 24 ноября 2012

Это на самом деле возможно с SDK V 14 .Как документы состояние:

  1. Создание приемника вещания для прямых подключений Wi-Fi
  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" />
1 голос
/ 09 сентября 2013

Если вы просто хотите использовать эту функцию и не реализовывать ее в собственном приложении, взгляните на такие приложения, как Superbeam , Send! или Fast FileТрансфер, в котором в основном используется WiFi direct.

Вот несколько ссылок.

0 голосов
/ 26 сентября 2013

Попробуйте подключиться через FTPDroid и Turbo Client по Wi-Fi.Либо так, либо настройте VPN и подключите все свои устройства удаленно через SSH, FTP и / или SFTP.

...