Bağlantı Teşhis API'si, operatör uygulamaları, VPN uygulamaları ve Wi-Fi öneri uygulamaları gibi ağların sahibi olan veya bunları yöneten uygulamaların çerçeveden teşhis ağ bağlantısı bilgilerini almasına olanak tanır. Bu uygulamalar, sahip oldukları veya yönettikleri ağlar için geri aramaları kaydedebilir ve bağlantı bilgilerini içeren bildirimler alabilir. Uygulamalar, uygulamaya ait olmayan veya uygulamaya ait olmayan ağlara ilişkin bildirim almayacaktır.
Aşağıda ağları yöneten veya sahip olan uygulamalara örnekler verilmiştir:
- Operatör uygulamaları:
subId
operatör ayrıcalıklarına sahip olduğu hücresel ağları yönetin - Wi-Fi öneri uygulamaları: Sisteme önerdikleri kendi Wi-Fi ağları
- VPN uygulamaları: VPN'lerinin kullandığı tüm ağları yönetin, ancak yalnızca etkin VPN olduklarında
Geri aramalar aşağıdaki durumlarda çağrılır:
Ağ doğrulaması: Sistem belirli bir ağı değerlendirmeyi tamamladı.
ConnectivityReport
sınıfı, ağın geçerli durumu ve doğrulamanın bir parçası olarak gerçekleştirilen testlerin veya prosedürlerin sonuçları hakkında bilgi sağlar.public class ConnectivityReport { Network network; long reportTimestamp; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle additionalInfo; }
Veri duraklamasından şüpheleniliyor: IP paketlerinin ağ üzerinden düzgün şekilde akmadığı bir durum olan veri duraklamasından şüpheleniliyor.
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
aracılığıyla sisteme bağlantı bildirdi. Ağ ve bildirilen bağlantı (uygulamanın ağın bağlantı sağladığına veya sağlamadığına inanıp inanmadığı) paylaşılır.
Uygulama
Connectivity Diagnostics API'yi kullanmak için bir uygulamanın platformdan bir ConnectivityDiagnosticsManager
örneği alması gerekir. Bu örnek, ConnectivityDiagnosticsCallback
uygulamalarını kaydetmek ve kayıtlarını kaldırmak için kullanılmalıdır. Geçersiz kılınmayan geri çağırma yöntemleri işlem dışıdır.
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 bildirimler almak için, registerConnectivityDiagnosticsCallback
öğesini çağırın. Geri aramaların kaydını silmek ve bildirim almayı durdurmak için unregisterConnectivityDiagnosticsCallback
öğesini çağırın.
Aşağıda ConnectivityDiagnosticsCallback
kaydedilmesi ve kaydının silinmesi için 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
Connectivity Diagnostics API, ConnectivityDiagnosticsManagerTest
tarafından CTS testine tabi tutulmuştur.