Un reproductor de música moderno para Android construido con Kotlin y Jetpack Compose. Diseñado con una interfaz oscura e intuitiva que permite organizar, reproducir y gestionar toda la música almacenada en el dispositivo.
- Servicio de reproducción en segundo plano con notificación de media
- Controles completos: play/pause, anterior/siguiente, seekbar
- Modos shuffle y repeat (desactivado / todos / uno)
- Mini player persistente en la parte inferior de la app
- Pantalla de reproductor con carátula del álbum
- Escaneo automático de todos los archivos de audio del dispositivo vía MediaStore
- Organización por Canciones, Álbumes, Artistas y Géneros
- Búsqueda en tiempo real por título, artista o álbum
| Playlist | Descripción |
|---|---|
| ❤️ Favoritos | Canciones marcadas como favoritas |
| 🕐 Recientes | Últimas 50 canciones reproducidas |
| 🔥 Más tocadas | Las 50 canciones con más reproducciones |
| ✨ Nuevas | Canciones agregadas en los últimos 30 días |
- Crear, renombrar y eliminar playlists
- Agregar o quitar canciones con buscador integrado
- Cover con mosaico automático de 4 álbumes
- Reproducir en orden o en aleatorio
- Editar directamente desde la app: título, artista, álbum, género, año y número de pista
- Escribe los cambios en los ID3 tags reales del archivo de audio
- Compatible con Android 8 a 14+
| Categoría | Tecnología |
|---|---|
| Lenguaje | Kotlin 2.0 |
| UI | Jetpack Compose + Material Design 3 |
| Reproducción | Media3 / ExoPlayer |
| Base de datos | Room |
| Inyección de dependencias | Hilt |
| Navegación | Navigation Compose |
| Imágenes | Coil |
| Metadatos de audio | JAudioTagger |
| Arquitectura | MVVM + Clean Architecture |
- Android Studio Koala (2024.1) o superior
- JDK 17 (incluido en Android Studio)
- Android SDK con API 26 a 35 instaladas
- Gradle 8.6
Descarga el APK más reciente desde la sección Releases e instálalo en tu dispositivo Android (requiere activar Instalar desde fuentes desconocidas en ajustes).
# 1. Clonar el repositorio
git clone https://github.com/AngelOcampo/android_music_app.git
cd android_music_app
# 2. Compilar el APK debug
./gradlew assembleDebug
# El APK se genera en:
# app/build/outputs/apk/debug/app-debug.apkNota: La primera compilación descarga todas las dependencias (~500 MB). Asegúrate de tener conexión a internet.
adb install app/build/outputs/apk/debug/app-debug.apkapp/src/main/java/com/angelocampo/reproductor/
├── data/
│ ├── database/ # Room DAOs y base de datos
│ ├── model/ # Entidades (Song, Playlist, ...)
│ └── repository/ # MusicRepository
├── di/ # Módulos Hilt
├── service/ # MusicService (reproducción en background)
├── ui/
│ ├── components/ # Componentes reutilizables
│ ├── navigation/ # NavHost y rutas
│ ├── screens/ # Pantallas (Home, Library, Player, ...)
│ ├── theme/ # Colores, tipografía y tema
│ └── viewmodel/ # MusicViewModel
└── utils/ # MediaStoreHelper, MetadataEditorHelper, ...
| Permiso | Motivo |
|---|---|
READ_MEDIA_AUDIO |
Acceder a archivos de audio (Android 13+) |
READ_EXTERNAL_STORAGE |
Acceder a archivos de audio (Android 12 y anteriores) |
WRITE_EXTERNAL_STORAGE |
Editar metadatos de archivos (Android 9 y anteriores) |
FOREGROUND_SERVICE |
Mantener la reproducción activa en segundo plano |
Este proyecto fue desarrollado íntegramente con Claude Code, el agente de programación de Anthropic, utilizando el modelo Claude Sonnet 4.6.
El proceso de desarrollo fue conversacional: desde la arquitectura inicial hasta cada corrección de bugs y nuevas funcionalidades, todo fue generado, compilado y verificado en tiempo real a través de Claude Code sin abrir un editor de texto manualmente.
Flujo de desarrollo:
- Diseño de la arquitectura MVVM y modelo de datos
- Generación del proyecto Android con todos sus archivos de configuración de Gradle
- Implementación de capas: datos → repositorio → ViewModel → UI
- Integración de Media3 para reproducción en background
- Implementación de playlists automáticas y manuales con Room
- Adición de edición de metadatos con JAudioTagger
- Corrección de bugs iterativa basada en capturas de pantalla del dispositivo real
- Compilación del APK final desde terminal usando el JDK embebido de Android Studio
- Mínimo: Android 8.0 (API 26)
- Objetivo: Android 15 (API 35)
- Formatos de audio soportados: MP3, M4A, AAC, OGG, FLAC, WAV y cualquier formato compatible con ExoPlayer
Este proyecto es de uso libre para fines personales y educativos.


