Ir al contenido

CrankPlay, lógica propia

·346 palabras·2 mins
Agustín Ventura
Autor
Agustín Ventura

Vale, una vez terminado el guarreo con el ciclo de vida, toca implementar la lógica de negocio propia de la aplicación. Al ser JustPlay un reproductor de mp3 y ogg, vamos a ver que lógica tenemos que implementar:

Funcionalidad Detallada
  1. Gestión de la lista de reproducción, añadir directorios y canciones sueltas, borrar la lista de reproducción, eliminar canciones en particular y reordenarla mediante drag&drop.
  2. Reproducir: Reproducir toda la playlist desde el principio hasta el final dándole al botón de play.
  3. Reproducir una canción: Empezar a reproducir toda la playlist desde la canción seleccionada.
  4. Parar: Parar la reproducción, al darle a play se volverá a reproducir la lista desde el principio.
  5. Pausar: Parar la reproducción, al darle a play se continuará con la reproducción donde estaba.
  6. Canción anterior: Reproducir la canción anterior, en caso de ser la primera se reproducirá desde el principio.
  7. Canción siguiente: Reproducir la canción siguiente, en caso de ser la última no se hará nada.
  8. Avance rápido: Avanzar 15 sgs en la canción. Si la posición actual de la canción + 15 sgs > longitud de la canción, se pasa a la siguiente canción.
  9. Retroceso: Retroceder 15 sgs en la canción. Si la posición actual de la canción - 15 sgs < 0, se comienza desde el principio.
Definición de Responsabilidades

Entre los artefactos existentes voy a dividir la responsabilidad de la siguiente manera:

MediaPlayer:
  • Gestión de la interfaz del usuario.
  • Mostrar la playlist y los controles.
  • Toda la lógica de negocio la delega en MediaService y MediaThread
FileExplorer
  • Mostrar los contenidos de la memoria del teléfono, recordando el último directorio visitado.
  • Enviar a MediaPlayer una canción en concreto o las contenidas en un directorio y sus subdirectorios.
MediaServiceBinder
  • Devuelve una instancia de MediaService al objeto que lo solicite (MediaPlayer en este caso).
MediaService
  • Mantiene vivo MediaThread aunque se cierre MediaPlayer.
  • Presenta las notificaciones al usuario en la barra de estado.
  • Gestiona el CallManager que permite parar la reproducción cuando hay una llamada y volverla a iniciar cuando esta termina.
MediaThread
  • Gestiona la reproducción de la playlist implementando toda la funcionalidad detallada arriba.