Aplicación para Android TV que permite visualizar streams de IPTV con una interfaz estilo Netflix, soporte para EPG (guía de programación), múltiples fuentes de listas M3U y sistema de priorización de calidad de streams.
- ✅ Arquitectura Clean Architecture + MVVM
- ✅ Inyección de dependencias con Hilt
- ✅ Base de datos local con Room
- ✅ Parser de listas M3U/M3U8/XSPF
- ✅ Parser de EPG (XMLTV)
- ✅ Reproductor basado en ExoPlayer (Media3 1.8.0)
- ✅ Interfaz optimizada para Android TV con D-pad
- ✅ Soporte para múltiples protocolos (HLS, DASH, RTSP, HTTP)
- ✅ Navegación principal con menú lateral estilo Netflix
- ✅ Design System completo (tema oscuro, tipografía, estados de focus)
- ✅ Componente ChannelCard reutilizable
- ✅ Filas horizontales de contenido (HorizontalRow)
- ✅ Pantalla Home con últimos canales vistos
- ✅ Pantalla de listado de canales por categoría
- ✅ Pantalla de guía EPG tipo grid
- ✅ Pantalla de ajustes general con pestañas (#131)
- ✅ Gestión de fuentes de listas y EPG
- ✅ Manejo de errores y reconexión automática
- ✅ Importación y actualización de EPG
- ✅ Borrado en cascada de canales al eliminar listas
- ✅ Sistema de upsert para evitar duplicados de canales
- ✅ Scroll infinito/virtualizado en guía EPG
- ✅ Carga automática de programación EPG
- ✅ Overlay del reproductor con D-pad
- ✅ Ajuste automático de video a pantalla
- ✅ Navegación correcta al pulsar atrás
- ✅ Actualización reactiva de Home tras reproducir
- ✅ Contador de streams en tiempo real
- ✅ Menú contextual consistente en pantallas
- ✅ Logos de canales en guía EPG
- ✅ Parseo de entidades HTML en títulos EPG
- ✅ Secciones de televisión en directo y favoritos en Home
- ✅ Soporte para Xtream Codes API (#48)
- ✅ Almacenamiento seguro de credenciales (AES-256-GCM + Keystore)
- ✅ Renovación automática de tokens de autenticación
- ✅ Indicadores de estado de autenticación en UI
- ✅ Importación automática de EPG desde servidores Xtream
- ✅ Asociación de canales EPG con streams M3U (#36)
- ✅ Asociación de múltiples streams a un canal (#30)
- ✅ MediaInfo del stream en tiempo real (#31)
- ✅ Análisis de calidad de streams bajo demanda (#32)
- ✅ Priorización de streams por calidad (#33)
- ✅ Mostrar MediaInfo de streams en gestión (#71)
- ✅ Soporte para múltiples pistas de audio (#18)
- ✅ Subtítulos integrados (DVB, CEA-608/708, WebVTT) (#19)
- ✅ Historial de fallos de streams con limpieza automática (#34)
- ✅ Mejoras del sistema de favoritos (import/export, edición) (#100)
- ✅ Búsqueda expandida por categorías y sistema de ocultar contenido (#118)
- ✅ EPG del reproductor con programación completa (#117)
- ✅ Previsualización de streams antes de asociar (#111)
- ✅ Confirmación de salida al pulsar atrás en Home (#110)
- ✅ Spinners de carga en popups del reproductor (#116)
- ✅ Soporte para codec EAC3/Dolby Digital Plus (#80)
- ✅ Soporte VOD completo: películas y series Xtream (#44)
- ✅ Sistema de grabaciones completo:
- ✅ Backup y restauración (#47)
- ✅ Internacionalización ES/EN (#50)
- ✅ Ajustes de reproducción y calidad (#49)
- 🔄 Mejoras de interfaz y UX (#128)
- 📋 Combinar múltiples listas en vista unificada (#45)
- 📋 Soporte para ratón, teclado y pantalla táctil (#25)
- 📋 Parser de EPG en formatos alternativos (#8)
- 📋 Sistema de favoritos con categorías personalizadas (#43)
| Categoría | Completadas | Total | Progreso |
|---|---|---|---|
| Issues Cerrados | 155 | 165+ | 94% |
| Funcionalidades Core | ✅ | - | Funcional |
| Reproductor | ✅ | - | Funcional |
| EPG | ✅ | - | Funcional |
| UI/UX | ✅ | - | Funcional |
| Grabaciones | ✅ | - | Funcional |
| VOD | ✅ | - | Funcional |
| Backup/Restore | ✅ | - | Funcional |
| Componente | Tecnología | Versión |
|---|---|---|
| Lenguaje | Kotlin | 1.9.24 |
| Min SDK | 29 (Android 10) | - |
| Target SDK | 36 (Android 15) | - |
| Arquitectura | Clean Architecture + MVVM | - |
| DI | Hilt (Dagger) | 2.52 |
| Base de datos | Room (SQLite) | 2.6.1 |
| Networking | Retrofit + OkHttp | 2.11.0 |
| Reproductor | ExoPlayer (Media3) | 1.8.0 |
| Async | Kotlin Coroutines + Flow | 1.8.1 |
| UI | Jetpack Compose for TV + Leanback | BOM 2024.11.00 |
| Build | Gradle + AGP | 8.9 / 8.5.2 |
app/src/main/java/com/easiptv/player/
├── data/ # Capa de datos
│ ├── local/
│ │ ├── database/ # Room: DAOs, Entities, Database
│ │ └── preferences/ # DataStore preferences
│ ├── remote/
│ │ ├── api/ # Retrofit services
│ │ └── parser/ # Parsers M3U, XMLTV, XSPF
│ ├── repository/ # Implementaciones de repositorios
│ └── worker/ # WorkManager workers
├── di/ # Módulos de Hilt
├── domain/ # Capa de dominio
│ ├── model/ # Modelos de dominio
│ ├── repository/ # Interfaces de repositorios
│ └── usecase/ # Casos de uso
└── ui/ # Capa de presentación
├── categories/ # Pantalla de categorías
├── channels/ # Gestión de canales
├── common/ # Componentes comunes
├── epg/ # Guía de programación
├── home/ # Pantalla principal
├── main/ # Navegación principal
├── player/ # Reproductor de video
├── settings/ # Configuración
└── theme/ # Design System
- Android Studio Koala (2024.1.1) o superior
- JDK 17
- Android SDK 36
-
Clona el repositorio:
git clone https://github.com/alpargataman/EasIPTV-Player.git cd EasIPTV-Player -
Abre el proyecto en Android Studio
-
Sincroniza las dependencias de Gradle
-
Conecta un dispositivo Android TV o inicia un emulador:
# Listar emuladores disponibles emulator -list-avds # Iniciar emulador de TV emulator -avd Television_1080p
-
Ejecuta la aplicación (Run > Run 'app')
# Build debug
./gradlew assembleDebug
# Instalar en dispositivo conectado
adb install -r app/build/outputs/apk/debug/app-debug.apk
# Lanzar la app
adb shell am start -n com.easiptv.player.debug/com.easiptv.player.ui.main.MainActivity- Añadir una lista M3U: Ve a Configuración > Fuentes > Añadir nueva fuente
- Añadir EPG: Ve a Configuración > EPG > Añadir fuente XMLTV
- Navegar canales: Usa el D-pad para navegar por categorías y canales
- Ver EPG: Accede a la guía de programación desde el menú lateral
- Reproducir: Selecciona un canal y presiona OK para reproducir
# Ejecutar tests unitarios
./gradlew test
# Ejecutar tests de instrumentación
./gradlew connectedAndroidTestLas contribuciones son bienvenidas. Por favor:
- Revisa los issues abiertos
- Crea un fork del repositorio
- Crea una rama para tu feature:
git checkout -b feature/issue-XX-descripcion - Haz commit de tus cambios siguiendo Conventional Commits
- Abre un Pull Request
feature/issue-XX-descripcion- Nueva funcionalidadfix/issue-XX-descripcion- Corrección de bugrefactor/descripcion- Refactorización de código
- Reproductor funcional con ExoPlayer (Media3 1.8.0)
- Gestión de fuentes M3U/M3U8/XSPF y EPG
- Guía de programación EPG tipo grid virtualizada
- Navegación optimizada para D-pad
- Sistema de favoritos con import/export
- Priorización de streams por calidad
- Asociación de streams a canales EPG
- Sistema de grabaciones completo (instantáneas y programadas)
- Múltiples pistas de audio
- Subtítulos integrados (DVB, CEA-608/708, WebVTT)
- Internacionalización (ES/EN)
- Autenticación Xtream Codes API
- Backup y restauración
- Soporte VOD completo (películas y series Xtream)
- Pantalla de configuración con pestañas
- Búsqueda avanzada por categorías
- Mejoras de UX e interfaz
- Soporte ratón/teclado/táctil
Consulta los Issues del proyecto para ver todas las tareas pendientes.
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
Hecho con ❤️ para la comunidad de Android TV
