ওয়াই-ফাই পিয়ার টু পিয়ার (P2P) ব্যবহার করতে, আপনার ব্রডকাস্ট ইনটেন্ট কে শোনার চেষ্টা করা প্রয়োজন যা আপনার অ্যাপলিকেশনকে বলবে যখন নির্দিষ্ট কিছু ইভেন্ট ঘটে থাকবে। আপনার অ্যাপলিকেশনকে, একটি IntentFilter শুরু করুন এবং নিচের বিষয়গুলো শুনতে এটা সেট করুন:
WIFI_P2P_STATE_CHANGED_ACTION
ওয়াই-ফাই পিয়ার টু পিয়ার (P2P) কিনা তা নির্দেশ করে
WIFI_P2P_PEERS_CHANGED_ACTION
নির্দেশ করে যে বিদ্যমান পিয়ার লিস্ট পরিবর্তন করেছে
WIFI_P2P_CONNECTION_CHANGED_ACTION
ওয়াই-ফাই পিয়ার টু পিয়ার (P2P) কানেকটিভিটি পরিবর্তন করেছে তার অবস্থান নির্দেশ করে
WIFI_P2P_THIS_DEVICE_CHANGED_ACTION
এই ডিভাইসের কনফিগারেশন ডিটেইলস পরিবর্তন করেছে নির্দেশ করে
private final IntentFilter intentFilter = new IntentFilter();
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Indicates a change in the Wi-Fi P2P status.
intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
// Indicates a change in the list of available peers.
intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
// Indicates the state of Wi-Fi P2P connectivity has changed.
intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
// Indicates this device's details have changed.
intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
...
}
onCreate()পদ্ধতির শেষে, একটি WifiP2pManager এর ইনসটেন্স পাবেন, এবং এর initialize()পদ্ধতি কল করুন। এই পদ্ধতি একটি WifiP2pManager.Channel অবজেক্ট ফেরত দেয়, যা আপনি পরবর্তীতে ওয়াই-ফাই পিয়ার টু পিয়ার (P2P) ফ্রেমওয়ার্কে আপনার অ্যাপ যুক্ত করার সময় ব্যবহার করতে পারেন।
@Override
Channel mChannel;
public void onCreate(Bundle savedInstanceState) {
....
mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = mManager.initialize(this, getMainLooper(), null);
}
এখন একটি নতুন BroadcastReceiver ক্লাস তৈরী করুন যা সিস্টেমের ওয়াই-ফাই পিয়ার টু পিয়ার (P2P) অবস্থার পরিবর্তন শুনতে ব্যবহার করতে পারবেন। onReceive()পদ্ধতির মধ্যে, উপরে লিস্ট করা প্রতিটা (P2P) অবস্থা পরিবর্তন কে চালনা করতে একটি শর্ত যুক্ত করুন।
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
// Determine if Wifi P2P mode is enabled or not, alert
// the Activity.
int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
activity.setIsWifiP2pEnabled(true);
} else {
activity.setIsWifiP2pEnabled(false);
}
} else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
// The peer list has changed! We should probably do something about
// that.
} else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
// Connection state changed! We should probably do something about
// that.
} else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
DeviceListFragment fragment = (DeviceListFragment) activity.getFragmentManager()
.findFragmentById(R.id.frag_list);
fragment.updateThisDevice((WifiP2pDevice) intent.getParcelableExtra(
WifiP2pManager.EXTRA_WIFI_P2P_DEVICE));
}
}
চুড়ান্তভাবে, ইনটেন্ট ফিল্টার এবং ব্রডকাস্ট রিসিভার রেজিস্টার করতে কোড যুক্ত করুন যখন আপনার প্রধান একটিভিটি সক্রিয় থাকে, এবং তাদের আনরেজিস্টার করুন যখন একটিভিটি পজ অবস্থায় থাকে। এটা করার সবচেয়ে ভালো স্থান হচ্ছে onResume()এবং onPause()পদ্ধতি।
/** register the BroadcastReceiver with the intent values to be matched */
@Override
public void onResume() {
super.onResume();
receiver = new WiFiDirectBroadcastReceiver(mManager, mChannel, this);
registerReceiver(receiver, intentFilter);
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(receiver);
}