Tarea 3

Objetivo

El objetivo de la tarea 3 es conectar la aplicación a algún servicio de búsqueda de música y crear una base de datos para contener información de las listas y favoritos.

ITunes Search API

Información en Apple Store Itunes Search API.

Entrega.

 2 de Noviembre, 2012. Hasta las 7pm. Enviar un correo con la siguiente subject : [ci2354][tarea3] <Número de carné> y el archivo comprimido con el nombre <número de carné.>.[zip, tar, 7z,rar,…] -5 Puntos si no envían la cabecera correctamente o el archivo zip con el formato correcto. 1 punto menos por cada día de atraso. En vez del archivo adjunto se puede enviar también el link al repositorio de la tarea.

Por ejemplo si su carné es el A99999 , el correo se vería así.

Subject: [ci2354][tarea2] A99999

Adjunto: A99999.zip

Requerimientos

  1. Tarea 2 completada
  2. Asegurense que tengan instalado el API 16
  3. Que el proyecto este con Java 1.5 o 1.6 (con 1.7 da problemas)
  4. Tener instalado el Android Support Library (Extras)
  5. Tener el archivo: music_collection_wireframes-v1.2.1

Tareas a realizar

1. Ahora su aplicación debe hacer uso del servicio de iTunes por lo que debe contemplar errores de conexión, tanto como que el teléfono haya perdido conexión como que el servicio no esté disponible. Para probará utilizando el “Airplane Mode”. 30 puntos. (Uso de conexión HTTP del servicio, parseo de los datos). El usuario podra solicitar cada 10 items del servicio hasta un máximo de 1000 (si la  consulta devuelve menos, menos). Se recomienda bajar todo de una sola vez e ir entregando al usuario de poco a poco. 

10 puntos por  crear la conexio (URLConnection o HTTPCliet)

10 puntos por parsear la información.

10 puntos por manejar los errores de conexion, falta de datos

2. La aplicación debe permitir seleccionar canciones como favoritos. Estas canciones favoritas deben poder almacenarse de manera persistente en el dispositivo móvil. Cree las tablas que crea necesarias para almacenar toda la información y justifique su implementación. También debe permitir remover favoritos existentes. (30 puntos)

10 puntos por crear las tablas requeridas

10 puntos por modificar la tabla de canciones favoritas a la hora de marcarla como favorito.

10 por actualizar la interface correctamente una vez que la tabla de favoritos ha sido modificada.

3. Pantalla de Favoritos. Implemente una pantalla que le permita revisar las canciones marcadas como favoritos. Al desmarcar una canción como. (40).

10 puntos por crear la pantalla, el adapter y view holder.

10 puntos por modificar la tabla de canciones favoritas a la hora de marcarla como favorito.

10 puntos por crear la pantalla de confirmación

10 puntos por actualizar  la interface correctamente una vez que la tabla de favoritos ha sido modificada.

Puntos Extra

Para calificar para puntos extra debe entregar la tarea a tiempo. Se rebajarán 20 puntos si la tarea presenta algún error al inicio de su ejecución que impida revisar la tarea adecuadamente.

1. Haga que su aplicación muestre el “arte” de las canciones. Recuerde que debe ejecutarse en un hilo aparte para evitar bloquear la pantalla. Una vez bajada la imagen, debe actualizar el UI con la imagen nueva. (10)

2. Almacene localmente las imágenes para futuro uso y no tener que bajar las imágenes siempre. (10).

Tarea 2

Objetivo

El objetivo de la tarea 2 es mejorar la tarea 1 (el problema de los dialogos) y aplicar algunas de las tareas hechas en el Laboratorio 4.

Entrega

 9 de Octubre. Hasta las 7pm. Enviar un correo con la siguiente subject : [ci2354][tarea2] <Número de carné> y el archivo comprimido con el nombre <número de carné.>.[zip, tar, 7z,rar,…] -5 Puntos si no envían la cabecera correctamente o el archivo zip con el formato correcto. 1 punto menos por cada día de atraso. En vez del archivo adjunto se puede enviar también el link al repositorio de la tarea.

Por ejemplo si su carné es el A99999 , el correo se vería así.

Subject: [ci2354][tarea2] A99999

Adjunto: A99999.zip

Requerimientos

  1. Tarea 1 completada
  2. Asegurense que tengan instalado el API 16
  3. Que el proyecto este con Java 1.5 o 1.6 (con 1.7 da problemas)
  4. Tener instalado el Android Support Library (Extras)
  5. Bajar el archivo: music_collection_wireframes-v1.1

Tareas a realizar

1. Arreglar el problema del dialogo de progreso durante el cambio de orientación. Puede utilizar la forma convencional de invocar dialogos (onCreateDialog, showDialog, dismissDialog). (20 puntos)

2. La lista de canciones debe sobrevivir al cambio de orientación. Pueden utilizar el onRetainNonConfigurationInstance(). (10 puntos)

3. Animar Splash Screen. (20 puntos)

Cree cualquier animación que guste para el contenido de la pantalla de Splash. Eso sí debe durar al menos 1500 milisegundos, y despues de que termine la animación, esperar otros 1500 milisegundos.

4. Agregue una nueva pantalla que permita al usuario seleccionar las opciones Buscar, Favoritos, Listas, Géneros. Llame a la actividad Dashboard. (Referirse al documento music_collection_wireframes-v1.1.pdf). (20 puntos)

5. Implemente el Action Bar utilizando nuevamente el proyecto de ejmplo ActionBarCompat  (Referirse al documento music_collection_wireframes-v1.1.pdf). Apóyese en el procedimiento descrito en el laboratorio 4. Algunos pasos pueden variar según su proyecto. (30 puntos)

Puntos adicionales (10 puntos): Cree las actividades Favoritos, Listas, Géneros e intégreles el ActionBar. No ocupan tener ningún layout en específico y pueden estar vacías, a excepción del Action Bar. Haga que sean alcanzables desde la pantalla Dashboard.

Tarea 1

El objetivo de esta tarea es practicar el uso de ListViews y dialogos. Esta primera “etapa” consta en crear 2 pantallas:

1) Splash screen. Se muestra por 2 segundos antes de lanzar la actividad principal.

2) Busqueda de música. Muestra una pantalla donde el usuario puede ingresar uno o más términos para busar música a través de un servicio. Por ahora basta con que creen un servicio tipo Mock que contenga datos de prueba que se inicializan y mantienen en memoria. Para la llamada que devuelve la lista de canciones, hacer que el tiempo de espera sean 5 segundos.

El detalle de las pantallas las pueden encontrar en los wirframes.

Music Collection v.1 Wireframes

Entrega: 11 de Setiembre del 2012.

Modalidad: Individual.

Se evaluará el uso del Patrón View Holder, eventos asíncronos, así como la simplicidad a la hora de crear los layouts.

Además, indicar en el correo que pasa cuando se cambia la orientación antes, durante y despues de obtener las caciones:

  1. Si usted digita algún término en la caja de búsqueda  y cambia la orientación: ¿Que pasa con el término? Se mantiene aun después de cambiar la orientación?
  2. Mienstras está cargando los resultados. Si usted cambia el device/emulador de orientación, ¿Que pasa con el dialogo? ¿Se cae la aplicación?
  3. Una vez cargados los datos. Si usted cambia la orientación, ¿Que pasa con los resultados?

ACTUALICACIÓN (7/9):

  • El valor de paginado, es decir cuantos elementos por consulta se devuelve, se redujo a 10, cuando antes era 50. Eso quiere decir que la primera vez carga 10. Si presionan el botón de cargar más, carga otros 10 (ahora hay vente), y así sucesivamente.
  • Ignoren lo de los estados del botón. Eso lo ibamos a ver hoy (7/9).
  • El ListView tiene una propiedad llamada emptyView que permite definir un View para mostrarse cuando no hay elementos (está vacía). Puede ser desde un ImageView, un TextView o inclusive si lo quieren personalizar más, pueden “inflar” un layout  y setearlo. Esto normalmente se haría en el onCreate().

  • Para hacer que el enter  haga lo mismo que el botón. Revisen el método setOnEditorActionListener y el OnEditorActionListener. Van ocupar la constante KeyEvent.KEYCODE_ENTER y KeyEvent.ACTION_DOWN.
  • No se preocupen si los nombres se extienden más allá del texto. Pero si quieren investigar, busquen sobre la propiedad “ellipsize” hay varios valores posibles. Ocupan que el TextView sea de una sola linea (propiedades maxLine y line) y el inputType text.