Connectivity Diagnostics API, ağlara sahip olan veya ağları yöneten uygulamalara izin verir. Örneğin operatör uygulamaları, VPN uygulamaları ve kablosuz ağ öneri uygulamaları olarak ağ bağlantısı bilgilerini içerir. Bu uygulamalar geri arama kaydedebilir ve sahip oldukları veya yönettikleri ağların bağlantı bilgilerini içeren bildirimler alabilir. Uygulamalar, ağlar için bildirim almaz (uygulamanın sahibi olmadığı veya yönetmediği reklamlar).
Aşağıda, ağları yöneten veya ağlara sahip olan uygulamalara örnekler verilmiştir:
- Operatör uygulamaları:
subId
adlı operatörün kullandığı hücresel ağları yönetin şunun için operatör ayrıcalıklarına sahip: - Kablosuz öneri uygulamaları: Sisteme önerdikleri kablosuz ağlar
- VPN uygulamaları: VPN'lerinin kullandığı tüm ağları (yalnızca aşağıdaki durumlarda) yönetin bunlar aktif VPN
Geri çağırma işlevleri aşağıdaki durumlarda çağrılır:
Ağ doğrulaması: Sistem, belirli bir ağı değerlendirmeyi tamamlamıştır. İlgili içeriği oluşturmak için kullanılan
ConnectivityReport
sınıfının her biri için ağın mevcut durumu ve gerçekleştirilen testlerin veya prosedürlerin sonuçları.public class ConnectivityReport { Network network; long reportTimestamp; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle additionalInfo; }
Şüphelenilen veri istasyonu: Veri bekletme durumu, IP paketlerinin olduğundan şüphelenilir.
DataStallReport
sınıfı, veri duraklamaları olduğundan şüphelenilen durumlar hakkında bilgi sağlar.public class DataStallReport { Network network; long reportTimestamp; int detectionMethod; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle stallDetails; }
Bağlantı bildirildi: Bir uygulama,
ConnectivityManager#reportNetworkConnectivity
geri dönüyor. Ağ ve bildirilen bağlantı (uygulamanın, ağın bağlantı sağlayıp sağlamadığını düşünmesi) paylaşılır.
Uygulama
Connectivity Diagnostics API'yi kullanmak için uygulamanın bir
ConnectivityDiagnosticsManager
örneğidir. Bu örnek, kayıt ve veri güncelleme işlemleri için
kaydı iptal etmek
ConnectivityDiagnosticsCallback
hakkında bilgi edindiniz. Geçersiz kılınmayan geri çağırma yöntemleri işlemsizdir.
Aşağıda bir
ConnectivityDiagnosticsCallback
uygulama:
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
...
}
}
Geri arama kaydetmek ve bildirim almak için registerConnectivityDiagnosticsCallback
numaralı telefonu arayın.
Geri arama kaydını iptal etmek ve bildirim almayı durdurmak için unregisterConnectivityDiagnosticsCallback
numaralı telefonu arayın.
Aşağıda, kaydolma ve kaydınızı iptal etme ile ilgili bir örnek verilmiştir.
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);
Doğrulama
Bağlantı Teşhisi API'si, ConnectivityDiagnosticsManagerTest
tarafından CTS testine tabi tutulur.