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

Los dispositivos con Android se pueden conectar a diferentes tipos de conectores. Estos incluyen estaciones para automóviles y para el hogar, y estaciones digitales o analógicas. El estado del conector es normalmente están estrechamente vinculadas con el estado de carga, dado que muchas estaciones proporcionan energía a conectados.

Tu app afecta la frecuencia de actualización del teléfono en el estado de la estación de carga. Puedes aumentar la frecuencia de actualización de una app de noticias sobre deportes cuando está en un conector de escritorio desactivar por completo las actualizaciones si el dispositivo está en un conector para autos. Por el contrario, puedes maximizar las actualizaciones cuando el auto esté conectado si se actualiza el servicio en segundo plano condiciones de tráfico.

El estado del conector también se transmite como un anuncio fijo. Intent, lo que te permite consultar si el dispositivo está conectado y en qué tipo de conector si así que

Cómo determinar el estado actual de conexión

Los detalles sobre el estado del conector se incluyen como información adicional en un transmisión fija de la ACTION_DOCK_EVENT acción. Como es pegajoso, puedes llamar registerReceiver(), y pasa null como receptor de emisión. El siguiente fragmento te 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 de la Extra de 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 -1;
if (dockStatus != null) {
  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, se puede conectar en cualquiera de los siguientes cuatro Diferentes tipos de conector:

  • Car
  • Escritorio
  • Escritorio de gama baja (analógica)
  • Escritorio de gama alta (digital)

Las últimas dos opciones solo se presentan en el nivel de API 11 de Android, así que es te recomendamos que verifiques los tres tipos de escritorios cuando solo te interese el tipo de conector en lugar de ser digital o analógico:

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;