Está en la página 1de 29

BANCO SANGRE RH

PROGRAMAS UTILIZADOS
Android Studio es un entorno de desarrollo integrado para la plataforma Android. Fue
anunciado el 16 de mayo

de 2013 en la conferencia Google I/O, y reemplaz

a Eclipse como el IDE oficial para el desarrollo de aplicaciones para Android. La primera
versin estable fue publicada en diciembre de 2014.
Java

Development

desarrollo para

la

Kit o

(JDK),

creacin

es

un software que

de programas en Java.

provee herramientas
Puede

instalarse

de
en

una computadora local o en una unidad de red.

CREANDO LA APLICACIN
1- PASOS PARA DESARROLLAR UNA APP
Los siguientes datos listados, es informacin general de Internet, que sirvi
para tener una mejor visin acerca del proyecto.
-

Definir el propsito.
Recolectar informacin.
Crear bocetos.
Determinar fuentes de datos y estrategias de sincronizacin.
Elegir recursos y herramientas.

Creando el cascarn.
-

Arquitectura y patrones.
Definir tareas de programacin.
Crear la actividad con los productos.
Crear los fragmentos de estos productos.
Preparar los fragmentos.
Crear los controladores.
Implementar la vista de productos.
Implementar los presentadores individuales de productos.
Crear las fuentes de datos.

Crear el servicio REST con PHP, MYSQL, JSON, AJAX.


-

Elegir arquitectura para el servicio web.


Crear lista de tareas de programacin
Diseo de base de datos

Implementar base de datos en MySQL


Disear URIs para productos
Disear presentacin de recursos con JSON
Generar enrutamiento HTTP en index.php
Implementar vistas
Implementar controladores
Crear conexin a fuente de datos MySQL
Manejar errores con excepciones PHP
Testear API

Crear Cliente HTTP para consumir la API


-

Configurar Retrofit En Android


Habilitar permisos de red
Asegurar Serializaciones
Definir endpoints
Crear instancias del cliente REST
Ejecutar peticiones

2- UNA VEZ EN ANDROID STUDIO se selecciona la opcin de Nuevo


Proyecto. Con esto nos muestra una lista de campos que debemos completar
de la siguiente manera.

Application name: el nombre de la aplicacin; puede ser cambiado despus.


Module name: variable de Android, mayormente utiliza el mismo nombre de

app.
Package name: el identificador nico de la aplicacin.
Minimun required SDK: versin de Android mnima para utilizar la app.
Target SDK: mxima versin de Android con la que se ejecutar la app.
Language Level: versin de Java con la que se desarrollar la app.

Cuota de versiones del Mercado Android

3- PULSAMOS EN CONTINUAR y elegimos la opcin Actividad en Blanco.


Ya que este modelo es el ms bsico de las aplicaciones, presenta un cono en
la esquina superior derecha que desplegar una lista de opciones y una fecha
situada en la esquina superior izquierda que nos permitir ir hacia atrs.
4- EN LA PRXIMA PESTAA se mostrarn 3 nuevos campos. Vamos a
dejarlos sin editar y proseguimos.
5- AHORA QUEDA ESPERAR a que Android Studio configure la aplicacin
correctamente. El proceso dura aproximadamente de 2 a 5 minutos.

Entorno de la aplicacin

6- AHORA PROBAMOS LA APLICACIN BSICA, con la conexin a nuestro


sitio web. Para realizar la ejecucin de la aplicacin pulsamos Shift + F10.
Tarda aproximadamente 15 segundos en abrir una ventana con la app ya
ejecutndose.

Resultado de prueba en un Nexus 4

7- Procedemos a integrar todo el contenido a nuestra aplicacin, para esto


editamos el archivo fragment_main.xml ubicado en la carpeta Layout.
8- AHORA CREAREMOS EL WEB SERVICE.
Un

Web

Service

Servicio

Web

es

un

aplicativo que

facilita

la interoperabilidad entre varios sistemas independientemente del lenguaje de


programacin o plataforma en que fueron desarrollados. Este debe tener una
interfaz basada en un formato estndar entendible por las maquinas como lo es
XML o JSON.

POR EJEMPLO
Facebook es un aplicativo web construido con una determinada arquitectura y
lenguajes de programacin basados en el protocolo HTTP. Sin embargo
podemos usar esta red social en nuestro dispositivo Android.
Cmo es posible esto si Android es basado en Java?
Fcil, a travs de un Web Service construido para gestionar todas aquellas
operaciones sobre una base de datos alojada en los servidores de Facebook.
Quiere decir que ambos aplicativos usan como puente la web para acceder a
un solo repositorio de datos.
Como ves, un Web Service se crea con funcionalidades que permitan obtener
datos actualizados en tiempo real. El hecho de que sea dinmico incorpora el
uso de un lenguaje web para la gestin HTTP que en este caso ser PHP.

Wireframing, es el diseo previo que se genera para mostrar los elementos


principales en una interfaz.

Ejemplo de un Wireframing

En base a nuestro Wireframing podemos observar e identificar la cantidad de


actividades, fragmentos, dilogos y formularios que se necesitarn.

9- PROCESANDO LOS CDIGOS DEL PHP Y BASE DE DATOS.


La base de datos est compuesta por este fragmento de cdigo, utilizando 10
tablas.
FORMATO BASE DE DATOS MYSQL

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";


SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;


/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

CREATE DATABASE IF NOT EXISTS `bancosangre` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `bancosangre`;

DROP TABLE IF EXISTS `bancos`;


CREATE TABLE IF NOT EXISTS `bancos` (
`idbanco` int(4) unsigned zerofill NOT NULL,
`nombre_banco` varchar(255) DEFAULT NULL,
`nombre_contacto` varchar(255) DEFAULT NULL,
`domicilio` varchar(255) DEFAULT NULL,
`colonia` varchar(55) DEFAULT NULL,
`telefono` varchar(20) DEFAULT NULL,
`localidad` varchar(255) DEFAULT NULL,
`estado` varchar(55) DEFAULT NULL,
`correo` varchar(255) DEFAULT NULL,
`clave` varchar(255) DEFAULT NULL,

`fecha_registro` timestamp NULL DEFAULT CURRENT_TIMESTAMP,


`latitud` varchar(255) DEFAULT NULL,
`longitud` varchar(255) DEFAULT NULL,
`rfc` varchar(20) DEFAULT NULL,
`status` varchar(500) NOT NULL DEFAULT 'ACTIVO'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;

DROP TABLE IF EXISTS `beneficiarios`;


CREATE TABLE IF NOT EXISTS `beneficiarios` (
`idbeneficiario` int(6) unsigned zerofill NOT NULL,
`nom_beneficiario` varchar(255) DEFAULT NULL,
`curp` varchar(20) DEFAULT NULL,
`sexo` varchar(10) DEFAULT NULL,
`domicilio` varchar(50) DEFAULT NULL,
`colonia` varchar(50) DEFAULT NULL,
`telefono` varchar(20) DEFAULT NULL,
`localidad` varchar(50) DEFAULT NULL,
`estado` varchar(50) DEFAULT NULL,
`tiposangre` varchar(5) DEFAULT NULL,
`bancos` int(4) unsigned zerofill DEFAULT '0000',
`rfc` varchar(18) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

DROP TABLE IF EXISTS `donantes`;


CREATE TABLE IF NOT EXISTS `donantes` (
`iddonante` int(6) unsigned zerofill NOT NULL,
`nom_donante` varchar(255) DEFAULT NULL,
`curp` varchar(20) DEFAULT NULL,
`sexo` varchar(10) DEFAULT NULL,
`domicilio` varchar(50) DEFAULT NULL,
`colonia` varchar(50) DEFAULT NULL,
`telefono` varchar(20) DEFAULT NULL,
`localidad` varchar(50) DEFAULT NULL,

`estado` varchar(50) DEFAULT NULL,


`tiposangre` varchar(5) DEFAULT NULL,
`edad` smallint(3) DEFAULT NULL,
`vacuna` char(2) DEFAULT NULL,
`hepatitis` char(2) DEFAULT NULL,
`tatuajes` char(2) DEFAULT NULL,
`cirugia` char(2) DEFAULT NULL,
`diabetes` char(2) DEFAULT NULL,
`tos` char(2) DEFAULT NULL,
`ultima_relacion` date DEFAULT NULL,
`perdida_dental` tinyint(1) DEFAULT NULL,
`bancos` int(4) unsigned zerofill DEFAULT '0000'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

DROP TABLE IF EXISTS `estados`;


CREATE TABLE IF NOT EXISTS `estados` (
`id` int(11) NOT NULL,
`estado` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=33 ;

DROP TABLE IF EXISTS `estados_municipios`;


CREATE TABLE IF NOT EXISTS `estados_municipios` (
`id` int(11) NOT NULL,
`estados_id` int(11) NOT NULL,
`municipios_id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2478 ;

DROP TABLE IF EXISTS `facturas`;


CREATE TABLE IF NOT EXISTS `facturas` (
`id` int(7) NOT NULL,
`producto` varchar(300) NOT NULL,
`cantidad` int(11) NOT NULL,
`precio` varchar(11) NOT NULL,

`subtotal` varchar(11) NOT NULL,


`total` varchar(11) NOT NULL,
`beneficiario` varchar(500) NOT NULL,
`tiposangre` varchar(300) NOT NULL,
`rfc` varchar(300) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

DROP TABLE IF EXISTS `historial_donacion`;


CREATE TABLE IF NOT EXISTS `historial_donacion` (
`idhistorial` int(11) NOT NULL,
`bancos` int(4) unsigned zerofill DEFAULT '0000',
`donante` int(4) unsigned zerofill DEFAULT '0000',
`tipo_sangre` varchar(5) DEFAULT NULL,
`fecha_donacion` date DEFAULT NULL,
`tipo_donacion` varchar(15) DEFAULT NULL,
`unidad` decimal(20,0) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;

DROP TABLE IF EXISTS `municipios`;


CREATE TABLE IF NOT EXISTS `municipios` (
`id` int(11) NOT NULL,
`municipio` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2478 ;

DROP TABLE IF EXISTS `unidad_sangre_bancos`;


CREATE TABLE IF NOT EXISTS `unidad_sangre_bancos` (
`idunidad` int(11) NOT NULL,
`bancos` int(4) unsigned zerofill DEFAULT '0000',
`tipo_1` decimal(20,0) DEFAULT NULL,
`precio_1` decimal(10,2) DEFAULT NULL,
`tipo_2` decimal(20,0) DEFAULT NULL,
`precio_2` decimal(10,2) DEFAULT NULL,
`tipo_3` decimal(20,0) DEFAULT NULL,

`precio_3` decimal(10,2) DEFAULT NULL,


`tipo_4` decimal(20,0) DEFAULT NULL,
`precio_4` decimal(10,2) DEFAULT NULL,
`tipo_5` decimal(20,0) DEFAULT NULL,
`precio_5` decimal(10,2) DEFAULT NULL,
`tipo_6` decimal(20,0) DEFAULT NULL,
`precio_6` decimal(10,2) DEFAULT NULL,
`tipo_7` decimal(20,0) DEFAULT NULL,
`precio_7` decimal(10,2) DEFAULT NULL,
`tipo_8` decimal(20,0) DEFAULT NULL,
`precio_8` decimal(10,2) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

DROP TABLE IF EXISTS `webmaster`;


CREATE TABLE IF NOT EXISTS `webmaster` (
`idusuario` int(4) unsigned NOT NULL,
`nombre` varchar(255) DEFAULT NULL,
`alias` varchar(25) DEFAULT NULL,
`clave` varchar(25) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

ALTER TABLE `bancos`


ADD PRIMARY KEY (`idbanco`), ADD UNIQUE KEY `correo` (`correo`), ADD UNIQUE KEY `nombre_banco`
(`nombre_banco`);

ALTER TABLE `beneficiarios`


ADD PRIMARY KEY (`idbeneficiario`);

ALTER TABLE `donantes`


ADD PRIMARY KEY (`iddonante`);

ALTER TABLE `estados`


ADD PRIMARY KEY (`id`);

ALTER TABLE `estados_municipios`


ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `estados_id` (`estados_id`,`municipios_id`), ADD KEY
`municipios_id_refs_id_6d8b23ec` (`municipios_id`);

ALTER TABLE `facturas`


ADD PRIMARY KEY (`id`);

ALTER TABLE `historial_donacion`


ADD PRIMARY KEY (`idhistorial`);

ALTER TABLE `municipios`


ADD PRIMARY KEY (`id`);

ALTER TABLE `unidad_sangre_bancos`


ADD PRIMARY KEY (`idunidad`), ADD UNIQUE KEY `bancos` (`bancos`);

ALTER TABLE `webmaster`


ADD PRIMARY KEY (`idusuario`);

ALTER TABLE `bancos`


MODIFY `idbanco` int(4) unsigned zerofill NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=8;
ALTER TABLE `beneficiarios`
MODIFY `idbeneficiario` int(6) unsigned zerofill NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=6;
ALTER TABLE `donantes`
MODIFY `iddonante` int(6) unsigned zerofill NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=11;
ALTER TABLE `estados`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=33;
ALTER TABLE `estados_municipios`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2478;
ALTER TABLE `facturas`
MODIFY `id` int(7) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3;
ALTER TABLE `historial_donacion`

MODIFY `idhistorial` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=8;


ALTER TABLE `municipios`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2478;
ALTER TABLE `unidad_sangre_bancos`
MODIFY `idunidad` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3;
ALTER TABLE `webmaster`
MODIFY `idusuario` int(4) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

CONEXIN A PHP POR MYSQL

error_reporting(0);

$usuario = "root";
$password = "";

$con = new PDO('mysql:host=localhost;dbname=bancosangre', $usuario, $password,


array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

FUNCIN PARA MOSTRAR ALERTAS

function alerta($text, $color) {

if($color == 'R') {

echo '<div class="alert alert-warning alert-dismissable">


<button type="button" class="close" data-dismiss="alert">&times;</button>
<strong>Cuidado!</strong> '.$text.'
</div>';

} else {

echo'
<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<strong>Bien Hecho!</strong> '.$text.'
</div>
';

FORMATO PARA LISTAS EN LA APP.

<?php
session_start();
include("../bd/conectar_bd.php");
if (isset($_POST["buscar"])){
$query=$con->prepare('SELECT * FROM bancos where nombre_banco like ? or
localidad like ? or rfc like ? ');
$query->execute(array( "%".$_POST["buscar"]."%", "%".$_POST["buscar"]."%", "%".
$_POST["buscar"]."%"));
}else{
$query=$con->prepare('SELECT * FROM bancos order by nombre_banco');
$query->execute();
}

$don=$query->fetchAll();
?>
<br>

<div class="m-responsive">

<table class="table table-bordered


table-hover table-condensed table-responsive">
<tr>

<td
class="danger">Id Banco</td>
<td
class="danger">Nombre del Banco</td>
<td
class="danger">Domicilio</td>
<td
class="danger">Telefono</td>
<td
class="danger">Localidad</td>
<td
class="danger">Status</td>
<td
class="danger"></td>
</tr>
<?php
foreach
($don as $r) {

if ($r[14] == "INACTIVO"){

$botones='<a href="borrar_bancos.php?id='.$r[0].'"class="btn btn-sm btn-danger" title="Eliminar


Registro"><span class="glyphicon glyphicon-trash"></span></a>

<a href="activar_bancos.php?id='.$r[0].'"class="btn btn-sm btn-success"


title="Activar Registro"><span class="glyphicon glyphicon-ok"></span></a>

';

}else{

$botones='<a href="borrar_bancos.php?id='.$r[0].'"class="btn btn-sm btn-danger" title="Eliminar


Registro"><span class="glyphicon glyphicon-trash"></span></a>

<a href="desactivar_bancos.php?id='.$r[0].'"class="btn btn-sm btn-warning"


title="Desactivar Registro"><span class="glyphicon glyphicon-ban-circle"></span></a>

';

echo '

<tr>

<td>'.$r[0].'</td>

<td>'.$r[1].'</td>

<td>'.$r[3].'</td>

<td>'.$r[5].'</td>

<td>'.$r[6].'</td>

<td>'.$r[14].'</td>

<td>

'.$botones.'

</td>

</tr>

';

?>
</table>

</div>

FORMATO PARA FORMULARIOS EN LA APP.

<?php
session_start();
include("../bd/conectar_bd.php");
require '../bd/secure.php';
$query=$con->prepare('SELECT nombre FROM municipios where estado_id="30" order by nombre');
$query->execute();
$mun=$query->fetchAll();

?>
<!DOCTYPE html>
<head>
<?php include("begin.php"); ?>
</head>
<body >
<div class="cuerpo">
<?php include("header_cpanel.php"); ?>
<div class="contenido">
<div class="row div_inicio">
<div class="col-md-12">

<div class="panel panel-danger">


<div class="panel-heading"><h4><strong>::::Registro de Bancos de
Sangre::::</strong></h4></div>
<div class="panel-body">
<form role="form">
<div class="col-md-6">
<label>Nombre del Banco de
Sangre</label>
<input type="text" class="form-control
input-sm" id="nombre_banco">
</div>
<div class="col-md-6">
<label>Nombre de la Persona de
Contacto</label>
<input type="text" class="form-control
input-sm" id="nombre_contacto">
</div>
<div class="col-md-12"><hr></div>
<div class="col-md-5">
<label>Domicilio</label>
<input type="text" class="form-control
input-sm" id="domicilio">
</div>
<div class="col-md-4">
<label>Colonia</label>
<input type="text" class="form-control
input-sm" id="colonia">
</div>

<div class="col-md-3">
<label>Telfono</label>
<input type="text" class="form-control
input-sm" id="telefono">
</div>

<div class="col-md-12"><hr></div>
<div class="col-md-3">
<label>RFC</label>

<input type="text" class="form-control


input-sm" id="rfc" >
</div>
<div class="col-md-4">
<label>Estado</label>
<select class="form-control input-sm"
id="estado">
<option
value="Veracruz">Veracruz</option>
</select>
</div>

<div class="col-md-5">
<label>Localidad / Municipio</label>
<select class="form-control input-sm"
id="localidad">
<?php
foreach
($mun as $r) {

echo '<option value="'.$r[0].'">'.$r[0].'</option> ';


}

?>
</select>

</div>

<div class="col-md-12"><hr></div>
<div class="col-md-6">
<label>Correo Electrnico</label>
<input type="text" class="form-control
input-sm" id="correo">
</div>
<div class="col-md-3">
<label>Clave de Acceso</label>
<input type="password" class="formcontrol input-sm" id="clave">

</div>
<div class="col-md-3">
<label>Repetir Clave de
Acceso</label>
<input type="password" class="formcontrol input-sm" id="repetir">
</div>
<div class="col-md-12"><hr></div>
<div class="col-md-2">
<button class="btn btn-primary btn-block " id="btnregistro"
type="button"><span class="glyphicon glyphicon-ok-sign"></span> Registrarse</button>
</div>
<div class="col-md-2">
<a href="cpanel.php" class="btn btn-danger btn-block " ><span
class="glyphicon glyphicon-log-out"></span> Cancelar</a>
</div>
<div class="col-md-8" id="msg"></div>
</form>
</div>
</div>
</div>
</div>
</div>
<?php include("footer.php"); ?>
</div>
</body>
</html>
<script>
$("#btnregistro").click(function(){
$(".error").fadeOut().remove();

if ($("#nombre_banco").val() == "") {
$("#nombre_banco").focus().after('<span class="error">LLene este campo</span>');
return false;
}else if ($("#nombre_contacto").val() == "") {

$("#nombre_contacto").focus().after('<span class="error">LLene este campo</span>');


return false;
}else if ($("#domicilio").val() == "") {
$("#domicilio").focus().after('<span class="error">LLene este campo</span>');
return false;
}else if ($("#colonia").val() == "") {
$("#colonia").focus().after('<span class="error">LLene este campo</span>');
return false;
}else if ($("#telefono").val() == "") {
$("#telefono").focus().after('<span class="error">LLene este campo</span>');
return false;
}else if ($("#localidad").val() == "") {
$("#localidad").focus().after('<span class="error">LLene este campo</span>');
return false;
}else if ($("#rfc").val() == "") {
$("#rfc").focus().after('<span class="error">LLene este campo</span>');
return false;
}else if ($("#estado").val() == "") {
$("#estado").focus().after('<span class="error">LLene este campo</span>');
return false;
}else if ($("#correo").val() == "") {
$("#correo").focus().after('<span class="error">LLene este campo</span>');
return false;
}else if ($("#clave").val() == "") {
$("#clave").focus().after('<span class="error">LLene este campo</span>');
return false;
}else if ($("#repetir").val() == "") {
$("#repetir").focus().after('<span class="error">LLene este campo</span>');
return false;
}else if ($("#clave").val() != $("#repetir").val()) {
$("#repetir").focus().after('<span class="error">Las claves son diferentes</span>');
return false;
}else{

var parametros = {
"nombre_banco"

: $("#nombre_banco").val(),

"nombre_contacto": $("#nombre_contacto").val(),
"domicilio"

: $("#domicilio").val(),

"colonia"

: $("#colonia").val(),

"telefono"

: $("#telefono").val(),

"localidad"

: $("#localidad").val(),

"rfc"

: $("#rfc").val(),

"estado"

: $("#estado").val(),

"correo"

: $("#correo").val(),

"clave"

: $("#clave").val()

};

$.ajax({
url: "../script/add_bancos.php",
type: "post",
data: parametros,
beforeSend: function(){
$("#msg").html("<img src='../img/load.gif'>");
},
success: function(datos){

$("#msg").html(datos);

document.getElementById('nombre_banco').value="";

document.getElementById('nombre_contacto').value="";
document.getElementById('domicilio').value="";
document.getElementById('colonia').value="";
document.getElementById('telefono').value="";
document.getElementById('localidad').value="";
document.getElementById('estado').value="";
document.getElementById('correo').value="";
document.getElementById('clave').value="";

document.getElementById('repetir').value="";
},
error: function(){
$("#msg").html("Hubo un error...");
}
});
}
});
$("#nombre_banco, #nombre_contacto, #domicilio, #colonia, #telefono, #localidad, #estado, #clave").on('blur keyup
change keypress', function(){
$(".error").fadeOut().remove();
$("#msg").html("");

});

</script>

10- CODIFICACION DE LA APP ANDROID Y EL PHP


Ya que construimos todo nuestro Web Service, es hora de armar nuestra app
gestora de las funciones y mtodos de ejecucin, para tomamos en cuenta
esto:
-

Tenemos un patrn cliente HttpURLConnection o Singleton Volley

para las peticiones.


Tratamos las respuestas del servidor AJAX con mtodo JSON para las

respuestas del PHP en la app.


Un adaptador que procesar los elementos del Recycler view.
Tratar los eventos para la comunicacin de datos a travs de los
controladores.

Estructura del Patrn del Singleton Volley.


Este es un paso bsico para la gestin de peticiones HTTP. Para ello
importamos la librera de JAVA.

import android.content.Context;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

public final class VolleySingleton {

// Atributos
private static VolleySingleton singleton;
private RequestQueue requestQueue;
private static Context context;

private VolleySingleton(Context context) {


VolleySingleton.context = context;
requestQueue = getRequestQueue();
}

/**
* Retorna la instancia unica del singleton
* @param context contexto donde se ejecutarn las peticiones
* @return Instancia
*/
public static synchronized VolleySingleton getInstance(Context context) {
if (singleton == null) {
singleton = new VolleySingleton(context.getApplicationContext());
}
return singleton;
}

/**

* Obtiene la instancia de la cola de peticiones


* @return cola de peticiones
*/
public RequestQueue getRequestQueue() {
if (requestQueue == null) {
requestQueue = Volley.newRequestQueue(context.getApplicationContext());
}
return requestQueue;
}

/**
* Aade la peticin a la cola
* @param req peticin
* @param <T> Resultado final de tipo T
*/
public <T> void addToRequestQueue(Request<T> req) {
getRequestQueue().add(req);
}

11- OTRAS VARIABLES Y FUNCIONES GENERALES


Otras funciones importantes en la app fueron recreadas con JavaScript.
<script type="text/javascript">

$(document).ready(function(){

$("#estado").change(function(){

load_municipes();

});

});

function load_municipes() {

var code = $("#estado").val();


$.get("municipe.php", { code: code },

function(resultado){

if(resultado == false) {

alert("Error");

} else {

$('#bomar_municipes').html('');
$("#estado").attr("disabled",false);

$('#bomar_municipes').html(resultado);

}
}

);

</script>

Como lo fue el obtener los Estados y relacionarlos con sus Municipios.


Con el fin de ahorrar espacio y generar una mayor fluidez en la app, se crearon
archivos individuales para las cabeceras, el pie de pgina y fueron incluidos
en todos los archivos usados, de esta manera ahorramos espacio en lneas de
cdigo.

12- CONSULTAS GENERALES MYSQL


Para el registro de datos utilizamos est estructura en todos los archivos.
include("../bd/conectar_bd.php");
$query=$con->prepare("INSERT INTO historial_donacion (bancos, donante, tipo_sangre, fecha_donacion,
tipo_donacion, unidad,costo) VALUES (?,?,?,?,?,?,?)");
$result=$query->execute(array(
$_POST["bancos"], $_POST["iddonante"], $_POST["tipo_sangre"],
$_POST["fecha_donacion"], $_POST["tipo_donacion"], $_POST["unidad"], $_POST["costo"]));

Para eliminar registros.


include("../bd/conectar_bd.php");
$query=$con->prepare("DELETE FROM bancos WHERE idbanco=? ");
$result=$query->execute(array($_POST["bancos"] ));

Para editar registros.


include("../bd/conectar_bd.php");
$query=$con->prepare("UPDATE bancos SET status=? WHERE idbanco=? ");
$result=$query->execute(array($_POST["status"], $_POST["bancos"] ));

13- FINALMENTE
Finalmente hemos procesado lo ms importante de nuestra estructura para el
sitio, lo dems fue cuestin de cambiar variables, pero utilizando los mismo
mtodos ya expuestos, las funciones y las principales conexiones a la base de
datos.
Generando as una aplicacin para Android estable, con las funcionalidades
ligadas al sitio web, mostrando la informacin adecuada a travs de una base
de datos MYSQL.

PUBLICANDO APP EN GOOGLE PLAY STORE

Una vez que se haya finalizado toda la aplicacin y probado adecuadamente


podemos publicarla en la tienda oficial de Android que es Google Play Store,
esto no es un proceso gratis, pero es demasiado sencillo.
1- Para ello se registra una cuenta de GMAIL.
2- Se leen los trminos y condiciones que impone Google al servicio de
Desarrollador.
3- Se prosigue pagando una cuota de 25 USD; que son aproximadamente
$515.00 MXN.
4- Una vez se finaliza el pago se procede a rellenar la informacin de la
cuenta.
5- Se
va

uno

Google

Play

Developer

Console

(https://play.google.com/apps/publish/).
6- Seleccionamos Todas las aplicaciones > Agregar nueva aplicacin.
7- En el men desplegable, seleccionamos el idioma predeterminado y
agregamos un ttulo para la app. Se escribe el nombre de la app como
va a aparecer en Google Play.
8- Seleccionamos Cargar archivo APK.
9- Elegimos los canales de produccin (Alfa o Beta) y selecciona la opcin
para cargar tu archivo APK.
10- Finalmente tendremos nuestra aplicacin en Play Store lista para que
la descarguen nuestros usuarios.

También podría gustarte