NFCでピアリングされた別のデバイスとWiFiダイレクト接続を確立したいとします。私の手順は次のとおりです。android - ピアを検出しないでWiFi P2Pデバイスに接続する
まず、デバイスAは独自のWiFiP2Pアドレスを取得し、NFC経由でデバイスBに送信します。
次に、デバイスBは、指定されたアドレスを使用してデバイスAとの接続を確立しようとします。
私が見たように、私はプロセスでピアを発見することに関与しませんでした。しかし、デバイスBが接続しようとすると、結果は常に失敗します(理由0、これはERRORです)。
これはデバイスの可視性に関連している可能性がありますが、わかりませんし、デバイスを表示させるコードを見つけることができません。ここで
は私のコードです:OnCreateイベントで
//NOTE: These code should be executed on Device B
//Starting WiFi Direct Transmission
//First we should establish a connection
WifiP2pConfig config = new WifiP2pConfig();
config.deviceAddress = remoteWifiP2pDevice;
//remoteWifiP2pDevice is the address of device A obtained from NFC
config.wps.setup = WpsInfo.PBC;
mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
//success logic
Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show();
if (!FILE_RECV)
{
new SendFilesTask().execute("");
}
}
@Override
public void onFailure(int reason) {
//failure logic
Toast.makeText(MainActivity.this, "failed" + reason, Toast.LENGTH_SHORT).show();
}
});
()私は
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);
mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = mManager.initialize(this, getMainLooper(), null);
mReceiver = new WiFiDirectBroadcastReceiver(mManager, mChannel, this);
を持ってWifiDirectBroadcastReceiverは、デバイスAのアドレスを取得するだけで、関連するコードがあり、空とみなすことができます。
これらの問題は何ですか?どうすれば修正できますか? ありがとうございます。
P.S.デバイスAとデバイスBを手動で接続して、コードをもう一度実行すると、成功します。