Los dispositivos con Android se pueden conectar a diferentes tipos de estaciones de carga. Por ejemplo, se pueden usar conectores para autos, para el hogar y digitales o analógicos. Por lo general, el estado de la estación de carga está estrechamente vinculado con el de carga, ya que muchas estaciones proporcionan energía a los dispositivos 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 deportivas cuando el dispositivo se enchufa en un conector de escritorio, o inhabilitar las actualizaciones por completo si se enchufa en un conector para autos. Por el contrario, 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
fijo, lo que te permite consultar si el dispositivo está conectado y, si lo está, en qué 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 una transmisión fija 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 del conector de 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 -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 hacerlo en cualquiera de los siguientes cuatro tipos de conectores:
- Car
- Escritorio
- Escritorio de gama baja (analógica)
- Escritorio de gama alta (digital)
Las últimas dos opciones solo se introdujeron en el nivel de API 11 de Android. Por lo tanto, te recomendamos que compruebes los tres tipos de estaciones de trabajo cuando solo te interese el tipo de estación de carga en lugar de saber si es digital o analógica:
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;