कनेक्टिविटी डाइग्नोस्टिक्स एपीआई की मदद से, नेटवर्क के मालिक या मैनेजर, जैसे कि मोबाइल और इंटरनेट सेवा देने वाली कंपनी के ऐप्लिकेशन, वीपीएन ऐप्लिकेशन, और वाई-फ़ाई के सुझाव देने वाले ऐप्लिकेशन, फ़्रेमवर्क से नेटवर्क कनेक्टिविटी की गड़बड़ी की जानकारी पा सकते हैं. ये ऐप्लिकेशन रजिस्टर कर सकते हैं कॉलबैक और कनेक्टिविटी जानकारी के साथ नोटिफ़िकेशन पाएं ऐसे नेटवर्क जिनका मालिकाना हक या जिन्हें मैनेज करने का अधिकार उनके पास है. ऐप्लिकेशन को उन नेटवर्क के लिए सूचनाएं नहीं मिलेंगी जिनका मालिकाना हक या जिन्हें ऐप्लिकेशन मैनेज नहीं करता.
यहां ऐसे ऐप्लिकेशन के उदाहरण दिए गए हैं जो नेटवर्क को मैनेज करते हैं या उनका मालिकाना हक रखते हैं:
- मोबाइल और इंटरनेट सेवा देने वाली कंपनी के ऐप्लिकेशन: उन सेल्युलर नेटवर्क को प्रबंधित करें जिनके लिए उनका
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
उसे सिस्टम में जोड़े रखता है. नेटवर्क और रिपोर्ट की गई कनेक्टिविटी (ऐप्लिकेशन को लगता है कि नेटवर्क शेयर किया गया है या नहीं करता है.
लागू करना
Connectivity Diagnostics API का इस्तेमाल करने के लिए, किसी ऐप्लिकेशन को प्लैटफ़ॉर्म से 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
ने सीटीएस की जांच की है.