2012-10-02 15 views
13

Wi-Fi Directは、いずれかのデバイスにSoft AP(ソフトウェアアクセスポイント)を作成することで動作することがわかりました。私はまた、多くのアンドロイドがWifi Directをサポートしていることを知っていますが、iPhoneはサポートしていません。iPhoneをAndroidのWi-Fi DirectソフトAPに接続

私の質問は、Android側でWi-Fi Directであるが、iPhone側では通常のWi-Fiであるデバイス間のWi-Fiリンクを作成することは可能ですか? AndroidのWifi DirectがソフトAPを発表するところで、iPhoneは通常のAPと見分けがつかず、関連付けることができます。

ルータAPが利用できない荒野にいるとします。また、どちらのユーザーもテザリング計画を持っていません。

このリンクは、バンプのようなアプリでファイルを転送するために使用されます。

+0

greate考えています....お待ちしています... –

+0

私はこれが可能だとは思わない、少なくともセットアップしないでモバイルホットスポット –

+0

関連する質問:http://stackoverflow.com/questions/9799804/is-wi-fi-direct-connection-possible-within-ios-devices-and-among-wifi-direct-ena – AlcubierreDrive

答えて

7

携帯電話に応じて、携帯電話のホットスポットとしてAndroid携帯を設定して、iPhoneに接続することができます。そこから、データ転送を行うアプリケーション固有のものになります。

ただし、Androids WiFi-Directライブラリを使用することもできます。その場合は、Androidの携帯電話を設定して「グループオーナー」を作成します。これは基本的にポータブルホットスポットと同じです。チェックアウト:私はあなたが始めるのに役立つためのコード例をあげる

http://developer.android.com/guide/topics/connectivity/wifip2p.html

public class WifiDirectAPtestActivity extends Activity 
{ 
private WifiP2pManager manager; 
private boolean isWifiP2pEnabled = false; 
private boolean retryChannel = false; 

private final IntentFilter intentFilter = new IntentFilter(); 
private Channel channel; 
private BroadcastReceiver receiver = null; 

public void setIsWifiP2pEnabled(boolean isWifiP2pEnabled) { 
    this.isWifiP2pEnabled = isWifiP2pEnabled; 
} 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
// add necessary intent values to be matched. 

    intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION); 
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION); 
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION); 
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION); 

    manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); 
    channel = manager.initialize(this, getMainLooper(), null); 
} 
/** register the BroadcastReceiver with the intent values to be matched */ 
@Override 
public void onResume() { 
    super.onResume(); 
    receiver = new WiFiDirectBroadcastReceiver(manager, channel, this); 
    registerReceiver(receiver, intentFilter); 
    createGroup(); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    unregisterReceiver(receiver); 
    manager.removeGroup(channel, new ActionListener() { 

     @Override 
     public void onFailure(int reasonCode) { 
      Log.d("WifiDirectAptestActivity", "Disconnect failed. Reason :" + reasonCode); 

     } 

     @Override 
     public void onSuccess() { 
      Log.d("WifiDirectAptestActivity", "Should have been sucessfully removed"); 
     } 

    }); 
} 
public void createGroup() 
{ 
    manager.createGroup(channel, new ActionListener() { 

     @Override 
     public void onSuccess() { 
      // WiFiDirectBroadcastReceiver will notify us. Ignore for now. 
      Log.d("WifiDirectAPtestActivity", "Group creating request successfully send"); 
     } 

     @Override 
     public void onFailure(int reason) { 
      Toast.makeText(WifiDirectAPtestActivity.this, "Connect failed. Retry.", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

はまた、あなたは、WiFiダイレクトデモを見て、放送受信機が必要になりますし、それはあなたに明確にする必要があります。

なお、ラインmanager.createGroup(チャネル、新しいのActionListener()は、関心のコードラインがある、それは実際にポータブルホットスポットなどのデバイスを設定し、このラインである。これは、物事を明確に

希望、私はドン」

+0

私はiPhoneを接続するための私の使用例のために動作するようにあなたのサンプルコードを取得しようとします。D – AlcubierreDrive

+0

重要なのは、 "manager.createGroup(channel、new ActionListener(){logging code}"という重要な行のようですね、回答者の行を明示的にハイライトして読者がwadeする必要はないかもしれません – AlcubierreDrive

+0

はい、申し訳ありませんが、私はそれをしていたと思います。あなたのプロジェクトに幸運を!:) –

関連する問題