1

Android 独自の Wi-Fi ダイレクト インターフェイスを使用して、デバイスを別のデバイスに直接ペアリングしようとしています。

ただし、同様のデバイスから受信したグループの招待を受け入れるのに問題があります。

私はこのエラーを得ることができたクライアントから:

09-16 13:42:07.547: E/WifiP2pService(511): Unhandled message { what=147487 when=-1ms     obj=network: null
09-16 13:42:07.547: E/WifiP2pService(511):  isGO: false
09-16 13:42:07.547: E/WifiP2pService(511):  GO: Device: 
09-16 13:42:07.547: E/WifiP2pService(511):  deviceAddress: *CENSORED*
09-16 13:42:07.547: E/WifiP2pService(511):  primary type: null
09-16 13:42:07.547: E/WifiP2pService(511):  secondary type: null
09-16 13:42:07.547: E/WifiP2pService(511):  wps: 0
09-16 13:42:07.547: E/WifiP2pService(511):  grpcapab: 0
09-16 13:42:07.547: E/WifiP2pService(511):  devcapab: 0
09-16 13:42:07.547: E/WifiP2pService(511):  status: 4
09-16 13:42:07.547: E/WifiP2pService(511):  wfdInfo: null
09-16 13:42:07.547: E/WifiP2pService(511):  Client: Device: 
09-16 13:42:07.547: E/WifiP2pService(511):  deviceAddress: *CENSORED*
09-16 13:42:07.547: E/WifiP2pService(511):  primary type: null
09-16 13:42:07.547: E/WifiP2pService(511):  secondary type: null
09-16 13:42:07.547: E/WifiP2pService(511):  wps: 0
09-16 13:42:07.547: E/WifiP2pService(511):  grpcapab: 0
09-16 13:42:07.547: E/WifiP2pService(511):  devcapab: 0
09-16 13:42:07.547: E/WifiP2pService(511):  status: 4
09-16 13:42:07.547: E/WifiP2pService(511):  wfdInfo: null
09-16 13:42:07.547: E/WifiP2pService(511):  interface: null
09-16 13:42:07.547: E/WifiP2pService(511):  networkId: -2 }

GO (グループ所有者) は、次のコードを使用して接続します。

WifiP2pConfig config = new WifiP2pConfig();
                    config.deviceAddress = device.deviceAddress;
                    config.groupOwnerIntent = 15;
                    config.wps.setup = WpsInfo.PBC;

                mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() {

                    @Override
                    public void onSuccess() {

                        new FetchDeviceInfo().execute(device);

                    }

                    @Override
                    public void onFailure(int reason) {
                        // TODO Auto-generated method stub
                        Toast.makeText(getBaseContext(), "Failure to connect: " + reason, Toast.LENGTH_SHORT).show();


                    }
                });

そして、実行中の Asynctask は、クライアントの IP アドレスをフェッチするだけです。

4

1 に答える 1

1

両方のデバイスがグループ オーナーになりたい場合、グループ オーナーをネゴシエートするためのプロトコルは失敗します (config.groupOwnerIntent == 15)。GO インテントが同じで成功する場合、下にあるものはすべてタイブレーカー ビットを持ちます。

(コードを使用して) 2 つのデバイスを接続する方法は次のとおりです。

WifiP2pConfig config = new WifiP2pConfig();
    config.deviceAddress = device.deviceAddress;
    config.wps.setup = WpsInfo.PBC;
    Random r = new Random();
    config.groupOwnerIntent = r.nextInt(14);

    mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() {
    ...
于 2014-09-17T18:03:06.623 に答える