• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Wifi direct p2p connection between two devices

Florina

Lurker
Mar 18, 2017
1
1
I am trying to connect two phones via wifi direct.Both phones support wifi direct. Discovery of peers works fine,I choose device with which I want to connect and broadcast receives WIFI_P2P_THIS_DEVICE_CHANGED_ACTION and device status is Connected for both devices.After a few seconds broadcast receieves again WIFI_P2P_THIS_DEVICE_CHANGED_ACTION, because one device is disconnected.Just one device will call onConnectionInfoAvailable. I can't figure out why this is happening.Can someone help me please?

This is my code for connection:
Java:
WifiP2pConfig config = new WifiP2pConfig();
    config.deviceAddress = device.deviceAddress;
    config.wps.setup = WpsInfo.PBC;

    mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() {
        @Override
        public void onSuccess() {
            Log.i(TAG, "Connect started success");
        }

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

and this is inside BroadcastReciever

Java:
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) {
            mActivity.setIsWifiP2pEnabled(true);
        } else {
            mActivity.setIsWifiP2pEnabled(false);
        }
    } else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
        if (mManager != null) {
            mManager.requestPeers(mChannel, (WifiP2pManager.PeerListListener) mActivity.getFragmentManager()
                    .findFragmentByTag("services"));
        }
        Log.d(MainActivity.TAG, "P2P peers changed");

    } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
        if (mManager == null) {
            return;
        }
        NetworkInfo networkInfo = intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);
        Log.i(MainActivity.TAG,"Network info:"+networkInfo.toString());
        if (networkInfo.isConnected()) {
            // We are connected with the other device, request connection
            // info to find group owner IP
            mManager.requestConnectionInfo(mChannel,mActivity);
        }
    } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
        WifiP2pDevice device = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE);
        Log.d(MainActivity.TAG, "Device status -" + device.status+device.deviceName);
        switch (device.status) {
            case WifiP2pDevice.CONNECTED:
                Log.v(MainActivity.TAG,"mConnected");
                break;
            case WifiP2pDevice.INVITED:
                Log.v(MainActivity.TAG,"mInvited");
                break;
            case WifiP2pDevice.FAILED:
                Log.v(MainActivity.TAG,"mFailed");
                break;
            case WifiP2pDevice.AVAILABLE:
                Log.v(MainActivity.TAG,"mAvailable");
                break;
            case WifiP2pDevice.UNAVAILABLE:
                Log.v(MainActivity.TAG,"mUnavailable");
            default:
                Log.v(MainActivity.TAG,"mUnknown");
                break;
        }
    }
 
  • Like
Reactions: sweetndreemy73

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones