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…

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, 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/es/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…

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

Android SQLite

En la entrada anterior sobre el manejo de bases de datos nos quedamos en el punto en que habíamos copiado los datos de una tabla a otra, pero nos faltaba mostrarlos en el segundo ListView, que iba a contener un Adapter personalizado para poder mostrar los 3 campos que guardamos en la tabla.

Crear el Adapter personalizado

El Adapter lo vamos a crear siguiendo los pasos que ya dijimos en las entradas:

En primer lugar crearemos la vista del ítem del ListView, con 3 TextView en los que mostrar los datos:

<!--?xml version="1.0" encoding="utf-8"?-->








Leer más…

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

Android SQLite

En la anterior publicación sobre el manejo de bases de datos nos quedamos en el punto en el que teníamos que recoger los datos de la BD para mostrarlos en el primer ListView.

Creando la clase Modelo

Para hacer esto en primer lugar vamos a crear una nueva clase, que actuará de Modelo de datos, es decir, será una clase que va a representar la estructura de la tabla a la que queremos acceder, de manera que los datos de cada tupla de la tabla se almacenarán en un objeto de la clase Modelo creada:

/**
 * Clase Modelo de las tablas de la BD.
 *
 * @author ProyectoSimio
 *
 */
public class DatosTabla {
	private int _id;
	private String nombre, apellido, telefono;

	/**
	 * Constructor de la clase Modelo para las tablas de la BD
	 *
	 * @param _id
	 * @param nombre
	 * @param apellido
	 * @param telefono
	 */
	public DatosTabla(int _id, String nombre, String apellido, String telefono) {
		this._id = _id;
		this.nombre = nombre;
		this.apellido = apellido;
		this.telefono = telefono;
	}

	// Getters & setters:
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	// El campo _id es la clave primaria que no tiene sentido modificar, por lo
	// tanto no le creamos un set a este campo.
	public int get_id() {
		return _id;
	}

}

Leer más…