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;