Saltar al contenido principal
Raen Studio
APK
Wanda Player

Devs

Mapa practico del codigo Android.

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

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.

WandaPlayerNavigation.kt

Centro de Navegacion

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

Estado Principal

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

Repositorio de Medios

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

Pantalla de Video

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

Reproductor de Audio

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 de Primer Plano

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

Servicio de Indexacion

WorkManager para escaneos periodicos de medios nuevos. FileObserver para deteccion de cambios en carpetas monitoreadas. Validacion de archivos existentes y actualizacion de la biblioteca.

Convenciones del proyecto

Reglas que toda contribucion debe respetar para mantener consistencia en el codigo.

MVVM estricto: UI solo observe, ViewModel solo exponga StateFlow
Repository como unica fuente de datos para MediaStore y filesystem
Servicios separados: reproduccion (foreground) e indexacion (WorkManager)
Permisos manejados en MainActivity antes de navegar
DataStore para preferencias, no SharedPreferences
Coroutines + Flow para operaciones asincronas
Naming en ingles para archivos, enums y funciones publicas
Composables puras: sin efectos secundarios en el scope de composicion

Flujo de datos

1

User Action

El usuario toca play, busca un archivo o navega por carpetas

2

ViewModel

MediaPlayerViewModel recibe el evento, actualiza el StateFlow

3

Repository

MediaFileRepository consulta MediaStore o el filesystem segun corresponda

4

Compose

La UI observa el StateFlow y se re-renderiza con los datos actualizados

5

Service

MediaPlaybackService ejecuta la reproduccion en foreground con MediaSession