4

3 台のタブレット PC で WI-FI Direct ネットワークを作成しようとしています。WiFi-Direct をバックグラウンド サービスとして実行し、1 つのデバイスを Autonomous GO として設定したいと考えています。Androidでこれを行う方法を教えてください。また、専用の SSID とパスフレーズを設定して、新しいデバイスがこのネットワークに追加されるたびに、アプリケーションの開始時に接続確立のために特定の ssid とパスフレーズを検索できるようにする方法を教えてください。

開発に Android API レベル 18 を使用しています ...

前もって感謝します ...

4

4 に答える 4

6

これは、自律グループ所有者が作成される方法です。つまり、次のコードを使用して、Wifi ダイレクト ネットワークのデバイスをグループ所有者として意図的に設定できます。

manager.createGroup(channel,new WifiP2pManager.ActionListener()
{
    @Override
    public void onSuccess()
    {
        Toast.makeText(WiFiDirectActivity.this, "Group Created",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onFailure(int reason)
    {}              
}); 

このコードは、ボタン クリックなどの任意のイベントで使用できます。

于 2014-03-28T09:14:43.457 に答える
2

自律グループを作成するにcreateGroup()は、マネージャーからメソッドを呼び出すだけです。ssidpassPhraseを設定するには、WifiP2pGroup クラスのsetPassphrasesetNetworkNameの隠しメソッドを呼び出す必要があります。

これを実現するには、Java リフレクションを使用します。次の例を試してください。

WifiP2pGroup現在のオブジェクトをグループ化するとします。

方法

setPassPhraseMethod=group.getClass().getMethod("setPassphrase", new Class[ {String.class});

次に、メソッドを呼び出します。

setPassPhraseMethod.invoke(group, "yourNewPassPrhase");

お役に立てば幸いです。

于 2014-10-17T08:07:08.283 に答える
2

Bluemoon10 はほぼ正しかった。評判が50必要なので、まだコメントできません:/。config.groupOwnerIntent の範囲は 1 ~ 15 で、15 がグループ所有者になる最高の意図です。2 つのデバイスが両方の GO インテント == 15 で接続しようとすると、接続呼び出しは失敗します。15 未満の GO インテント タイがある場合、デバイスはタイ ブレーカー ビットに同意し、成功します。そのため、1 つのデバイスをグループ オーナーにしたい場合は、それが唯一のデバイスであることを確認する必要があります。これは Service Discovery で行うことができます。つまり、実行中のサービスがある場合は、GO インテントをサービスのあるデバイスで 15 に、接続デバイスで 1 に設定します。接続を開始するために接続を呼び出す必要があるのは、1 つのデバイスだけです。

サービス検出チュートリアルへのリンク: http://developer.android.com/training/connect-devices-wireless/nsd-wifi-direct.html

于 2014-09-30T16:53:51.230 に答える