Connectivity Diagnostics API'si

Bağlantı Teşhisi 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 çağırmaları kaydedebilir ve sahip oldukları ya da yönettikleri ağların 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 kullanıcısının aşağıdakiler için operatör ayrıcalıklarına sahip olduğu hücresel ağları yönetin
  • 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 uygulamaları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 uygulama ö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 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.