CrankPlay, lógica propia

· 346 palabras · Lectura de 2 minutos

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.
comments powered by Disqus