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 kaydolabilir ve cihaz için bağlantı bilgilerini içeren bildirimler alırsınız. erişimlerini artırmaktır. 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 ağ öneri uygulamaları: sistem
- 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. İlgili içeriği oluşturmak için kullanılan
DataStallReport
sınıfı, şüpheli veri duraklamaları 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 düşünüldüğünde) paylaşılan bir e-posta alırsınız.
Uygulama
Connectivity Diagnostics API'yi kullanmak için uygulamanın bir
ConnectivityDiagnosticsManager
örneğidir. Bu örnek, kayıt işlemini tek bir yerden gerçekleştirmek
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 aramaları kaydetmek ve bildirim almak için şu numarayı arayın:
registerConnectivityDiagnosticsCallback
.
Geri çağırmaların kaydını iptal etmek ve bildirim almayı durdurmak için şu numarayı arayın:
unregisterConnectivityDiagnosticsCallback
.
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
Connectivity Diagnostics API, CTS'yi
ConnectivityDiagnosticsManagerTest
.