कनेक्टिविटी की स्थिति और कनेक्शन मीटरिंग को मॉनिटर करें

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 का एलान करने के बाद, इनका इस्तेमाल करें requestNetwork() या registerNetworkCallback() से कनेक्ट होने वाले डिवाइस से कनेक्ट करने के लिए नेटवर्क खोजने का काम करता है. NetworkRequest. इसके बाद, 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);