Programación Android, BroadcastReceiver

Después de explicar la pasada semana cómo utilizar un Service en android, el siguiente paso lógico es explicar el uso del BroadcastReceiver. Un BroadcastReceiver es un componente android que permite el registro de eventos del sistema.
Todos los Receivers registrados para un evento serán notificados por android una vez que éstos ocurran.

BroadcastReceiver
BroadcastReceiver

Leer más…

Programación Android, Service

Un Service, o servicio, es un componente que realiza una tarea en background, sin que exista interfaz gráfica que interactúe con el usuario, y por lo tanto no tiene que cumplir con el ciclo de vida de las aplicaciones.

Generalmente un servicio se va a crear para realizar una actividad repetitiva, o que necesita realizar operaciones que necesitan bastante tiempo, como podría ser una descarga de un archivo, sincronizar datos de la apliación, etc.

Android ya nos ofrece el uso de diferentes servicios del sistema, a través de clases Manager específicas, a las que se accede a través del método getSystemService(String name), por ejemplo:

AlarmManager manager = (AlarmManager) getSystemService(String name);

Hay que tener en cuenta que los servicios, como cualquier otro objeto de la aplicación, corren sobre el proceso que lo ha creado (a menos que se indique lo contrario), y que no es un nuevo hilo. Esto quiere decir que si necesitamos que el servicio realice una acción con mucha carga de trabajo o que pueda bloquear el sistema, tendremos que crear un nuevo hilo dentro de nuestro servicio para realizar la tarea y evitar así los ANRs (Application Not Responding errors). Para más información consultar Processes and Threads.

Un servicio realiza dos tareas muy sencillas:
Leer más…

Programación Android, menú contextual (registerForContextMenu)

En la publicación de la semana pasada hablamos sobre cómo crear y manejar menús en Android, pero existen también otro tipo de menús, el menú contextual. A diferencia del menú normal, el menú contextual se mostrará en función del elemento seleccionado de la pantalla, cuando, sobre éste elemento, se realice una pulsación larga.

Este tipo de menú nos ofrece, como veremos más adelante, la posibilidad de mostrar un menú específico para cada elemento al que hayamos registrado un menú.

Como siempre, vamos a realizar un sencillo ejemplo para que resulte más fácil entender cómo manejar este elemento. Esta vez vamos a crear una interfaz con 1 TextView y 2 botones, y cambiaremos el texto a mostrar en el TextView en función de si hacemos una pulsación normal sobre el botón, o si seleccionamos alguna de las opciones del menú contextual asignado a cada botón:

Activity RegisterForContextMenu
Activity

Leer más…

Programación android, Cómo usar un Menú

Menú en Android
En esta ocasión vamos a explicar cómo usar el menú en las aplicaciones Android. En algún ejemplo que hemos hecho en Proyecto Simio, la lógica de la interfaz era “poco útil”, por ejemplo en el último que hicimos sobre Preferencias de Usuario, para llamar a las preferencias lo hacíamos a través de un botón, sin embargo, si pensamos en la optimización de la experiencia del usuario que vaya a utilizar nuestra aplicación, éste esperará encontrar las preferencias a partir de un menú.
Como siempre, vamos a utilizar un pequeño ejemplo para configurar y utilizar nuestro menú, esta vez utilizaremos un Layout con un simple TextView que va a mostrar la opción del menú que se ha seleccionado.
Leer más…

Jornadas IES Portada Alta

IES Portada Alta

Esta semana hemos registrado el nuevo dominio para Proyecto Simio, y en este tiempo hemos estado trabajando para conseguir que aquellos que seguís el blog notéis las menores diferencias posibles en comparación con la plataforma antigua, por lo que no pude escribir la publicación semanal que venía haciendo de un tiempo a esta parte.

Para inaugurar esta nueva etapa me voy a tomar la licencia de aprovechar para hablar de las jornadas IES Portada Alta, un evento organizado por su departamento de informática. Durante toda una mañana se invitaron a un grupo de antiguos alumnos del Ciclo Superior de Desarrollo de Aplicaciones, para compartir con los actuales alumnos del centro sus experiencias en el mercado laboral.

Chicken Indie Games
Chicken Indie Games

Entre esos ex-alumnos invitados se incluían a dos compañeros, y grandes amigos, de mi promoción, y que, aún saliendo de un mismo curso, tienen dos perfiles totalmente distintos entre sí. De un lado está el perfil de Alberto Sánchez, CEO de Chicken Indie Games, que acaba de lanzar al mercado de la Xbox un juego a partes iguales entre bizarro, original, entretenido y adictivo, llamado Chicken: Origami Invaders (Para aquellos interesados, se puede descargar del market de la Xbox por menos de 1€).

Frente a Alberto estaba Iván Díaz, un joven ambicioso que trabaja por cuenta ajena como desarrollador de aplicaciones móviles, y que como proyecto personal lleva a cabo el desarrollo de una aplicación que aspira a ser la competencia de WhatsApp, una aplicación de mensajería denominada TellMe.

TellMe
TellMe

Entre los dos llevaron a cabo una charla, que consiguieron convertir en una charla entre amigos con todos los asistentes, en la que explicaban los resultados de haber estudiado en este centro. También reflejaron el mismo sentimiento de todos los que hemos pasado por el IES Portada Alta: El esfuerzo personal, unido a la magnífica calidad didáctica, profesional y personal del equipo de profesores que enseñan en el Ciclo Superior de Desarrollo de Aplicaciones dan como resultado  a un profesional, con gran nivel, que puede dedicarse a cualquier rama de la programación, y lo que es más importante, una persona que siempre estará agradecido a los que una vez fueron profesores, y hoy, junto con muchos de los compañeros de estudios (de generaciones anteriores y posteriores), pasan a ser AMIGOS.

Si os interesa, podéis ver una muestra de cómo fue el evento:

 

Programación Android, Preferencias de usuario (SharedPreferences, PreferencesActivity y PreferenceFragment)

SharedPreferences

Después de unas semanas de vacaciones volvemos a la carga con una nueva publicación sobre programación Android. En esta ocasión vamos a hablar de la posibilidad de almacenar preferencias de usuario (SharedPreferences) en nuestra aplicación, utilizando la herramienta que nos facilita Android para ello.

Para explicar el uso de esta herramienta vamos a crear una aplicación con una pantalla que contenga un TextView. El texto a mostrar, el tamaño de la fuente y el fondo del TextView los podremos configurar a partir de las preferencias del usuario, o dejar unos valores por defecto.

En primer lugar vamos a crear una Activity en nuestro proyecto que contenga un TextView, que será el que muestre los valores de las preferencias, y un Button que lanzará la pantalla de preferencias:

Main Activity
Main Activity

Leer más…

Programación Android, Restringir aplicación para dispositivos smartphone o tablet

smpartphone_tablet

Aunque es una práctica no recomendada por Google, en ciertas ocasiones podemos necesitar que una aplicación esté destinada al uso exclusivo en determinados tipos de dispositivos, ya sea para un Smartphone o una Tablet. Para estos casos tenemos  la opción de restringir para qué dispositivos está destinada la aplicación a través del manifiest.xml de nuestro proyecto, utilizando la etiqueta <compatible-screens> y en su interior definir tantas pantallas como necesitemos, teniendo en cuenta que para cada tamaño de pantalla también tenemos que indicar a qué densidades queremos dar soporte.

Esto quiere decir que, si por ejemplo queremos dar soporte a pantallas de tamaño large (que hacen referencia a las tablets de 7′) en realidad deberemos indicar 4 pantallas distintas en el manifiest.xml, una por cada densidad: ldpi, mdpi, hdpi y xhdpi. Si quisieramos además dar soporte a pantallas de 10′ haríamos lo mismo con las de tamaño xlarge, con lo que el manifiest.xml contendría las siguientes etiquetas:
Leer más…

Programación Android, AsyncTask – Conectar a Internet y leer documentos JSON

json

Esta semana vamos a escribir un ejemplo parecido al de la semana pasada, en el que conectábamos a una URL para recoger un documento XML y analizarlo, utilizando para eso un AsyncTask. En esta ocasión vamos a hacer lo mismo, pero con un documento JSON.
En primer lugar debemos conocer la estructura del documento previamente, para poder analizarlo después desde el código. La URL que vamos a utilizar en esta ocasión es la api de flickr, que nos permite ver las fotos publicadas en un documento JSON: http://api.flickr.com/services/feeds/photos_public.gne?format=json.

Como se puede ver en el documento, hay una etiqueta “items”, que es un array que contiene una serie de documentos JSON a su vez. Cada uno de estos documentos del array son los que contienen los datos de las fotos publicadas.
Leer más…

Programación Android, AsyncTask – Conectar a Internet y leer XML

android_xml
En esta ocasión vamos a desarrollar una aplicación va a conectar a Internet y va a recoger un documento XML a través de un AsynkTask, para mostrar en un ListView las últimas publicaciones del blog. En primer lugar es necesario conocer la estructura del XML que vamos a utilizar, en este caso podemos ver la estructura completa en el siguiente enlace http://www.proyectosimio.com/feed/

Como vemos, tenemos una primera etiqueta , y en su interior se encuentra el título del blog, el link, la descripción, la última modificación de algún dato, idioma, etc. En nuestro ejemplo vamos a utilizar las etiquetas , que contienen los artículos que se han publicado en el blog. Dentro de esta etiqueta vemos que existen las etiquetas y , que contienen el título del artículo y el link en el que se encuentra.

En nuestro ListView vamos a mostrar el título de la entrada, y cuando se pulse sobre una lanzaremos un Intent para que se abra el navegador y muestre el artículo deseado.
Leer más…

Programación Android, Ejemplo de Bases de datos & ListView IV

Android SQLite

En la última entrada nos quedamos a falta de lanzar una segunda Activity con los datos del ítem seleccionado del ListView, para poder modificarlos posteriormente. Con esta entrada terminaremos este ejemplo de como usar bases de datos en Android, con POO y MVC.

Implementar OnItemClickListener

En primer lugar vamos a implementar el Listener OnItemClickListener en la primera Activity, para que cuando suceda este evento recojamos la información del ítem seleccionado y lo enviemos a la segunda Activity. Añadiremos el Listener a la firma de nuestra Activity, y posteriormente escribiremos el método que nos pide:

public class MainActivity extends Activity implements OnClickListener, OnItemClickListener {
/* ... */

	@Override
	public void onItemClick(AdapterView<?> adapter, View view, int position,
			long id) {
		// TODO Añadir el código para recuperar la información y mandarla a la
		// segunda Activity.

	}
}

Leer más…