MainActivity.kt
Punto de Entrada
Splash screen, verificacion y solicitud de permisos, manejo de ACTION_VIEW para intents externos, edge-to-edge, Storage Access Framework y Picture-in-Picture. Coordina la inicializacion de toda la app.
Devs
Esta seccion resume los puntos que importan para mantener la app sin mezclar responsabilidades entre UI, ViewModel, repositorio y servicios Android. MVVM estandar con Compose, Media3 y servicios de foreground para reproduccion continua.
MainActivity.kt
Splash screen, verificacion y solicitud de permisos, manejo de ACTION_VIEW para intents externos, edge-to-edge, Storage Access Framework y Picture-in-Picture. Coordina la inicializacion de toda la app.
WandaPlayerNavigation.kt
Grafo de navegacion con destinos tipados: Recents, Videos, Audios, Folders y Player. Transiciones entre pantallas, argumentos de ruta y manejo del back stack.
MediaPlayerViewModel.kt
StateFlow con el estado completo de la app: biblioteca de medios, cola de reproduccion, seleccion actual, busqueda activa y estado de reproduccion. Origen unico de verdad para toda la UI.
MediaFileRepository.kt
Consultas a MediaStore para descubrir archivos de audio y video. Lectura del filesystem para carpetas SAF. Busqueda por nombre, filtrado por tipo y ordenamiento personalizado.
ProfessionalVideoPlayerScreen.kt
Reproductor de video con ExoPlayer, gestos de brillo y volumen, controles transparentes que aparecen y desaparecen, y soporte de pantalla completa. Interfaz profesional sin elementos visuales innecesarios.
AudioPlayerScreen.kt
Experiencia dedicada para audio con controles de reproduccion, barra de progreso, caratula del album si esta disponible, y persistencia de posicion para retomar donde dejaste.
MediaPlaybackService.kt
Servicio foreground con MediaSession para reproduccion continua. Notificacion persistente con controles. Mantencion del wake lock y manejo de cambios de auriculares y Bluetooth.
MediaIndexingService.kt
WorkManager para escaneos periodicos de medios nuevos. FileObserver para deteccion de cambios en carpetas monitoreadas. Validacion de archivos existentes y actualizacion de la biblioteca.
Reglas que toda contribucion debe respetar para mantener consistencia en el codigo.
El usuario toca play, busca un archivo o navega por carpetas
MediaPlayerViewModel recibe el evento, actualiza el StateFlow
MediaFileRepository consulta MediaStore o el filesystem segun corresponda
La UI observa el StateFlow y se re-renderiza con los datos actualizados
MediaPlaybackService ejecuta la reproduccion en foreground con MediaSession