Crear una app en Kotlin: analizador de batería


Apuntes donde ire anotando los pasos que sigo para desarrollar una app para Android usando Kotlin como lenguaje y entorno de desarrollo Android Studio

Sobre la App a desarrollar

La app que se diseñará es un analizador de batería, donde se informará al usuario del estado de la batería, su consumo y información de la batería.

Detallando funcionalidades:

  • Mostrar nivel de batería actual, mediante barra circular
  • Mostrar información del sistema de carga, red eléctrica, USB o inalámbrica
  • Mostrar tiempo de carga o restante, dependiendo si el dispositivo se está cargando.
  • Mostrar información de la batería, fabricante, capacidad, voltaje, temperatura
  • Monitorizar la carga o descarga mediante el amperaje, gráfica en tiempo real opcional.
  • Accesos directos a la sección batería de la configuración del sistema y uso de energía
  • Panel adyacente con controles rápidos, para wifi, bluetooth, brillo, sonido
  • Modo oscuro compatible con Android Q

Requisitos

En el equipo de producción debemos tener instalador Java8 (Java SE Development Kit 8) y el Android Studio, por la red corren miles de tutoriales de como instalar para Windows10, Linux o MacOS.

La otra herramienta en tener instalada Figma que es para hacer bocetos de apps y así ir detallando el diseño global, colores, estructura, datos visuales, posición del contenido, secciones de la app, etc..
También sirve para diseñar iconos, folletos publicitarios etc..

Diseñando la interfaz

Se debe crear un boceto para plasmar la idea y así ir diseñando la funcionalidad y representación de los datos en pantalla, agrupar funcionalidades por vistas:

Vista Estado de la batería

  • Mostrar un gráfico con el nivel actual de la batería y que cambie de color dependiendo del nivel que se encuentre.
  • Mostrar si la batería se está cargando o descargando
  • Mostrar el tipo de carga, si es por toma de corriente alterna (AC), carga por USB o inalambrica (wireless)
  • Mostrar estado de salud de la batería, Buen estado, Mal estado etc…
Battery Check versión 0.1

Recopilación de funcionalidades

Antes de empezar a picar código se debe estructurar la aplicación , analizar los datos que se pueden obtener con las APIS que ofrece Android y ver su funcionalidad en este caso BatteryManager.

Interceptar datos de batería

Para obtener los datos de la batería se debe interceptar los mensajes mediante un Broadcast en el canal ACTION_BATTERY_CHANGED

private val batteryChangeReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
    ...
    }
}

override fun onStart() {
    super.onStart()

    val filter = IntentFilter(Intent.ACTION_BATTERY_CHANGED)
    registerReceiver(batteryChangeReceiver, filter)

}

override fun onStop() {
    super.onStop()
    unregisterReceiver(batteryChangeReceiver)
}

Detectar si existe batería

Antes de obtener datos de batería se debe mirar si el dispositivo tiene batería, se realiza con el flag EXTRA_PRESENT

Obtener estado de la batería

Para obtener el estado de la batería si se está cargando, descargando, si se ha llegado al 100% de la carga etc…

val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
val batteryPct: Float = level / scale.toFloat()

Obtener método de carga de la batería

Las APIS de Android ofrecen la posibilidad de poder detectar el método de la carga que se está usando

val chargePlug: Int = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1)
when (chargePlug) {
    BatteryManager.BATTERY_PLUGGED_WIRELESS -> lblBatteryCharge.text = "Wireless charge"
    BatteryManager.BATTERY_PLUGGED_AC -> //Corriente alterna
    BatteryManager.BATTERY_PLUGGED_USB -> //Por usb
    else -> //Se está usando la batería
}

Detectar estado de salud de la batería

Para obtener el estado de salud de la batería Android ofrece solo un dato, sin ciclos de batería ni aun menos estado de las celdas etc…

when (intent.getIntExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN)) {
    BatteryManager.BATTERY_HEALTH_GOOD -> //En buen estado
    BatteryManager.BATTERY_HEALTH_COLD -> //Fría
    BatteryManager.BATTERY_HEALTH_DEAD -> //Muerta
    BatteryManager.BATTERY_HEALTH_OVERHEAT -> //Sobrecalentada
    BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE -> //Sobre voltaje
    BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE -> //Fallo no especificado
    BatteryManager.BATTERY_HEALTH_UNKNOWN -> //Desconocido
}

Otros datos de la batería

Se puede extraer otros datos de la batería como es la temperatura, su voltaje y el amparaje de carga o descarga.

val batteryVoltage: Int = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1)
val batteryTemperature: Int = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1)
val batteryTechnology: String? = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY)

Recursos

Recursos usados para crear los apuntes, subidos en git

Publicado por Codelaby

Mobile DevDesigner

Un comentario en “Crear una app en Kotlin: analizador de batería

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: