Connectivity Diagnostics API מאפשר לאפליקציות שבבעלותן או בניהולן רשתות, כגון אפליקציות ספק, אפליקציות VPN ואפליקציות להצעות Wi-Fi, כדי לקבל אבחון מידע על קישוריות רשת מה-framework. האפליקציות האלה יכולות להירשם להתקשרות חזרה ולקבל התראות עם פרטי קישוריות עבור ברשתות שבבעלותם או שהם מנהלים. אפליקציות לא יקבלו התראות לגבי רשתות לא בבעלות האפליקציה או בניהולה.
דוגמאות לאפליקציות שמנהלות רשתות או שהן הבעלים שלהן:
- אפליקציות של ספק: ניהול רשתות סלולריות שעבורן
subId
יש הרשאות ספק עבור - אפליקציות של הצעות ל-Wi-Fi: בעלות על רשתות Wi-Fi שהן מציעות מערכת
- אפליקציות VPN: ניהול כל הרשתות שבהן משתמש ה-VPN שלהם, אבל רק כאשר הם ה-VPN הפעיל
הקריאה החוזרת (callback) תתבצע במקרים הבאים:
אימות רשת: המערכת סיימה לבדוק רשת ספציפית.
ConnectivityReport
הסיווג מספק מידע על המצב הנוכחי של הרשת תוצאות של בדיקות או הליכים שבוצעו כחלק מהאימות.public class ConnectivityReport { Network network; long reportTimestamp; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle additionalInfo; }
חשד להשהיית נתונים: השהיית נתונים, מצב שבו חבילות IP. אינם זורמים כראוי ברשת, יש חשד.
DataStallReport
הכיתה מספקת מידע על תיבות נתונים החשודות.public class DataStallReport { Network network; long reportTimestamp; int detectionMethod; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle stallDetails; }
הקישוריות דווחה: אפליקציה דיווחה על קישוריות באמצעות
ConnectivityManager#reportNetworkConnectivity
למערכת. הרשת והקישוריות שדווחה (בין אם האפליקציה חושב שהרשת מספקת או לא מספקת קישוריות) משותפת.
הטמעה
כדי להשתמש ב-Connectivity Diagnostics API, האפליקציה צריכה לקבל
ConnectivityDiagnosticsManager
מהפלטפורמה. צריך להשתמש במופע הזה כדי לרשום
לבטל את הרישום
ConnectivityDiagnosticsCallback
בפועל. שיטות לקריאה חוזרת (callback) שאי אפשר לשנות הן ללא תפעול.
דוגמה
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);
אימות
ה-Connectivity Diagnostics API נבדק על ידי CTS
ConnectivityDiagnosticsManagerTest