Campestre Mobile. Versión portable del buscador de casas rurales y fotos del entorno
2 de Junio de 2008. Publicado en Proyectos.
Campestre Mobile es una aplicación desarrollada bajo la tecnología Java ME, cuya funcionalidad es similar a la versión original de Campestre: Búsqueda de casas rurales y fotografías del entorno. El siguiente video es una demostración de su funcionamiento, ejecutada sobre el emulador MicroEmulator:
¿Con qué aplicación ha sido desarrollado?
He utilizado Netbeans IDE 6.1, que incorpora plugins para el desarrollo de apliaciones MIDP. Con Netbeans, el desarrollo resulta muy sencillo, aunque genera gran cantidad de código, que muchas veces no permite editar. Digamos que es un desarrollo visual, a través de diagramas. La siguiente imagen corresponde al diagrama de flujo de esta aplicación:

¿De donde saca la información?
Al igual que su hermano mayor, esta versión se nutre de la información de 11870 y fotos de Flickr. Para ello realiza invocaciones a los correspondientes servicios Web REST.
¿Cómo parsea los resultados obtenidos?
El principal problema que surge al desarrollar aplicaciones para dispositivos en los que hay restricciones en cuanto a tamaño, memoria y funcionalidades soportadas por la máquina Java, es la limitación en cuanto al uso de librerías.
Existen diversas librerías de pequeño tamaño, diseñadas específicamente para este tipo de aparatos. Tras probar varios parsers, me decanté por KXML2, un pequeño parser XML diseñado específicamente para entornos restringidos como aplicaciones MIDP, Applets, etc. Lo que me impulsó a dedidirme por KXML2 fue la posibilidad de parsear el fichero mediante DOM, que me resulta infinitamente más sencillo que SAX.
El siguiente fragmento de código es el que utilizo para parsear los resultados devueltos por 11870, en formato ATOM/RSS:
KXmlParser parser = new KXmlParser();
parser.setInput(in, "UTF-8");
Document doc = new Document();
doc.parse(parser);
Element root = doc.getRootElement();
for (int i = 0; i < root.getChildCount() ; i++ ) {
Element kid = root.getElement(i);
if (kid.getName().equals("entry")) {
CasaRural casa = new CasaRural();
// Recorremos todos los campos de la entrada
for (int j=0; j<kid.getChildCount(); j++) {
Element campo = kid.getElement(j);
String nombre = campo.getName();
if (nombre.equals("title")) {
casa.setNombre(campo.getText(0));
}
else if(nombre.endsWith("telephone")) {
casa.setTelefono(campo.getText(0));
}
else if(nombre.endsWith("useraddress")) {
casa.setDireccion(campo.getText(0));
}
else if(nombre.endsWith("locality")) {
casa.setLocalidad(campo.getText(0));
}
else if(nombre.endsWith("subadministrativearea")) {
casa.setProvincia(campo.getText(0));
}
} // for de campos
casas.addElement(casa);
} // if entry
} // for de entry
¿Donde podría instalarse Campestre Mobile?
Campestre Mobile debería poder ser instalado en cualquier dispositivo móvil que disponga de una máquina virtual java compatible con CLDC-1.1 y MIDP-2.0 o superior. Sin embargo, en algunos entornos, la URL de la API de 11870 se malinterpreta al ser un nombre de dominio compuesto únicamente por números y la búsqueda de casas rurales no funciona como debiera.
