ConnectivityManager
,
Cihazın bir ağa bağlanmasını istemenize olanak tanıyan bir API'ye
cihaz özellikleri ve veri aktarım seçeneklerini içeren çeşitli koşullar.
Geri çağırma uygulaması, uygulamanıza cihazın ve o anda bağlı olan cihazın özellikleri hakkında ağ. API, cihazın şu anda o anda etkin olup olmadığını bir ağa bağlı olmanız gerekir.
Ağ isteğini yapılandırma
Ağın aktarım türünü belirtmek için (ör. kablosuz veya hücresel) bağlantısını ve o anda bağlı olan ağın internet gibi özelliklerini ağ isteği yapılandırmanız gerekir.
Şu özelliklere sahip bir NetworkRequest
bildirin:
uygulamanızın ağ bağlantısı ihtiyaçlarını tanımlar. Aşağıdaki kod,
internete bağlı olan ve kablosuz bağlantı kullanan bir ağ için istekte bulunma
hücresel bağlantıya sahip olabilir.
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();
Bazı bağlantıların diğerlerinden çok daha pahalı olabileceğini unutmayın (
Örneğin, mobil bağlantı genellikle pahalıdır). Tekliflerinizi otomatikleştirmek ve optimize etmek için
NetworkCapabilities#NET_CAPABILITY_NOT_METERED
ve bağlantının ücretli olup olmadığını kontrol edin. Sayaçlı bağlantı kullanırken
uygulamanızın veri tüketimini azaltmaya çalışın veya cihaz yayımlanana kadar
sayaçsız bağlantı.
Ağa geri çağırma yapılandırma
NetworkRequest
öğesini ConnectivityManager
ile kaydettiğinizde
bir
NetworkCallback
bağlantı durumu ve ağ değişiklikleri hakkında bildirim almak için
özellikler.
NetworkCallback
ürününde en sık uygulanan işlevler şunlardır:
takip etmek için:
onAvailable()
cihazın, özellikler ve aktarım türü gereksinimleri (NetworkRequest
).onLost()
cihazın ağ bağlantısının kesildiğini gösterir.onCapabilitiesChanged()
, ağın özelliklerinin değiştiğini gösterir. İlgili içeriği oluşturmak için kullanılanNetworkCapabilities
nesne ağın mevcut özellikleri hakkında bilgi sağlar.
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); } };
Ağ güncellemelerine kaydol
NetworkRequest
ve NetworkCallback
beyan ettikten sonra,
requestNetwork()
veya registerNetworkCallback()
uygun olan cihazdan bağlanacak ağı arama işlevine
NetworkRequest
Durum, daha sonra NetworkCallback
şirketine bildirilir.
Kotlin
val connectivityManager = getSystemService(ConnectivityManager::class.java) as ConnectivityManager connectivityManager.requestNetwork(networkRequest, networkCallback)
Java
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(ConnectivityManager.class); connectivityManager.requestNetwork(networkRequest, networkCallback);