Una aplicación Android para gestionar una biblioteca musical con funcionalidades CRUD (Crear, Leer, Actualizar, Eliminar) y conectividad a API REST.
MusicApp es una aplicación Android nativa desarrollada en Kotlin que permite a los usuarios gestionar su biblioteca musical personal. La aplicación se conecta a una API REST para sincronizar datos y ofrece funcionalidades como búsqueda, favoritos, y gestión completa de canciones.
- Visualizar lista de canciones con información detallada
- Buscar canciones por título
- Agregar nuevas canciones a la biblioteca
- Editar información de canciones existentes
- Marcar canciones como favoritas
- Ver detalles completos de cada canción
Cada canción incluye:
- Título
- Álbum
- Año de lanzamiento
- Duración (en segundos)
- Calificación (rating)
- Número de votos
- Artistas/Cantantes asociados
- Géneros musicales
- Estado de favorito
- Conectividad de red con verificación de API
- Cache local para funcionamiento offline
- Pantalla de contacto con opciones de llamada, email y SMS
- Interfaz intuitiva
- Modo favoritos para filtrar canciones preferidas
- Lenguaje: Kotlin
- Plataforma: Android (SDK mínimo 31, objetivo 35)
- UI: View Binding + Material Design
- Concurrencia: Kotlin Coroutines
- Networking: HttpURLConnection con JSON
- Arquitectura: MVC con cache local
app/src/main/java/es/usj/jglopez/individualtask/
├── activities/ # Actividades de la aplicación
│ ├── Splash.kt # Pantalla de carga inicial
│ ├── MainActivity.kt # Lista principal de canciones
│ ├── DetailActivity.kt # Detalles de canción
│ ├── AddEditSongActivity.kt # Agregar/editar canciones
│ └── Contact.kt # Pantalla de contacto
├── model/ # Modelos de datos
│ ├── Song.kt # Entidad canción
│ ├── Singer.kt # Entidad cantante
│ ├── Genre.kt # Entidad género
│ └── *Cache.kt # Sistema de cache local
├── network/ # Conectividad de red
│ └── ApiHelper.kt # Funciones de API REST
└── adapters/ # Adaptadores para RecyclerView
La aplicación se conecta a una API REST que debe estar ejecutándose en:
http://10.0.2.2:8080
docker pull anselm82/music-api:latest
docker run -p 8080:8080 anselm82/music-api- Android Studio: Arctic Fox o superior
- JDK: OpenJDK 11 o superior
- Android SDK: Nivel 31 o superior (Android 12)
- Gradle: 8.11.1 (incluido con Android Studio)
- AGP: Android Gradle Plugin 8.9.1
- Kotlin: 2.0.21
- Dispositivo/Emulador: Android API 31+ (Android 12)
-
Clonar el repositorio
git clone https://github.com/jrgim/MusicApp.git cd MusicApp -
Abrir en Android Studio
- Abre Android Studio
- Selecciona "Open an existing project"
- Navega hasta la carpeta del proyecto
-
Configurar la API
- Asegúrate de que tu API REST esté ejecutándose en
http://10.0.2.2:8080 - Para dispositivo físico, cambia la IP en
ApiHelper.ktpor la IP de tu servidor
- Asegúrate de que tu API REST esté ejecutándose en
-
Sincronizar proyecto
- Android Studio sincronizará automáticamente las dependencias
- Si no, ejecuta
Sync Project with Gradle Files
-
Ejecutar la aplicación
- Conecta un dispositivo Android o inicia un emulador
- Presiona el botón "Run" o usa
Shift + F10
- La app iniciará con una pantalla de splash que verificará la conectividad con la API
- Si la API está disponible, cargará datos de canciones, cantantes y géneros
- Navegará automáticamente a la pantalla principal
- Lista de canciones: Muestra todas las canciones disponibles
- Barra de búsqueda: Busca canciones por título
- Botón Favoritos: Alterna entre mostrar todas las canciones o solo favoritas
- Botón Agregar: Permite agregar nuevas canciones
- Botón Contacto: Accede a las opciones de contacto
- Ver detalles: Toca una canción para ver información completa
- Editar: Mantén presionada una canción para editarla
- Agregar nueva: Usa el botón "+" para agregar canciones
- Marcar favorito: Disponible desde la pantalla de detalles
- Llamar: numero de ejemplo
- Email: correo de ejemplo
// Versiones especificadas en libs.versions.toml
androidx-core-ktx = "1.16.0" // Core Android KTX
androidx-appcompat = "1.7.0" // AppCompat
material = "1.12.0" // Material Design
androidx-activity = "1.10.1" // Activity KTX
androidx-constraintlayout = "2.2.1" // ConstraintLayout
// Testing
junit = "4.13.2" // Unit tests
androidx-junit = "1.2.1" // Android tests
androidx-espresso-core = "3.6.1" // UI tests<uses-permission android:name="android.permission.INTERNET" />La aplicación incluye configuración de seguridad de red para permitir tráfico HTTP en desarrollo.
- Verifica que la API REST esté ejecutándose
- Confirma que la URL
http://10.0.2.2:8080sea accesible - Para dispositivo físico, cambia la IP por la IP real del servidor
- Asegúrate de tener permisos de INTERNET
- Verifica la configuración de red del emulador/dispositivo
- Revisa los logs de Android para más detalles
- Verifica que tengas Android Studio con Android SDK instalado
- Asegúrate de tener JDK 11 configurado en Android Studio
- Sincroniza el proyecto con Gradle (
File > Sync Project with Gradle Files) - Limpia y reconstruye el proyecto (
Build > Clean Project>Build > Rebuild Project) - Verifica que tengas las herramientas de SDK necesarias instaladas
# Tests unitarios
./gradlew test
# Tests instrumentados (requiere dispositivo/emulador)
./gradlew connectedAndroidTestLa aplicación utiliza un sistema de cache local para mejorar el rendimiento:
SongCache: Almacena cancionesSingerCache: Almacena cantantesGenreCache: Almacena géneros
- Splash Screen: Carga datos iniciales desde la API
- Cache Local: Almacena datos para acceso rápido
- Sincronización: Actualiza cache después de modificaciones
- UI Updates: Interfaz se actualiza automáticamente