Connectivity Diagnostics API به برنامههایی که مالک یا مدیریت شبکهها هستند، مانند برنامههای حامل، برنامههای VPN، و برنامههای پیشنهادی Wi-Fi، اجازه میدهد تا اطلاعات اتصال شبکه تشخیصی را از چارچوب دریافت کنند. این برنامهها میتوانند تماسهای برگشتی را ثبت کنند و اعلانهایی را با اطلاعات اتصال برای شبکههای تحت مالکیت یا مدیریت خود دریافت کنند. برنامهها برای شبکههایی که تحت مالکیت یا مدیریت برنامه نیستند، اعلان دریافت نمیکنند.
در زیر نمونههایی از برنامههایی هستند که شبکهها را مدیریت میکنند یا مالک آن هستند:
- برنامههای حامل: شبکههای تلفن همراهی را مدیریت کنید که
subId
آنها دارای امتیازات اپراتور است. - برنامههای پیشنهادی Wi-Fi: دارای شبکههای Wi-Fi هستند که به سیستم پیشنهاد میکنند
- برنامههای VPN: همه شبکههایی را که VPN آنها استفاده میکند، مدیریت کنید، اما فقط زمانی که VPN فعال هستند
فراخوانی در موارد زیر فراخوانی می شود:
اعتبار سنجی شبکه: سیستم ارزیابی یک شبکه خاص را به پایان رساند. کلاس
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
استفاده شود. روشهای برگشت به تماس که لغو نمیشوند، بدون عملیات هستند.
در زیر نمونه ای از اجرای 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
تست شده است.