Hello Android! (V)

Hello Android! (V)

Buenos días a todos, y bienvenidos a la quinta entrega de Hello Android! (V). Es la última de la serie, lo que da algo de penica pero ya sabéis lo que dicen, lo bueno si breve…

 

Hello Android! (V)

En este artículo vamos a ver cómo comunicar 2 aplicaciones completamente distintas: La que tenemos hecha en Android, y una web en PHP. A través de este mecanismo compartiremos información entre todos los teléfonos que instalen nuestra app.

Como sabréis si leísteis la entrada de PHP, éste es un lenguaje orientado a páginas web que nos permite interactuar con el usuario. La idea es que nuestra app será la que «conversará» con esta web, como si fuera un usuario más, y la usará para guardar la información de la compra.

 

Hello Android! (V)

Hello Android! (V): Comenzando

 

1. Lo primero que necesitamos es un hosting PHP. Traduciendo al castellano, un servidor que nos ofrezca espacio para crear nuestras páginas PHP y una base de datos. Yo he escogido éste:

http://www.000webhost.com

Había muchísimos más y la mayoría buenos, pero este era el mas fácil de configurar de los que he mirado.

2. Después lo que haremos es subir nuestra página PHP al servidor, y crear la base de datos para que los datos se puedan almacenar.

3. El tercer y último paso, es añadir el código necesario a nuestra app Android para:

a) Enviar los datos desde Android a PHP, para insertar en la base de datos compartida.

b) Enviar la lista de productos desde PHP a Android con los datos actualizados.

Código PHP y Base de datos

 

Necesitaremos 2 páginas PHP diferentes, una para guardar los productos que enviamos desde nuestro tablet/teléfono y otra para listarlos y enviarlos hasta el dispositivo. En realidad, una web que sirve para comunicar 2 aplicaciones, o para enviar y recibir información entre ellas se llama «WebService» o con mis grandes dotes de idiomas, servicio web.

insertar.php

Hello Android! (V)

Este fichero está ubicado en la ruta: http://espai.site90.com/insertar.php
Si intentáis acceder no veréis el código fuente, sino el resultado.

listar.php

 

Hello Android! (V)

Este fichero está ubicado en la ruta: http://espai.site90.com/listar.php
Si intentáis acceder no veréis el código fuente, sino el resultado.

 

En este código merece una especial mención la función json_encode. Ésta se encarga de recibir un array y convertirlo a una cadena de texto en formato JSON. Estas siglas representan un estándar de codificación, una manera de enviar información compleja como texto simple. Si conocéis XML la idea es la misma, dar una estructura y orden a la información para que sea fácil de intercambiar entre aplicaciones.

Para que veáis un ejemplo os adjunto 2 documentos, uno en formato XML y otro en JSON

 

Hello Android! (V)

Ejemplo de documento XML
(Para aprender más sobre él, consulta este artículo)

 

Hello Android! (V)

Ejemplo de documento JSON

 

Como veis son bastante parecidos, aunque con diferencias. JSON no usa etiquetas, por lo que es ligeramente más compacto que XML. Vamos que ocupa menos, podemos entenderlo como un XML simplificado. A causa de esta simplificación es más rápido de aprender, y aunque no es tan potente como el primero va perfecto para nuestro ejemplo.

 

Código Android

 

Tal como está nuestra app Android, ya permite insertar elementos en la lista y mostrar el contenido. Lo que ocurre es que sólo utiliza información de nuestro teléfono, para que actualice la base de datos y muestre el contenido de la misma deberemos «comunicar» con el código PHP que hemos escrito.

Antes de nada, y para no olvidarlo debemos añadir esto al AndroidManifest.xml:

<uses-permission android:name=»android.permission.INTERNET» />
<uses-permission android:name=»android.permission.ACCESS_NETWORK_STATE» />

Esas líneas lo que hacen es decirle a Android «permite a esta app usar internet, y acceder al estado de la red». Si no las ponemos, recibiremos un mensaje de error cuando la app intente conectarse a PHP.

Lo siguiente es modificar nuestro Activity. A continuación añado el código, con sólo un apunte: Aparece un fichero nuevo (Conexion.java) que se encargará de consultar la base de datos e insertar los nuevos productos.

Hello Android! (V)

Código del activity HelloAndroid.java

Hello Android! (V)Código de la clase Conexion.java

Y ya está. Lo único que nos falta por hacer es instalar en nuestro teléfono/tablet la aplicación.

Instalación de la aplicación

 

Tenemos 2 posibilidades:

  1. Exportar el proyecto como aplicación Android, y enviarnos al teléfono el fichero HelloAndroid.apk. Cuando nos llegue (por ejemplo, por e-mail) abrir el fichero .apk, y el dispotitivo detectará que es una aplicación y nos preguntará si queremos instalarla. Nota: Debes tener marcada en configuración la opción «aplicaciones de fuentes desconocidas», ya que nuestra app no viene de Google Play sino directamente de nuestro Eclipse.
  2. Conectar nuestro teléfono al ordenador y cuando ejecutemos el proyecto, escoger nuestro teléfono en lugar del dispositivo virtual. Esto instalará automáticamente la aplicación.

Cualquiera de las dos es buena, el segundo sistema es más fácil pero si no detecta vuestro teléfono por la marca, o tenéis problemas con el driver la primera opción funciona siempre.

Hello Android! (V)

Exportar: Paso 1

Hello Android! (V)

Exportar: Paso 2

Ejecución de la aplicación

 

Éste es el aspecto final de la app.

Hello Android! (V)

Los productos que aparecen pueden variar, es más os invito a que lo probéis y buceéis un poco en el código. La programación es algo práctico que se aprende «tocando» asi que sin miedo! Manos a la obra.

Aquí tenéis el proyecto para descargar. Solo descomprimir, e importar en Eclipse.

http://www.espailab.com/blog/descargas/HelloAndroid.rar

Hello Android! (V)

Y hasta aquí la última entrega de la serie. En la misma hemos visto el proceso completo de creación de una app, cómo comunicar con otras aplicaciones y dispositivos, y cómo instalarla. Espero que os haya parecido interesante, y me despido de vosotros hasta el próximo artículo!

5Comentarios

  • Esteve
    22/09/2016

    hola buenas los metodos usados a dia de hoy 22/09/2016 estan obsoletos.

    he estado buscando y he encontrado el metodo HttpURLConnection.

    Tambien en el codigo de php hemos encontrado una cosa que lo mejora, en el while si lo llenamos con ‘utf8_encode’ se podra añadir los caracteres especiales a la base de datos y no dara error.

    Todo esto lo expongo porque llevo varios dias buscando la solucion y creo que os ayudara.

    Un saludo

  • Macarena
    25/03/2015

    Hola! lo primero, enhorabuena por tu blog, me encanta. En segundo lugar, te quería preguntar que métodos en el MainActivity son los necesarios para realizar consultas solo. Yo en lugar de hacerlo desde un MainActivity, lo hago desde un Fragment con un Slider. Muchas gracias y sigue así!

  • Macarena
    24/03/2015

    No se por que, me devuelve nulo cuando ejecuto la aplicacion en mi movil. Yo estoy cargando los listview desde un fragment. El OnCreate sería el mismo que el OnCreateView? y que métodos debería de llamar si solo quiero llenar el listview con la consulta?

    Muchas gracias y enhorabuena por el blog!

  • Yoli
    05/05/2014

    Muchas gracias por compartir el código! Voy a probarlo ahora.
    Por cierto, me gusta como escribe las entradas y le das ese toque gracioso jajaja.
    Saludos!

Escribe un comentario