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

একটি ডিভাইসের নেটওযার্ক কানেকশন চেক করা

একটি ডিভাইসের বিভিন্ন ধরনের নেটওয়ার্ক কানেকশন টাইপ থাকে। এই অনুশীলনী হয় ওয়াই-ফাই বা মোবাইল কানেকশনের উপর ফোকাস করে। সম্ভাব্য নেটওয়ার্কের ধরনের পূর্ণ তালিকার জন্য, ConnectivityManager দেখুন।

ওয়াই-ফাই সাধারনভাবে গতিশীল। মোবাইল ডাটাও মাঝে মাঝে পরিমাপ হয় যা ব্যয়বহুল হতে পারে। অ্যাপের জন্য একটি সাধারণ কৌশল হচ্ছে শুধু মাত্র বড় ডাটা ধারন করা যদি একটি ওয়াই-ফাই থেকে থাকে।

নেটওয়ার্ক অপারেশন সম্পাদন করার পূর্বে, নেটওয়ার্ক কানেটিভিটির অবস্থা চেক করাটা একটি ভালো চর্চা। অন্যান্য বিষয়ের মধ্যে এটা আপনার অ্যাপকে অসচেতনভাবে ভুল রেডিও ব্যবহার করা থেকে বিরত রাখে। যদি একটি নেটওয়ার্ক কানেকশন না থাকে, আপনার অ্যাপলিকেশনের উচিত সাবলিলভাবে রেসপন্স করা। নেটওয়ার্ক কানেকশন চেক করতে, আপনি সাধারণভাবে নীচের ক্লাসগুলো ব্যবহার করতে পারেন।

  • ConnectivityManager: নেটওয়ার্ক কানেকটিভিটির অবস্থান সম্পর্কে অনুসন্ধানের উত্তর দেয়। এটা অ্যাপলিকেশনকে জানায় যখন নেটওয়ার্ক কানেকশন পরিবর্তন করা হয়।

  • NetworkInfo: একটি প্রদত্ত টাইপের (বর্তমানে হয় মোবাইল বা ওয়াই-ফাই) একটি নেটওয়ার্ক ইন্টারফেসের অবস্থা আলোচনা করে।

এই চিত্রটি ওয়াই-ফাই এবং মোবাইলের জন্য নেটওয়ার্ক কানেকটিভিটি পরীক্ষা করে। এটা মনস্থির করে এই নেটওয়ার্ক ইন্টারফেস আছে কিনা ( এটা হচ্ছে, নেটওয়ার্ক কানেকটিভিটি সম্ভব কিনা) এবং/বা এটা সযুক্ত আছে কিনা (এটা হচ্ছে নেটওয়ার্ক কানেকটিভিটি বিদ্যমান আছে কিনা এবং যদি সকেট প্রতিষ্ঠা করা সম্ভব হয় এবং ডাটা পাস করা):

private static final String DEBUG_TAG = "NetworkStatusExample";
...
ConnectivityManager connMgr = (ConnectivityManager)
        getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
boolean isWifiConn = networkInfo.isConnected();
networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isMobileConn = networkInfo.isConnected();
Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);
Log.d(DEBUG_TAG, "Mobile connected: " + isMobileConn);

উল্লেখ্য যে একটি নেটওয়ার্ক আছে কিনা তার উপর ভিত্তি করে আপনার সিদ্ধান্ত তৈরী করা উচিত নয়। নেটওয়ার্ক অপারেশন সম্পাদন করার পূর্বে আপনার উচিত সবসময় isConnected() চেক করা, যেহেতু isConnected() ফ্ল্যাকি মোবাইল নেটওয়ার্ক, এয়ারপ্লেন মোড এবং সিমিত ব্যাকগ্রাউন্ড ডাটা চালিত করে।

একটি নেটওয়ার্ক ইন্টারফেস আছে কিনা তা চেক করতে নিম্নোক্ত চিত্রটির মতো আরও সংক্ষিপ্ত পথ। পদ্ধতি getActiveNetworkInfo() একটি NetworkInfo ইনসটেন্স প্রথম খুজে পাওয়া সংযুক্ত প্রতিনিধিত্ব করা নেটওয়ার্ক ইন্টারফেস ফেরত দেয় , বা আর যদি কোন ইন্টারফেস খুজে পাওয়া না যায় তাহলে হঁষষ ফেরত দেয় ( বোঝায় যে ইন্টারনেট সংযোগ পাওয়া যাচ্ছে না ):

public boolean isOnline() {
    ConnectivityManager connMgr = (ConnectivityManager)
            getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    return (networkInfo != null && networkInfo.isConnected());
}

আরও সুন্দর অবস্থা অনুসন্ধান করতে আপনি NetworkInfo.DetailedState বব্যবহার করতে পারেন, কিন্তু তার খুব কমই প্রয়োজন ঘটে।