বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

একটি পিয়ারের সাথে সংযোগ

একটি পিয়ারে সংযোগ স্থাপনের জন্য, একটি নতুন WifiP2pConfig অবজেক্ট তৈরী করুন, এবং যে ডিভাইসে আপনি যুক্ত হতে চান তার প্রতিনিধিত্ব করা WifiP2pDevice এর থেকে এর মধ্যে ডাটা কপি করুন।

@Override
    public void connect() {
        // Picking the first device found on the network.
        WifiP2pDevice device = peers.get(0);

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

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

            @Override
            public void onSuccess() {
                // WiFiDirectBroadcastReceiver will notify us. Ignore for now.
            }

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

WifiP2pManager.ActionListener এই খন্ডাংশে বাস্তবায়িত হয় শুধুমাত্র আপনাকে জনায় কখন শুরটা সফল বা ব্যর্থ। কানেকশন অবস্থার মধ্যে পরিবর্তন শোনার জন্য, WifiP2pManager.ConnectionInfoListener ইন্টারফেস বাস্তবায়ন করুন। এর onConnectionInfoAvailable() কলব্যাক আপনাকে জানাবে কখন কানেকশনের অবস্থা পরিবর্তন করে। একটি একক ডিভাইসে সংযুক্ত হতে যাওয়া মাল্টিপল ডিভাইসের ক্ষেত্রে যেমন, একটি গেম কিন্তু তিনজন প্লেয়ার বা একটি চ্যাট অ্যাপ) একটি ডিভাইস "মৎড়ঁঢ় ড়হিবৎ"হিসাবে বিবেচিত হবে।

@Override
    public void onConnectionInfoAvailable(final WifiP2pInfo info) {

        // InetAddress from WifiP2pInfo struct.
        InetAddress groupOwnerAddress = info.groupOwnerAddress.getHostAddress());

        // After the group negotiation, we can determine the group owner.
        if (info.groupFormed && info.isGroupOwner) {
            // Do whatever tasks are specific to the group owner.
            // One common case is creating a server thread and accepting
            // incoming connections.
        } else if (info.groupFormed) {
            // The other device acts as the client. In this case,
            // you'll want to create a client thread that connects to the group
            // owner.
        }
    }

এখন ব্রডকাস্ট রিসিভারের onReceive()পদ্ধতিতে ফিরে যান এবং সেকশন পরিবর্তন করুন যা একটি WIFI_P2P_CONNECTION_CHANGED_ACTION ইনটেন্ট শুনে থাকে। যখন এই ইনটেন্ট রিসিভ করা হয়, requestConnectionInfo() কল করুন। এটা একটি সিঙক্রোনাস কল, সুতরাং আপনি যাকে একটি প্যারামিটার হিসাবে প্রদান করেছেন সেই কানেকশন ইনফো লিসেনার দ্বারা ফলাফল রিসিভ করা হয়।

   ...
        } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {

            if (mManager == null) {
                return;
            }

            NetworkInfo networkInfo = (NetworkInfo) intent
                    .getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);

            if (networkInfo.isConnected()) {

                // We are connected with the other device, request connection
                // info to find group owner IP

                mManager.requestConnectionInfo(mChannel, connectionListener);
            }
            ...