Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

API de diagnóstico de conectividad

La API de diagnóstico de conectividad permite que las aplicaciones que poseen o administran redes, como aplicaciones de operador, aplicaciones de VPN y aplicaciones de sugerencia de Wi-Fi, reciban información de conectividad de red de diagnóstico desde el marco. Estas aplicaciones pueden registrar devoluciones de llamada y recibir notificaciones con información de conectividad para las redes que poseen o administran. Las aplicaciones no recibirán notificaciones de redes que no sean propiedad de la aplicación ni estén administradas por ella.

Los siguientes son ejemplos de aplicaciones que administran o poseen redes:

  • Aplicaciones Carrier: Administrar redes celulares para los que su subId tiene privilegios para los portadores
  • Wi-Fi aplicaciones sugerencia: propias redes Wi-Fi que sugieren que el sistema de
  • VPN Aplicaciones: Administrar todas las redes que sus usos VPN, pero sólo cuando son el VPN activa

Las devoluciones de llamada se invocan en los siguientes casos:

  • Validación de la red: El sistema terminado de evaluar una red específica. El ConnectivityReport clase proporciona información sobre el estado actual de la red y los resultados de los ensayos o procedimientos realizados como parte de la validación.

    public class ConnectivityReport {
        Network network;
        long reportTimestamp;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle additionalInfo;
    }
    
  • Datos puesto de sospecha: Parada de datos A, una condición en la que los paquetes IP no están fluyendo adecuadamente a través de la red, es sospechoso. El DataStallReport clase proporciona información sobre sospechosos puestos datos.

    public class DataStallReport {
        Network network;
        long reportTimestamp;
        int detectionMethod;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle stallDetails;
    }
    
  • Conectividad informó: Una aplicación ha informado de conectividad a través de ConnectivityManager#reportNetworkConnectivity al sistema. La red y la conectividad informada (si la aplicación cree que la red proporciona conectividad o no) se comparten.

Implementación

Para usar la API Diagnóstico de conectividad, una aplicación debe obtener una ConnectivityDiagnosticsManager instancia de la plataforma. Esta instancia se debe utilizar para registrar y eliminar ConnectivityDiagnosticsCallback implementaciones. Los métodos de devolución de llamada que no se anulan son no operativos.

A continuación se muestra un ejemplo de un ConnectivityDiagnosticsCallback aplicación:

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
        ... 
    }
}

Para registrar las devoluciones de llamada y recibir notificaciones, llame registerConnectivityDiagnosticsCallback . Para devoluciones de llamada y dejar de recibir notificaciones anular el registro, llame unregisterConnectivityDiagnosticsCallback .

A continuación se muestra un ejemplo para registrar y anular el registro 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);

Validación

La API de Diagnóstico de conectividad es CTS probado por ConnectivityDiagnosticsManagerTest .