Únete a ⁠ #Android11: The Beta Launch Show el 3 de junio.

Cómo determinar y supervisar el tipo y el estado de conexión

Los dispositivos Android se pueden conectar a varios tipos de conectores diferentes. Por ejemplo, se pueden usar conectores para autos o para el hogar, tanto digitales como analógicos. Por lo general, el estado del conector suele estar vinculado con el de carga, ya que muchos conectores cargan los dispositivos mientras están conectados.

El modo en el que el estado del conector del teléfono afecta a la frecuencia de actualización depende de tu app. Puedes aumentar la frecuencia de actualización de una app de noticias deportivas cuando el dispositivo está en a un conector de escritorio, o bien inhabilitar las actualizaciones por completo si está en un conector para autos. Por otra parte, puedes maximizar las actualizaciones cuando el dispositivo está conectado a un vehículo si tu servicio en segundo plano actualiza las condiciones de tráfico.

El estado del conector también se transmite como un Intent persistente, lo que te permite consultar si el dispositivo está conectado o no y, si lo está, determinar el tipo de conector.

Cómo determinar el estado actual de conexión

Los detalles del estado del conector se incluyen como información adicional en la emisión persistente de la acción ACTION_DOCK_EVENT. Como es persistente, puedes simplemente llamar a registerReceiver(), pasando null como el receptor de emisión. En el siguiente fragmento, se muestra cómo completar este proceso:

Kotlin

    val dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter ->
        context.registerReceiver(null, ifilter)
    }
    

Java

    IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
    Intent dockStatus = context.registerReceiver(null, ifilter);
    

Puedes extraer el estado actual del conector desde la información adicional EXTRA_DOCK_STATE:

Kotlin

    val dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1
    val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED
    

Java

    int dockState = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);
    boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
    

Cómo determinar el tipo de conector actual

Si un dispositivo está conectado, puede estarlo en cualquiera de estos cuatro tipos de conectores:

  • Auto
  • Escritorio
  • Escritorio de gama baja (analógico)
  • Escritorio de gama alta (digital)

Ten en cuenta que las últimas dos opciones se introdujeron en Android únicamente en el nivel de API 11. Por lo tanto, te recomendamos que compruebes las tres opciones solo cuando quieras saber qué tipo de conectores son y no si son digitales o analógicos:

Kotlin

    val isCar: Boolean = dockState == EXTRA_DOCK_STATE_CAR
    val isDesk: Boolean = dockState == EXTRA_DOCK_STATE_DESK
            || dockState == EXTRA_DOCK_STATE_LE_DESK
            || dockState == EXTRA_DOCK_STATE_HE_DESK
    

Java

    boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
    boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
                     dockState == EXTRA_DOCK_STATE_LE_DESK ||
                     dockState == EXTRA_DOCK_STATE_HE_DESK;