iTartanas - Lector de Tarjeta Millennium
Aplicación Android para leer tarjetas Millennium del sistema de transporte público mediante NFC.
Características
✅ Lectura de número de tarjeta: Obtiene y muestra el número completo de la Tarjeta Millennium
✅ Consulta de saldo: Muestra el saldo actual disponible en la tarjeta
✅ Interfaz moderna: Diseño con Material 3 y Jetpack Compose
✅ Detección automática: Lee la tarjeta automáticamente al acercarla al dispositivo
Requisitos
- Dispositivo Android con NFC
- Android 7.0 (API 24) o superior
- NFC activado en el dispositivo
Funcionalidades implementadas
La aplicación implementa las siguientes funcionalidades basadas en el código original de iTranvias:
-
Comunicación NFC con protocolo ISO-DEP
- Selección de red de transporte
- Lectura de entorno
- Lectura de contrato
-
Procesamiento de datos
- Decodificación de números de tarjeta BCD a decimal
- Conversión de PAN a IEP según aplicación
- Cálculo de dígito de verificación Luhn
- Enmascaramiento de datos sensibles
- Conversión de saldo de céntimos a euros
-
Interfaz de usuario
- Pantalla de espera con instrucciones
- Indicador de progreso durante la lectura
- Visualización de datos: número de tarjeta y saldo
- Manejo de errores con mensajes descriptivos
Cómo usar
- Instala la aplicación en tu dispositivo Android
- Asegúrate de que el NFC esté activado
- Abre la aplicación iTartanas
- Acerca tu Tarjeta Millennium al lector NFC del dispositivo
- La aplicación leerá automáticamente el número de tarjeta y el saldo
Tecnologías utilizadas
- Kotlin: Lenguaje de programación principal
- Jetpack Compose: Framework de UI moderna
- Material 3: Diseño de interfaz
- Coroutines: Manejo de operaciones asíncronas
- NFC Android API: Comunicación con tarjetas NFC/ISO-DEP
Estructura del proyecto
app/src/main/java/com/pjpmosteiro/itartanas/
├── MainActivity.kt # Actividad principal con UI
├── nfc/
│ └── CardRepositoryImpl.kt # Lógica de lectura NFC y procesamiento
└── ui/theme/ # Tema de la aplicación
Permisos
La aplicación requiere los siguientes permisos:
android.permission.NFC: Para acceder al hardware NFCandroid.hardware.nfc: Hardware NFC requerido
Notas técnicas
Protocolo de comunicación
La aplicación utiliza comandos APDU para comunicarse con la tarjeta:
- SELECT Transport Network (0x80 0x26 0x4F 0x11 0x0A)
- READ Environment (0x80 0x32 0x00 0x00 0x18)
- READ Contract (0x80 0x2E 0x01 0x00 0x20)
Formato de datos
- Número de tarjeta: 16 dígitos formateados en grupos de 4
- Saldo: Almacenado en 3 bytes (big-endian) en céntimos, convertido a euros
Créditos
Basado en el análisis del código decompilado de la aplicación iTranvias original.
Licencia
Este proyecto es de código abierto para fines educativos y de aprendizaje.