Connectivity Diagnostics API

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.