Connectivity Diagnostik API

Connectivity Diagnostik API memungkinkan aplikasi yang memiliki atau mengelola jaringan, sebagai aplikasi operator, aplikasi VPN, dan aplikasi saran Wi-Fi, untuk menerima informasi konektivitas jaringan dari kerangka kerja. Aplikasi ini dapat mendaftarkan dan menerima notifikasi berisi informasi konektivitas untuk jaringan yang mereka miliki atau kelola. Aplikasi tidak akan menerima notifikasi untuk jaringan yang tidak dimiliki atau dikelola oleh aplikasi.

Berikut ini contoh aplikasi yang mengelola atau memiliki jaringan:

  • Aplikasi operator: Mengelola jaringan seluler tempat subId-nya memiliki hak istimewa operator untuk
  • Aplikasi saran Wi-Fi: Memiliki jaringan Wi-Fi yang disarankan ke sistem
  • Aplikasi VPN: Mengelola semua jaringan yang digunakan VPN, tetapi hanya saat merupakan VPN aktif

Callback dipanggil dalam kasus berikut:

  • Validasi jaringan: Sistem selesai mengevaluasi jaringan tertentu. Tujuan ConnectivityReport memberikan informasi tentang status jaringan saat ini dan hasil dari pengujian atau prosedur yang dilakukan sebagai bagian dari validasi.

    public class ConnectivityReport {
        Network network;
        long reportTimestamp;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle additionalInfo;
    }
    
  • Data stall dicurigai: Data stall, kondisi di mana paket IP diduga tidak mengalir melalui jaringan dengan benar. Tujuan DataStallReport akan memberikan informasi tentang kios data yang dicurigai.

    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. Jaringan dan konektivitas yang dilaporkan (baik aplikasi percaya bahwa jaringan menyediakan atau tidak menyediakan konektivitas) dibagikan.

Implementasi

Untuk menggunakan Connectivity Diagnostik API, aplikasi harus mendapatkan ConnectivityDiagnosticsManager instance dari platform. {i>Instance <i}ini harus digunakan untuk mendaftarkan dan batalkan pendaftaran ConnectivityDiagnosticsCallback implementasi yang tepat. Metode callback yang tidak diganti adalah tanpa pengoperasian.

Di bawah ini adalah contoh ConnectivityDiagnosticsCallback penerapan:

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 mendaftar 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 Diagnostik API adalah CTS yang diuji oleh ConnectivityDiagnosticsManagerTest