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