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 )
Tuesday, May 20, 2008
Funcionalidades Mayo
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
http://blog.pocketjourney.com/