Connectivity Diagnostics API

Bağlantı Sorun Teşhis API'si, ağlara sahip olan veya ağları yöneten uygulamaların (ör. operatör uygulamaları, VPN uygulamaları ve kablosuz bağlantı önerisi uygulamaları) çerçeveden teşhis amaçlı ağ bağlantısı bilgileri almasına olanak tanır. Bu uygulamalar, sahip oldukları veya yönettikleri ağlar için geri aramaları kaydedebilir ve bağlantı bilgileri içeren bildirimler alabilir. Uygulamalar, kendilerine ait olmayan veya kendileri tarafından yönetilmeyen ağlarla ilgili bildirim almaz.

Aşağıda, ağları yöneten veya ağların sahibi olan uygulamalara ilişkin örnekler verilmiştir:

  • Operatör uygulamaları: subId için operatör ayrıcalıklarının bulunduğu hücresel ağları yönetme
  • Kablosuz ağ önerisi uygulamaları: Sisteme önerdikleri kendi kablosuz ağları
  • VPN uygulamaları: VPN'lerinin kullandığı tüm ağları yönetir ancak yalnızca etkin VPN olduklarında

Geri aramalar aşağıdaki durumlarda çağrılır:

  • Ağ doğrulama: 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ı şüpheleniliyor: IP paketlerinin ağ üzerinden düzgün şekilde akmadığı bir durum olan veri duraklaması şüpheleniliyor. DataStallReport sınıfı, verilerin duraklatıldığına dair şüpheler 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ığına dair düşüncesi) paylaşılır.

Uygulama

Bağlantı Teşhisleri API'sini kullanmak için bir uygulamanın platformdan ConnectivityDiagnosticsManager örneği alması gerekir. Bu örnek, ConnectivityDiagnosticsCallback uygulamalarını kaydetmek ve kaydını silmek için kullanılmalıdır. Geçersiz kılınmayan geri çağırma yöntemleri işlem yapmaz.

Aşağıda, ConnectivityDiagnosticsCallback uygulamasının bir örneği 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 aramaları kaydetmek ve bildirim almak için registerConnectivityDiagnosticsCallback numarasını arayın. Geri aramaları kayıttan çıkarmak ve bildirim almayı durdurmak için unregisterConnectivityDiagnosticsCallback numaralı telefonu arayın.

Aşağıda, ConnectivityDiagnosticsCallback kaydetme ve kaydını silme ile ilgili bir örnek 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.