Los dispositivos con Android se pueden conectar a distintos tipos de conectores. Entre estos, se incluyen conectores para autos, para el hogar y digitales o analógicos. Por lo general, el estado del conector está vinculado al estado de carga, ya que muchos conectores cargan los dispositivos en la estación de carga.
Tu app afecta la frecuencia de actualización del teléfono en el estado del conector. Puedes aumentar la frecuencia de actualización de una app de noticias sobre deportes cuando se conecta a la computadora o inhabilitar las actualizaciones por completo si el dispositivo está en un conector para autos. Por el contrario, puedes maximizar las actualizaciones mientras el dispositivo está conectado a un vehículo si tu servicio en segundo plano actualiza las condiciones del tráfico.
El estado del conector también se transmite como un Intent
persistente, lo que te permite consultar si el dispositivo está conectado y en qué tipo de conector, si es así.
Cómo determinar el estado actual de conexión
Los detalles del estado del conector se incluyen como información adicional en una transmisión persistente de la acción ACTION_DOCK_EVENT
. Como es persistente, puedes llamar a registerReceiver()
y pasar 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 de la conexión del elemento 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 -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, puede estar en cualquiera de los siguientes cuatro tipos de conector:
- Car
- Escritorio
- Escritorio de gama baja (analógico)
- Escritorio de alta gama (digital)
Las últimas dos opciones solo se introducen en el nivel de API 11 de Android, por lo que te recomendamos que verifiques los tres tipos de escritorio 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;