Connectivity Diagnostics API

Bağlantı Teşhisleri API'si, operatör uygulamaları, VPN uygulamaları ve kablosuz öneri uygulamaları gibi ağlara sahip veya ağları yöneten uygulamaların çerçeveden teşhis amaçlı ağ bağlantısı bilgileri almasına olanak tanır. Bu uygulamalar geri arama kaydedebilir ve sahip oldukları veya yönettikleri ağlarla ilgili bağlantı bilgilerini içeren bildirimler alabilir. Uygulamalar, sahibi veya yöneticisi olmadığı ağlarla ilgili bildirim almaz.

Aşağıda, ağları yöneten veya ağlara sahip olan uygulamalara örnekler verilmiştir:

  • Operatör uygulamaları: subId'nin operatör ayrıcalıklarına sahip olduğu hücresel ağları yönetme
  • Kablosuz öneri uygulamaları: Sisteme önerdikleri kablosuz ağlar
  • VPN uygulamaları: VPN'lerinin kullandığı tüm ağları yönetir ancak yalnızca etkin VPN olduklarında

Geri çağırma işlevleri aşağıdaki durumlarda çağrılır:

  • Ağ doğrulaması: Sistem, belirli bir ağı değerlendirmeyi tamamladı. ConnectivityReport sınıfı, ağın mevcut durumu ve doğrulama kapsamında gerçekleştirilen testlerin veya işlemlerin sonuçları hakkında bilgi sağlar.

    public class ConnectivityReport {
        Network network;
        long reportTimestamp;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle additionalInfo;
    }
    
  • Veri duraklaması olduğundan şüpheleniliyor: IP paketlerinin ağ üzerinden düzgün şekilde akmadığı bir durum olan veri duraklaması olduğundan şüpheleniliyor. 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 üzerinden sisteme bağlantı bildirdi. Ağ ve bildirilen bağlantı (uygulamanın, ağın bağlantı sağlayıp sağlamadığını düşünmesi) paylaşılır.

Uygulama

Bağlantı Teşhisleri API'sini kullanmak için uygulamanın platformdan bir ConnectivityDiagnosticsManager örneği alması gerekir. Bu örnek, ConnectivityDiagnosticsCallback uygulamalarını kaydetmek ve kaydını kaldırmak için kullanılmalıdır. Üzerine yazılmayan geri çağırma yöntemleri işlem yapmaz.

Aşağıda, ConnectivityDiagnosticsCallback uygulanmasına dair bir örnek verilmiştir:

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 aramaların kaydını iptal etmek ve bildirim almayı durdurmak için unregisterConnectivityDiagnosticsCallback numaralı telefonu arayın.

Aşağıda, ConnectivityDiagnosticsCallback kaydetme ve kaydını silme örneği verilmiştir:

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.