Memantau status konektivitas dan pengukuran koneksi

ConnectivityManager menyediakan API yang memungkinkan Anda meminta agar perangkat terhubung ke jaringan berdasarkan berbagai kondisi yang mencakup kemampuan perangkat dan opsi {i>data transport<i}.

Implementasi callback memberikan informasi ke aplikasi Anda tentang metode serta kemampuan koneksi yang saat ini terhubung jaringan. API ini memungkinkan Anda menentukan apakah perangkat saat ini terhubung ke jaringan yang memenuhi persyaratan aplikasi Anda.

Mengonfigurasi permintaan jaringan

Untuk menentukan jenis transportasi jaringan, seperti Wi-Fi atau seluler koneksi jarak jauh, dan kemampuan jaringan yang saat ini terhubung, seperti koneksi internet koneksi jarak jauh, Anda harus melakukan konfigurasi permintaan jaringan.

Deklarasikan NetworkRequest yang menjelaskan kebutuhan koneksi jaringan aplikasi Anda. Kode berikut membuat meminta jaringan yang terhubung ke internet dan menggunakan Wi-Fi atau koneksi seluler untuk jenis transport.

Kotlin

val networkRequest = NetworkRequest.Builder()
        .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
        .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
        .build()

Java

NetworkRequest networkRequest = new NetworkRequest.Builder()
        .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
        .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
        .build();

Perhatikan bahwa beberapa koneksi bisa jauh lebih mahal dibandingkan yang lain (untuk misalnya, koneksi seluler biasanya mahal). Gunakan NetworkCapabilities#NET_CAPABILITY_NOT_METERED untuk menentukan apakah koneksi itu mahal. Saat menggunakan koneksi berkuota, coba kurangi konsumsi data aplikasi, atau tunda hingga perangkat memiliki tanpa kuota.

Mengonfigurasi callback jaringan

Saat mendaftarkan NetworkRequest dengan ConnectivityManager, Anda harus menerapkan NetworkCallback untuk menerima notifikasi tentang perubahan status koneksi dan jaringan kemampuan IT.

Fungsi yang paling umum diterapkan di NetworkCallback mencakup berikut ini:

  • onAvailable() menunjukkan bahwa perangkat terhubung ke jaringan baru yang memenuhi persyaratan kemampuan dan jenis transpor yang ditentukan dalam NetworkRequest.
  • onLost() menunjukkan bahwa perangkat telah kehilangan koneksi ke jaringan.
  • onCapabilitiesChanged() menunjukkan bahwa kemampuan jaringan telah berubah. Tujuan Objek NetworkCapabilities memberikan informasi tentang kemampuan jaringan saat ini.

Kotlin

private val networkCallback = object : ConnectivityManager.NetworkCallback() {
    // network is available for use
    override fun onAvailable(network: Network) {
        super.onAvailable(network)
    }

    // Network capabilities have changed for the network
    override fun onCapabilitiesChanged(
            network: Network,
            networkCapabilities: NetworkCapabilities
    ) {
        super.onCapabilitiesChanged(network, networkCapabilities)
        val unmetered = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
    }

    // lost network connection
    override fun onLost(network: Network) {
        super.onLost(network)
    }
}

Java

private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
    @Override
    public void onAvailable(@NonNull Network network) {
        super.onAvailable(network);
    }

    @Override
    public void onLost(@NonNull Network network) {
        super.onLost(network);
    }

    @Override
    public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) {
        super.onCapabilitiesChanged(network, networkCapabilities);
        final boolean unmetered = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
    }
};

Mendaftar untuk update jaringan

Setelah Anda mendeklarasikan NetworkRequest dan NetworkCallback, gunakan metode requestNetwork() atau registerNetworkCallback() fungsi untuk mencari jaringan yang akan disambungkan dari perangkat yang memenuhi NetworkRequest. Status ini kemudian dilaporkan ke NetworkCallback.

Kotlin

val connectivityManager = getSystemService(ConnectivityManager::class.java) as ConnectivityManager
connectivityManager.requestNetwork(networkRequest, networkCallback)

Java

ConnectivityManager connectivityManager =
        (ConnectivityManager) getSystemService(ConnectivityManager.class);
connectivityManager.requestNetwork(networkRequest, networkCallback);