कनेक्टिविटी डायग्नोस्टिक्स एपीआई

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

निम्नलिखित ऐसे ऐप्स के उदाहरण हैं जो नेटवर्क प्रबंधित करते हैं या उनका स्वामित्व रखते हैं:

  • कैरियर ऐप्स: उन सेल्युलर नेटवर्क को प्रबंधित करें जिनके लिए उनके subId के पास कैरियर विशेषाधिकार हैं
  • वाई-फाई सुझाव ऐप्स: स्वयं के वाई-फाई नेटवर्क जो वे सिस्टम को सुझाते हैं
  • वीपीएन ऐप्स: उन सभी नेटवर्क को प्रबंधित करें जिनका वीपीएन उपयोग करता है, लेकिन केवल तभी जब वे सक्रिय वीपीएन हों

कॉलबैक निम्नलिखित मामलों में लागू किए जाते हैं:

  • नेटवर्क सत्यापन: सिस्टम ने एक विशिष्ट नेटवर्क का मूल्यांकन पूरा कर लिया है। ConnectivityReport वर्ग नेटवर्क की वर्तमान स्थिति और सत्यापन के भाग के रूप में किए गए किसी भी परीक्षण या प्रक्रिया के परिणामों के बारे में जानकारी प्रदान करता है।

    public class ConnectivityReport {
        Network network;
        long reportTimestamp;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle additionalInfo;
    }
    
  • डेटा स्टॉल का संदेह: डेटा स्टॉल, एक ऐसी स्थिति जिसमें आईपी पैकेट नेटवर्क के माध्यम से ठीक से प्रवाहित नहीं हो रहे हैं, का संदेह है। 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 द्वारा CTS परीक्षण किया गया है।