web-dev-qa-db-ja.com

2つのAndroid wi-fiを備えた電話(ラップトップまたはアクセスポイントなし))を接続し、ファイルを送信します

Bluetooth/GSM/CDMA/IRを使用せずに、wi-fiで2台のAndroid電話を接続できますか?また、ラップトップまたはwi-fiアクセスポイントまたはwi-fiはありませんルーター。

両方の電話機でSSIDを作成し、IPアドレスの静的構成を行うことは可能だと思います。 Android他の人に接続Android wi-fi?

それらが接続される場合、ある電話から別の電話にファイルを送信するにはどうすればよいですか? FTPクライアントとサーバーはありますか?または、他の電話にSSH接続できますか?または、telnel/netcat?たぶんhttp?

23
osgx

これは ad hoc network と呼ばれ、以前に尋ねられました:

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

Android Wifi直接複数接続アドホック

Androidアドホック/アクセスポイント接続機能

更新:

簡単な答え:アドホックはAndroidではまだサポートされていないため、これは機能しません。

Bluetoothを使用して、2台のAndroid電話をp2p方式で接続できます。

更新2:

Wifi経由のデバイス間の直接接続は、API 14でAndroid 4.0 ICSパッケージ Android.net.wifiでサポートされています.p2pFEATURE_WIFI_DIRECT を介してデバイスの機能をテストできます。

19
Peter Knego

これは、実際には 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" />
3
PearsonArtPhoto

自分のアプリにuseだけを実装したくない場合は、 Superbeam 、-のようなアプリをご覧ください Send! またはFast File Transfer。主にWiFiダイレクトを使用します。

ここにいくつかのリンクがあります。

1
Andy

WiFi経由でFTPDroidとTurbo Clientに接続してみてください。それか、VPNをセットアップして、すべてのデバイスをSSH、FTP、SFTP経由でリモート接続します。

0
jmarcosSF