Connectivity Diagnostik API memungkinkan aplikasi yang memiliki atau mengelola jaringan, seperti aplikasi operator, aplikasi VPN, dan aplikasi saran Wi-Fi, untuk menerima informasi konektivitas jaringan diagnostik dari framework. Aplikasi ini dapat mendaftarkan callback dan menerima notifikasi dengan informasi konektivitas untuk jaringan yang mereka miliki atau kelola. Aplikasi tidak akan menerima notifikasi untuk jaringan yang tidak dimiliki atau dikelola oleh aplikasi.
Berikut adalah contoh aplikasi yang mengelola atau memiliki jaringan:
- Aplikasi operator: Mengelola jaringan seluler yang
subId
-nya memiliki hak istimewa operator untuk - Aplikasi saran Wi-Fi: Memiliki jaringan Wi-Fi yang mereka sarankan ke sistem
- Aplikasi VPN: Mengelola semua jaringan yang digunakan VPN-nya, tetapi hanya jika VPN tersebut aktif
Callback dipanggil dalam kasus berikut:
Validasi jaringan: Sistem telah selesai mengevaluasi jaringan tertentu. Class
ConnectivityReport
memberikan informasi tentang status jaringan saat ini dan hasil pengujian atau prosedur apa pun yang dilakukan sebagai bagian dari validasi.public class ConnectivityReport { Network network; long reportTimestamp; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle additionalInfo; }
Data stall dicurigai: Data stall, yaitu kondisi saat paket IP tidak mengalir dengan benar melalui jaringan, dicurigai. Class
DataStallReport
memberikan informasi tentang dugaan macet data.public class DataStallReport { Network network; long reportTimestamp; int detectionMethod; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle stallDetails; }
Konektivitas dilaporkan: Aplikasi telah melaporkan konektivitas melalui
ConnectivityManager#reportNetworkConnectivity
ke sistem. Konektivitas jaringan dan yang dilaporkan (baik aplikasi percaya bahwa jaringan memang menyediakan konektivitas atau tidak) digunakan bersama.
Implementasi
Untuk menggunakan Connectivity Diagnostics API, aplikasi harus mendapatkan
instance
ConnectivityDiagnosticsManager
dari platform. Instance ini harus digunakan untuk mendaftarkan dan
membatalkan pendaftaran
implementasi
ConnectivityDiagnosticsCallback
. Metode callback yang tidak diganti tidak akan berfungsi.
Berikut adalah contoh
implementasi
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
...
}
}
Untuk mendaftarkan callback dan menerima notifikasi, panggil
registerConnectivityDiagnosticsCallback
.
Untuk membatalkan pendaftaran callback dan berhenti menerima notifikasi, panggil
unregisterConnectivityDiagnosticsCallback
.
Berikut adalah contoh untuk mendaftarkan dan membatalkan pendaftaran
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);
Validasi
Connectivity Diagnostics API adalah CTS yang diuji oleh
ConnectivityDiagnosticsManagerTest
.