Tuesday, May 20, 2008

Funcionalidades Mayo

Hasta el momento tengo asumidas las distintas funcionalidades:

Módulo 1

-Reproduccion de MP3 como Activity
-Captura de tags ID3 del MP3
-Almacenamiento del fichero de MP3 en el sistema
-Conexion con LastFM y obtención de Caratula del disco y foto del artista (Interacción con otras APIs sin nada que ver con android) /lectura XML+interaccionWEB
-Abstracción del UI haciendolo independiente de resoluciones... HVGA, QVGA, etc, etc
- Gestion de la persistencia sobre sqlLite de manera transparente

Existen algunas básicas del proyecto y otras especificas del modulo 1, pendientes para acabar hay:

- Funcionamento del la reproduccion como servicio ( casi finalizado)
- Area de notificacion de las canciones reproduciendo
- Interfaz de usuario ( quedan algunas pantallas por hacer y enlazar todo y mejorar detalles )

Monday, May 19, 2008

TabActivity en Android M5

En la API de Android en la version M5 hay la opción de usar TabActivity, para poder cambiar de activities de manera sencilla.

Todo parece muy bonito pero hay que tener unos detalles en cuenta que no están explicados en ningun lugar de la documentación y a mi me ha llevado 2 días de dedicación exclusiva provocando el no poder hacer funcionar la UI de mi aplicación y un sin parar de NullPointerException U_U', sin duda es uno de los problemas de Android, la cantidad de excepciones que llega a lanzar que uno no puede saber bien de donde le vienen los tiros, siempre tienes que estar mirando el LOG y a ver que pescas... queda mucho por mejorar todavía a la API.

El código en onCreate de nuestra TabActivity es el siguiente

setContentView(R.layout.main);
setDefaultTab(0);
TabHost tabs = getTabHost();
TabHost.TabSpec tab;
tab = tabs.newTabSpec("Artists");
tab.setContent(new Intent().setClass(this, One.class));
tab.setIndicator(new MyTextIndicator(this, "Artists"));
tabs.addTab(tab); //añadir todos los tabs que se kieran




A parte de este código es esencial declarar las activities en el AndroidManifest.xml sinó saltará la excepcion ya comentada, solo hace falta poner el atributo name

activity name="One"

Sunday, May 18, 2008

Estructura de la BBDD

Para que no me quede en el olvido esta es la estructura:

CREATE TABLE songs(
_id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
filename TEXT,
album INTEGER,
artist INTEGER
);
CREATE TABLE artists(
_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
full_name TEXT,
photo TEXT
);
CREATE TABLE albums(
_id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
artist INTEGER,
photo TEXT
);

pueden haber albums con canciones de varios artistas, pero como queremos indexar primeramente por artistas creamos un registro por cada par artist-title

Sunday, May 11, 2008

Controlador Capa de Datos

Android da la posibilidad de usar SQLite para la persistencia, SQLite es una bd relacional que puede resultar muy útil para simplificar la complejidad del dominio pero tiene algunas deficiencias, como las claves foraneas que a diferencia de MySQL y otros debido al intento de simplificar el SGBD no se encarga.

Se tendrá que delegar las resposabilidades de estas restriciones a otros elementos de la aplicación, o arreglarlo con triggers.


http://www.sqlite.org/omitted.html

Sunday, May 4, 2008

Links Streamin


Llevo un par de días peleandome con la lectura de tags de mp3, su inserción en la base de datos y mostrarlo por pantalla sobre android.



Ya casi lo conseguí pero de momento encontré un blog donde conseguieron hacer un poco de streamin sobre android que me será muy útil para la segunda fase del proyecto

http://blog.pocketjourney.com/