web-dev-qa-db-de.com

Verbinden Sie zwei Android-Telefone mit WLAN (ohne Laptop oder Zugangspunkt) und senden Sie Dateien

Kann ich zwei Android-Telefone per WLAN verbinden, ohne Bluetooth/GSM/CDMA/IR zu verwenden? Es gibt auch keine Laptop- oder WLAN-Zugangspunkte oder WLAN-Router.

Ich denke, dass es möglich ist, einige SSID auf beiden Telefonen zu erstellen. Führen Sie eine statische Konfiguration der IP-Adressen durch. Wird Android eine Verbindung zu einem Android-WLAN herstellen?

Wenn eine Verbindung hergestellt werden soll, wie kann ich dann eine Datei von einem Telefon an das zweite senden? Gibt es einen FTP-Client und einen Server? oder kann ich ssh zu einem anderen telefon? Oder telnel/netcat? Vielleicht http?

23
osgx

Dies wird als Ad-hoc-Netzwerk bezeichnet und wurde zuvor gefragt: 

Kann Android Peer-to-Peer-Ad-hoc-Netzwerke betreiben?

Android Wifi direkte Mehrfachverbindung ad-hoc

Android-Ad-hoc Zugriffspunktverbindungsfunktionen - /

Update:

Kurze Antwort: Ad-hoc wird auf Android noch nicht unterstützt, sodass dies nicht funktioniert. 

Sie können Bluetooth verwenden, um zwei Android-Telefone auf eine P2P-Art zu verbinden. 

Update 2:

Die direkte Verbindung von Gerät zu Gerät über WLAN wird unter API 14 in Android 4.0 ICS im Paket Android.net.wifi.p2p unterstützt. Sie können die Gerätefähigkeit über FEATURE_WIFI_DIRECT testen.

19
Peter Knego

Dies ist eigentlich mit SDK V 14 möglich. Als die Dokumente Stand:

  1. Erstellen Sie einen Rundfunkempfänger für Wi-Fi Direct Intents
  2. Richten Sie Berechtigungen ein
  3. Richten Sie den Empfänger in onCreate () ein
  4. Richten Sie einen Intent-Filter ein
  5. Registrieren Sie den Empfänger in onResume ()

Ich habe einige der folgenden Code-Konstrukte hinzugefügt, um dies zu ermöglichen. Lesen Sie jedoch die Dokumentation für weitere Informationen.

Hier ist ein Beispiel eines Broadcast-Empfängers

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
        }
    }
}

Berechtigungen:

<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" />
3
PearsonArtPhoto

Wenn Sie nur use dieses Feature verwenden möchten und es nicht in einer eigenen App implementieren möchten, schauen Sie sich Apps wie Superbeam , Send an! oder Fast File Transfer, die hauptsächlich WiFi direkt verwenden.

Hier sind einige Links. 

1
Andy

Versuchen Sie, eine Verbindung mit FTPDroid und Turbo Client über WLAN herzustellen. Entweder das oder Sie können ein VPN einrichten und alle Ihre Geräte über SSH, FTP und/oder SFTP remote verbinden.

0
jmarcosSF