Connectivity Diagnostics API

कनेक्टिविटी से जुड़ी गड़बड़ी की जानकारी देने वाले एपीआई की मदद से, नेटवर्क के मालिक या उन्हें मैनेज करने वाले ऐप्लिकेशन, जैसे कि कैरियर ऐप्लिकेशन, वीपीएन ऐप्लिकेशन, और वाई-फ़ाई के सुझाव देने वाले ऐप्लिकेशन, फ़्रेमवर्क से नेटवर्क कनेक्टिविटी की गड़बड़ी की जानकारी पा सकते हैं. ये ऐप्लिकेशन, कॉलबैक रजिस्टर कर सकते हैं. साथ ही, उन नेटवर्क के लिए कनेक्टिविटी की जानकारी वाली सूचनाएं पा सकते हैं जिनके वे मालिक हैं या जिन्हें वे मैनेज करते हैं. जिन नेटवर्क के मालिक ऐप्लिकेशन नहीं हैं या जिन्हें वे मैनेज नहीं करते उनके लिए, ऐप्लिकेशन को सूचनाएं नहीं मिलेंगी.

यहां उन ऐप्लिकेशन के उदाहरण दिए गए हैं जो नेटवर्क को मैनेज करते हैं या उनके मालिक हैं:

  • कैरियर ऐप्लिकेशन: सेल्यूलर नेटवर्क मैनेज करते हैं. इनके subId के पास कैरियर के विशेषाधिकार होते हैं
  • वाई-फ़ाई के सुझाव देने वाले ऐप्लिकेशन: वाई-फ़ाई नेटवर्क के मालिक होते हैं. ये नेटवर्क, सिस्टम को सुझाव के तौर पर दिए जाते हैं
  • वीपीएन ऐप्लिकेशन: अपने वीपीएन के इस्तेमाल किए जाने वाले सभी नेटवर्क मैनेज करते हैं. हालांकि, ऐसा सिर्फ़ तब होता है, जब वे चालू वीपीएन हों

कॉलबैक इन मामलों में शुरू होते हैं:

  • नेटवर्क की पुष्टि: सिस्टम ने किसी खास नेटवर्क का आकलन पूरा कर लिया है. The ConnectivityReport क्लास, नेटवर्क की मौजूदा स्थिति और पुष्टि के तौर पर किए गए किसी भी टेस्ट या प्रोसेस के नतीजों के बारे में जानकारी देती है.

    public class ConnectivityReport {
        Network network;
        long reportTimestamp;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle additionalInfo;
    }
    
  • डेटा स्टॉल होने की आशंका: डेटा स्टॉल होने की आशंका है. यह एक ऐसी स्थिति है जिसमें आईपी पैकेट नेटवर्क के ज़रिए सही तरीके से फ़्लो नहीं होते. The DataStallReport क्लास, डेटा स्टॉल होने की आशंका के बारे में जानकारी देती है.

    public class DataStallReport {
        Network network;
        long reportTimestamp;
        int detectionMethod;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle stallDetails;
    }
    
  • कनेक्टिविटी की जानकारी: किसी ऐप्लिकेशन ने सिस्टम को ConnectivityManager#reportNetworkConnectivity के ज़रिए कनेक्टिविटी की जानकारी दी है. नेटवर्क और कनेक्टिविटी की जानकारी शेयर की जाती है. इसमें यह भी बताया जाता है कि ऐप्लिकेशन को लगता है कि नेटवर्क कनेक्टिविटी देता है या नहीं.

लागू करना

कनेक्टिविटी से जुड़ी गड़बड़ी की जानकारी देने वाले एपीआई का इस्तेमाल करने के लिए, किसी ऐप्लिकेशन को प्लैटफ़ॉर्म से ConnectivityDiagnosticsManager इंस्टेंस पाना होगा. लागू होने की जानकारी रजिस्टर करने और रजिस्ट्रेशन रद्द करने के लिए, इस इंस्टेंस का इस्तेमाल किया जाना चाहिए.ConnectivityDiagnosticsCallback कॉलबैक के ऐसे तरीके जिन्हें बदला नहीं गया है वे नो-ऑप्स होते हैं.

यहां लागू होने की जानकारी का उदाहरण दिया गया है:ConnectivityDiagnosticsCallback

public class ExampleCallback extends ConnectivityDiagnosticsCallback {
    @Override
    public void onConnectivityReportAvailable(@NonNull ConnectivityReport report) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }

    @Override
    public void onDataStallSuspected(@NonNull DataStallReport report) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }

    @Override
    public void onNetworkConnectivityReported(
               @NonNull Network network, boolean hasConnectivity) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }
}

कॉलबैक रजिस्टर करने और सूचनाएं पाने के लिए, कॉल करें registerConnectivityDiagnosticsCallback. कॉलबैक का रजिस्ट्रेशन रद्द करने और सूचनाएं पाना बंद करने के लिए, कॉल करें unregisterConnectivityDiagnosticsCallback.

ConnectivityDiagnosticsCallback को रजिस्टर और अनरजिस्टर करने का उदाहरण यहां दिया गया है:

NetworkRequest request =
        new NetworkRequest.Builder()
                .addTransportType(TRANSPORT_CELLULAR)
                .build();
// Use an Executor that is appropriate for your use case
Executor executor = Executors.newSingleThreadExecutor();

ConnectivityDiagnosticsManager cdm =
        context.getSystemService(ConnectivityDiagnosticsManager.class);

ExampleCallback callback = new ExampleCallback();
cdm.registerConnectivityDiagnosticsCallback(
        request, executor, callback);

... 
// Collect connectivity information on networks that match with request
... 

cdm.unregisterConnectivityDiagnosticsCallback(callback);

सत्यापन

कनेक्टिविटी से जुड़ी गड़बड़ी की जानकारी देने वाले एपीआई की सीटीएस जांच, ConnectivityDiagnosticsManagerTest से की जाती है.