ConnectivityManager
एक ऐसा एपीआई उपलब्ध कराता है जिसकी मदद से, डिवाइस को नेटवर्क से कनेक्ट करने का अनुरोध किया जा सकता है. ऐसा डिवाइस की अलग-अलग स्थितियों के हिसाब से किया जाता है. इन स्थितियों में डिवाइस की क्षमता और डेटा ट्रांसपोर्ट के विकल्प शामिल होते हैं.
कॉलबैक लागू करने से, आपके ऐप्लिकेशन को डिवाइस के कनेक्शन स्टेटस के साथ-साथ, फ़िलहाल कनेक्ट किए गए नेटवर्क की क्षमताओं के बारे में जानकारी मिलती है. इस एपीआई की मदद से, यह पता लगाया जा सकता है कि डिवाइस फ़िलहाल ऐसे नेटवर्क से कनेक्ट है या नहीं जो आपके ऐप्लिकेशन की ज़रूरी शर्तों को पूरा करता है.
नेटवर्क अनुरोध को कॉन्फ़िगर करना
नेटवर्क के ट्रांसपोर्ट टाइप, जैसे कि वाई-फ़ाई या मोबाइल इंटरनेट कनेक्शन और फ़िलहाल कनेक्ट किए गए नेटवर्क की क्षमताओं, जैसे कि इंटरनेट कनेक्शन की जानकारी देने के लिए, आपको नेटवर्क अनुरोध कॉन्फ़िगर करना होगा.
NetworkRequest
एलान करें, जिसमें आपके ऐप्लिकेशन के नेटवर्क कनेक्शन की ज़रूरतों के बारे में बताया गया हो. नीचे दिया गया कोड, इंटरनेट से कनेक्ट किए गए नेटवर्क के लिए अनुरोध करता है. साथ ही, ट्रांसपोर्ट टाइप के लिए वाई-फ़ाई या सेल्युलर कनेक्शन का इस्तेमाल करता है.
Kotlin
val networkRequest = NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build()
Java
NetworkRequest networkRequest = new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build();
ध्यान दें कि कुछ कनेक्शन, अन्य कनेक्शन की तुलना में काफ़ी ज़्यादा महंगे हो सकते हैं. उदाहरण के लिए, मोबाइल कनेक्शन आम तौर पर महंगा होता है. कनेक्शन महंगा है या नहीं, यह पता लगाने के लिए NetworkCapabilities#NET_CAPABILITY_NOT_METERED
का इस्तेमाल करें. मेज़र किए गए डेटा वाले कनेक्शन का इस्तेमाल करते समय, अपने ऐप्लिकेशन के डेटा खर्च को कम करने की कोशिश करें या तब तक इंतज़ार करें, जब तक डिवाइस पर मेज़र किए गए डेटा वाले कनेक्शन का इस्तेमाल न किया जा रहा हो.
नेटवर्क कॉलबैक कॉन्फ़िगर करना
NetworkRequest
को ConnectivityManager
के साथ रजिस्टर करने पर, आपको कनेक्टिविटी की स्थिति और नेटवर्क की सुविधाओं में हुए बदलावों के बारे में सूचनाएं पाने के लिए, NetworkCallback
को लागू करना होगा.
NetworkCallback
में आम तौर पर लागू किए जाने वाले फ़ंक्शन में ये शामिल हैं:
onAvailable()
से पता चलता है कि डिवाइस को किसी नए नेटवर्क से कनेक्ट किया गया है. यह नेटवर्क,NetworkRequest
में बताई गई सुविधाएं और ट्रांसपोर्ट टाइप की ज़रूरी शर्तें पूरी करता है.onLost()
का मतलब है कि डिवाइस का नेटवर्क कनेक्शन टूट गया है.onCapabilitiesChanged()
इससे पता चलता है कि नेटवर्क की सुविधाओं में बदलाव हुआ है.NetworkCapabilities
ऑब्जेक्ट, नेटवर्क की मौजूदा क्षमताओं के बारे में जानकारी देता है.
Kotlin
private val networkCallback = object : ConnectivityManager.NetworkCallback() { // network is available for use override fun onAvailable(network: Network) { super.onAvailable(network) } // Network capabilities have changed for the network override fun onCapabilitiesChanged( network: Network, networkCapabilities: NetworkCapabilities ) { super.onCapabilitiesChanged(network, networkCapabilities) val unmetered = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) } // lost network connection override fun onLost(network: Network) { super.onLost(network) } }
Java
private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(@NonNull Network network) { super.onAvailable(network); } @Override public void onLost(@NonNull Network network) { super.onLost(network); } @Override public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) { super.onCapabilitiesChanged(network, networkCapabilities); final boolean unmetered = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); } };
नेटवर्क से जुड़े अपडेट पाने के लिए रजिस्टर करना
NetworkRequest
और NetworkCallback
की वैल्यू तय करने के बाद, NetworkRequest
की शर्तें पूरी करने वाले डिवाइस से कनेक्ट करने के लिए, नेटवर्क खोजने के लिए requestNetwork()
या registerNetworkCallback()
फ़ंक्शन का इस्तेमाल करें. इसके बाद, NetworkCallback
को इसकी सूचना दी जाती है.
Kotlin
val connectivityManager = getSystemService(ConnectivityManager::class.java) as ConnectivityManager connectivityManager.requestNetwork(networkRequest, networkCallback)
Java
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(ConnectivityManager.class); connectivityManager.requestNetwork(networkRequest, networkCallback);