sábado, 24 de noviembre de 2012

Crear aplicaciones para Android con Perl Ejemplo

Vamos a seguir con el desarrollo de aplicaciones para android con perl,en este caso o mejor dicho en esta entrada ya se tiene tomado en cuenta que ya tienes las apps necesarias para programar listas y instaladas en tu móvil.

Si no es así visita este tutorial:

Tutorial

Bien ahora vamos a hablar claro,el desarrollo de apps para android se puede hacer en muchos lenguajes de programación  desde su lenguaje nativo,en C,C++ en scripting con lenguajes no compilados,android ofrece esta característica a los desarrolladores profesionales o a los aficionados autodidactas como yo,esto se puede integrar a un desarrollo muy bueno,para crear una app muy buena,pero, que pasa con el scripting?

Como funciona el scripting en android?

El scripting en Android funciona gracias a SL4a (Scripting Layer for Android) SL4a usa Android Facades para exponernos las API's disponibles,esto hace que sea el lenguaje de scripting que sea nos brinda el mismo set de API's

Que son las API's?

API (del inglés Application Programming Interface) es el conjunto de funciones y procedimientos  en la programación orientada a objetos, que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.

Osea que en otras palabras podemos programar algo con el set de API's que nos ofrecen,en otras palabras no tendremos el mismo resultado que si programamos en Java

Asi es como funciona una app de Android con SL4a


Esa imagen es de python,pero SL4A funciona igual con Python,Perl,Lua

Bien aqui un ejemplo

Programa de encuesta para Android escrita en python hecho por cristalab.com

Este programa lo que hace es Abrir una Alerta y preguntar algo y la respuesta se efectúa con botones ,luego con una estructura selectiva muestra una alerta para cada boton:


import android
droid = android.Android()
crear_alerta = droid.dialogCreateAlert('Encuesta','Te gusta http://rootcodes.com?')
boton_no = droid.dialogSetNegativeButtonText('No me gusta')
boton_si = droid.dialogSetPositiveButtonText('Si, me gusta')
boton_cancelar = droid.dialogSetNeutralButtonText('Yo no voto!')
droid.dialogShow()
respuesta = droid.dialogGetResponse().result
if respuesta['which']=='positive':
  droid.dialogCreateAlert('Gracias por tu voto','Me alegra que te guste!')
elif respuesta['which']=='negative':
  droid.dialogCreateAlert('Gracias por tu voto','Una lastima que no te guste!')
else:
  droid.dialogCreateAlert('Gracias por tu voto','Un voto nulo :\\')
droid.dialogShow()


Mas info en cristalab.com

Como también se python traduje ese algoritmo a perl y luce así(cambie el texto y añadí unos botones) pero hace lo mismo.


use Android;

my $droid = Android->new();
$droid->dialogCreateAlert("Encuesta", "Te gusta perl");
$droid->dialogSetNegativeButtonText("No me gusta");
$droid->dialogSetPositiveButtonText("Si me gusta");
$droid->dialogSetNeutralButtonText("Yo no Voto!!");
$droid->dialogShow();

my $respuesta = $droid->dialogGetResponse->{'result'};

my $which = $respuesta->{'which'};

if($which =~ m/positive/) {
$droid->dialogCreateAlert('  Gracias', 'Por tu respuesta');
$droid->dialogSetPositiveButtonText("Salir");
}
elsif($which =~ m/negative/) {
$droid->dialogCreateAlert('  Que mal', 'Gracias por tu respuesta');
$droid->dialogSetPositiveButtonText("oK");
}
elsif ($which =~ m/neutral/) {
$droid->dialogCreateAlert('  Gracias', 'Tal vez luego');
$droid->dialogSetPositiveButtonText("oK");
}

$droid->dialogShow()


Lo explico:


my $droid = Android->new(); # Nueva estructura
$droid->dialogCreateAlert("Encuesta", "Te gusta perl"); # Crea Alerta
$droid->dialogSetNegativeButtonText("No me gusta"); # Crea Botón
$droid->dialogSetPositiveButtonText("Si me gusta"); # Otro botón
$droid->dialogSetNeutralButtonText("Yo no Voto!!"); # Y otro botón
$droid->dialogShow(); # Mostramos la alerta

Eso hace esto:



Ahora esto:

my $respuesta = $droid->dialogGetResponse->{'result'};

Comienza después de pulsar un botón.
Esta variable no sera visible,lo que hace es pedir la respuesta,o mejor dicho ver que botón se pulso,la sintaxis ya la hemos visto,solo que aquí usa los argumentos Android.

Esto:

my $which = $respuesta->{'which'};


Tampoco sera visible,lo que hace es limpiar la respuesta a positive,negative o neutral y guardarlo en una variable ($which).

Y por ultimo:

if($which =~ m/positive/) {
$droid->dialogCreateAlert('  Gracias', 'Por tu respuesta');
$droid->dialogSetPositiveButtonText("Salir");
}
elsif($which =~ m/negative/) {
$droid->dialogCreateAlert('  Que mal', 'Gracias por tu respuesta');
$droid->dialogSetPositiveButtonText("oK");
}
elsif ($which =~ m/neutral/) {
$droid->dialogCreateAlert('  Gracias', 'Tal vez luego');
$droid->dialogSetPositiveButtonText("oK");
}

$droid->dialogShow()



Creamos una estructura selectiva de tres comparadores,solo cabe mencionar que usamos una expresión regular para comparar la respuesta:

$which =~ m/negative/

Al final if :


if($which =~ m/positive/) {
$droid->dialogCreateAlert('  Gracias', 'Por tu respuesta');
$droid->dialogSetPositiveButtonText("Salir");
}


hará esto:


El primer elsif :

elsif($which =~ m/negative/) {
$droid->dialogCreateAlert('  Que mal', 'Gracias por tu respuesta');
$droid->dialogSetPositiveButtonText("oK");
}


Esto:


Y el segundo elsif:

elsif ($which =~ m/neutral/) {
$droid->dialogCreateAlert('  Gracias', 'Tal vez luego');
$droid->dialogSetPositiveButtonText("oK");
}

Esto:




Cabe mencionar que esta forma de programación se hace desde el móvil y es algo molesto, pero pueden hacerlo desde la pc,solo metan el script en la carpeta sl4a/scripts de su memoria del movil



Y checen la API


Es muy buen set


Eso es todo :D



No hay comentarios.:

Publicar un comentario

Los comentarios serán revisados antes de ser publicados.