# 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: 1. **Comunicación NFC con protocolo ISO-DEP** - Selección de red de transporte - Lectura de entorno - Lectura de contrato 2. **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 3. **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 1. Instala la aplicación en tu dispositivo Android 2. Asegúrate de que el NFC esté activado 3. Abre la aplicación iTartanas 4. Acerca tu Tarjeta Millennium al lector NFC del dispositivo 5. 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 NFC - `android.hardware.nfc`: Hardware NFC requerido ## Notas técnicas ### Protocolo de comunicación La aplicación utiliza comandos APDU para comunicarse con la tarjeta: 1. **SELECT Transport Network** (0x80 0x26 0x4F 0x11 0x0A) 2. **READ Environment** (0x80 0x32 0x00 0x00 0x18) 3. **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.