Connectivity Diagnostics API'si

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.