Parte web
Para realizar la parte web utilicé como lenguaje en la parte de servidor PHP (Version 5.3.1), como Base de Datos MySQL y como servidor Web Apache. Vamos a simular la nube para realizar pruebas de manera local para eso podemos utilizar AppServer que pueden descargar del sitio oficial, además está disponible para varios sistemas operativos y es de muy fácil instalación y uso. No vamos a explicar cómo instalarlo y configurarlo porque no es el objetivo de este tutorial.
Parte Base de Datos:
Como ya se comentó utilizaremos MySQL, podemos aprovechar la utilidad que provee appserver llamada phpmyadmin por lo cual accederemos mediante http://127.0.0.1/phpmyadmin luego de loguearnos.
*si tuvieron algún problema pueden verificar la documentación oficial Vamos a crear una BD llamada ‘droid_login’ como lo muestra la siguiente imagen:
O si vamos a la solapa SQL podemos ejecutar la siguiente consulta:
CREATE DATABASE droid_login;
Crearemos una tabla llamada ‘usuarios’ en donde guardaremos el nombre de usuario y password juntos.
Podemos crear la tabla ejecutando esta simple consulta:
Create Table usuarios(username varchar(10) NOT NULL, passw varchar(20) NOT NULL)
Con esto basta por ahora con la base de datos.
Dentro de la carpeta “www” crearemos una carpeta llamada ‘droidlogin’ dentro de la cual colocaremos los siguientes archivos, estos serán la parte web de nuestro sistema.
config.php: En este se define el nombre de la base de datos su usuario,
password y la ip del servidor.
Es necesario modificar este archivo para poder adecuarlo a la configuración de la
BD de cada uno.
Deberán modificar el valor que está en rojo.
<?php
/**
* Database config variables
*/
/*DB_HOST Hace referencia a donde se encuentra la BD si es en el mismo equipo
utilizaremos localhost o 127.0.0.1 si se encuentra en otro equipo deberemos
colocar su dirección IP.*/
define(“DB_HOST”, “localhost“);
/*DB_USER cambiar por el nombre de usuario definido en la configuración de la
BD*/
define(“DB_USER”, “username“);
/*DB_PASSWORD Modificar por el password elegido*/
define(“DB_PASSWORD”, “password“);
/*DB_DATABASE Nombre de la base de datos reemplazar si se utilizó otro
diferente al mencionado anteriormente*/
define(“DB_DATABASE”, “droidlogin”);
?>
connectbd.php: Provee los métodos para conectarse y desconectarse a la BD.
funciones_bd.php: Provee los procedimientos para interactuar con la BD e
insertar nuevos usuarios, validar existencia de usuarios y validar un ‘login’
login.html: Mediante esta página podemos ‘loguearnos’ mediante el navegador
sirve para observar la respuesta del sistema.
acces.php: Se encarga de devolver en notacion Json si el logueo es valido
adduser.html: Permite realizar alta de usuarios verificando previamente su
existencia utiliza adduser.php
Para poder comprobar qué es lo que hará la aplicación podemos verlo a través del
navegador pero primero debemos crear un usuario.
Accedemos a http://localhost/droidlogin/adduser.html
Podemos ingresar:
-usuario: usuario1
-password: usuario1
Luego al clickear en ‘Agregar’.
Si queremos volver a agregar el mismo usuario, nos mostrará el siguiente
mensaje:
“Este usuario ya existe ingrese otro diferente!”
Por lo que la aplicación también controlara que no halla usuario repetidos.
Podemos verificar directamente desde la BD los usuarios creados:
Antes de pasar a la parte de Android vamos a probar si todo funciona
correctamente.
Para lo cual utilizaremos el archivo “login.html”
Accederemos mediante http://127.0.0.1/droidlogin/login.html
Veremos lo siguiente:
Ingresamos el usuario y password creados anteriormente.
Si configuramos todo correctamente y nada falla deberíamos acceder al archivo
“acces.php” el cual nos devolverá en notacion json si el logueo fue correcto o no.
[{"logstatus":"0"}] —> ” logueo invalido” –> debemos verificar que los datos
ingresados sean iguales a los creados en la BD.
[{"logstatus":"1"}] —> ” logueo valido”
Básicamente esto que nos devuelve el servidor es lo que leerá la app de android.
Para la UI he tratado de inspirarme en el contenido link http://inspired-
ui.com/tagged/logins aunque son de iOS sirven igual. He creado 2 interfaces para
cuando el teléfono se encuentre en posición horizontal (layout-land):
O vertical (layout-port):
Para hacer la interfaz más agradable hice que los EditText tengan bordes
redondeados, encontré en Stackoverflow un post sobre esto.
La pantalla de login es muy simple tiene un Button y 2 TextView que al
presionarlos cada uno hará una acción diferente.
Se encuentran definidos en los siguientes archivos:
/res/layout-port/main.xml
El xml que utilicé para hacer los bordes redondeados es este:
res/drawable-ldpi/edittext_rounded_corners.xml
Ahora el AndroidManifest.xml.
Como pueden ver hay definidas 2 activities definidos.
Ahora veremos el código principal, comento en cada caso.
/src/test/Droidlogin/Login.java
En la línea número 35 es necesario modificar esa dirección IP y reemplazarla por
la del PC en el que esté el servidor web con los archivos descritos anteriormente.
Si van a colocar esto en internet deberían usar el dominio correspondiente.
También recorriendo revisar el Logcat para entender mejor el funcionamiento.
Como vemos, utilizo una clase interna asynclogin la cual es una AsyncTask para
mostrar el progressdialog hasta que termina de realizarse la validación.
Desde esta clase redirección al usuario al HiScreen o en el caso de ser el ‘logueo’
inválido vibramos el teléfono y mostramos el mensaje de error.
También he creado una clase para manejar con mayor facilidad el envío de
peticiones a nuestro web service. El manejo de su respuesta se encuentra en:
/src/test/Droidlogin/library/Httppostaux.java
Ahora veremos la otra activity a la que seremos redirigidos si el login es correcto.
Para esta también definí dos layouts diferentes para cubrir el cambio de la
orientación de la pantalla.
/res/layout-port/lay_screen.xml
/res/layout-land/lay_screen.xml
Ahora el código de su clase:
/src/test/Droidlogin/HiScreen.java
Luego de todo esto,
Si todo fue configurado y funciona correctamente veremos al HiScreen que
comenté anteriormente.
Cuando el usuario presiona Cerrar sesión volvemos a la ventana de logueo.
Parte Aplicación Java Netbeans
Para la aplicación java, utilizaremos el nombre “serviciowebescritorio” como se ve
a continuación.
Luego haremos la interface para la aplicación:
Una vez hecha la interfaz nos dirigimos a la programación de las clases.
Presentación/Login.java:
Y finalmente pasamos a probar la aplicación de escritorio:
Si no ingresamos correctamente los datos aparecerá la siguiente ventana: