Hola. ¡Buenos días a todos! En esta oportunidad les vengo a dejar algo básico para empezar la programación de aplicaciones para Android en lenguaje Python, si bien no les explicaré cómo funciona ni mucho menos, les dejaré algunas funciones para que ustedes quizás puedan expandir y desarrollar algo.
Bueno, antes que todo, debemos instalar la aplicación SL4A, que la encontraremos acá en su página oficial, yo uso el sl4a_r4.apk en el tablet y luego desde el mismo sitio web bajamos el Python For Android.
En todo código que programemos en nuestro Android, debemos importar la librería Android y crear el objeto para utilizar la API:
Código :
import android droid = android.Android()
OJO que eso es sólo si pretendes programar aplicaciones con funciones internas de tu Android, ya sea Cámara, WiFi, Contactos, etc.
Veamos algo sencillo, crear el típico alerta con un título y mensaje personalizados, para lo que usaremos droid.dialogCreateAlert('Titulo','Mensaje' ), pero para este ser mostrado debemos utilizar droid.dialogShow():
Código :
import android droid = android.Android() droid.dialogCreateAlert('Titulo','Mensaje') droid.dialogShow()
Otra cosa bien sencilla sería pedir datos por GetInput mediante otro cuadro de dialogo, el código es sencillo igualmente:
Código :
import android droid = android.Android() variable = droid.dialogGetInput('TITULO','INSERTE DATOS:').result
Ojo, debemos poner .result o nos devolverá el resultado junto a otros datos, como tenemos ya nuestros datos en 'variable', luego podemos mostrar lo insertado vía Cuadro de Alerta o vía print.
En caso de querer mostrar el resultado vía Alerta:
Código :
import android droid = android.Android() variable = droid.dialogGetInput('DATOS','Tu nombre:').result droid.dialogCreateAlert('Muestra Datos','Tu nombre es %s'%variable) droid.dialogShow()
La cual nos pedirá un nombre y posteriormente lo mostrará en un Alerta.
Otra cosa entre comillas interesante, es la posibilidad de añadir un DatePicker, bueno si no sabes qué es, es un cuadro que nos permite buscar fechas de manera más 'cómodas', ahora, veamos cómo aplicarlo en Python - Android. Para llamar al DatePicker, debemos crearlo antes, mediante droid.dialogCreateDatePicker([Año inicio], [Mes], [Día]) Y para mostrarlo, lo mismo de antes, droid.dialogShow(). Bien, veamos el código:
Código :
import android droid = android.Android() fecha = droid.dialogCreateDatePicker(1970, 1, 1) droid.dialogShow()
Paso a explicar esto un poco. Almacenamos el DatePicker en la variable 'fecha', pero qué sucede si hacemos un print fecha, como queriendo mostrar el resultado? Pues no devolverá nada, pues para esta situación debemos de utilizar droid.dialogGetResponse().result, lo que insertaremos en una variable llamada 'respuesta', de esta manera:
Código :
respuesta = droid.dialogGetResponse().result print respuesta
Bien, veamos que nos dice el print respuesta:
Código :
{u'year':1970, u'day':1, u'wich': u'positive', u'month':1}
Entonces, si solo queremos tomar el año o fecha o día o lo que sea, debemos añadir:
Código :
print respuesta['year']
['year'] ['day'] ['which'] ['mont']
Creo que no es necesario mostrar lo siguiente, pero nunca está de más, hablo sobre hacer que el celular o dispositivo vibre:
Código :
import android droid = android.Android() droid.vibrate(2000)
Se maneja por ms(milisegundos), por lo que 2000ms = 2s. Aprovechando esto, también pondré la manera de obtener el volumen máximo del timbre, como es algo sencillo solo dejo el código:
Código :
import android droid = android.Android() max = droid.getMaxRingerVolume().result print "Tope del volumen:", max
Otra sencillez más es mostrar lo que hay en el ClipBoard:
Código :
import android droid = android.Android() contenido = droid.getClipboard().result print "Contenido del clipboard:", contenido
Bueno, ya veamos algo quizás más 'útil', como lo son los botones, lo bueno de esto, es que en Android podemos personalizar el texto de los botones de : Si , No , Cancelar
Antes de dar paso a la creación de los botones, debemos crear un dialogCreateAlert('TITULO','MENSAJE' ).
Al grano, un ejemplo en código:
Código :
import android droid = android.Android() crear_alerta = droid.dialogCreateAlert('Titulo','Mensaje') boton_no = droid.dialogSetNegativeButtonText('NO!') boton_si = droid.dialogSetPositiveButtonText('SI!') boton_cancelar = droid.dialogSetNeutralButtonText('CANCELAR!') droid.dialogShow() respuesta = droid.dialogGetResponse().result print respuesta
Si das clic en el boton NO!, la respuesta será :
Código :
{u'wich':u'negative'}
Si das en SI! devolverá 'positive', y en caso de ser CANCELAR! devolverá 'neutral'.
Dejaré un ejemplo de uso bien básico.
Código :
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()
Por lo que dependerá del botón que presionemos la respuesta.
Aprovecho de dejar un par de códigos hechos por mi, para que conozcan más o menos como va la cosa:
El siguiente código, nos avisará cuando hay una nueva respuesta en un foro que participo yo. Nos devuelve un mensaje como en una nube pequeña (en caso del galaxy tab) en la parte inferior, con el nombre del topic en que se ha respondido o el nombre del nuevo tema, junto con eso, el dispositivo vibrará.
Código :
# -*- coding: utf-8 -*- import re,urllib, android droid = android.Android() x = [""] name_x = [""] d = [""] temp = "" while True: url=urllib.urlopen("http://www.portalhacker.net/SSI.php?ssi_function=recenttopics") for url,name in re.findall("<a href=\"http://www.portalhacker.net/index.php\?(.*)\">(.*)</a>",url.read()): if "action=profile" in url or "board=" in url: print "", else: name_x.append(name) x.append(url) break if x[-1]!=d[-1]: temp = name_x[-1] droid.makeToast("Nuevo post:%s"%temp) droid.vibrate(700) d.append(x[-1])
Ahora, la típica calculadora por secuencias, que si ingresas una operación te lo resuelve:
Código :
import android droid = android.Android() secuencia = droid.dialogGetInput('Secuencia','Inserta secuencia:', None).result resultado = eval(secuencia) droid.dialogCreateAlert('Resultado','Resultado %s'%resultado) droid.dialogShow()
Espero que se animen a programar en Python para Android ! , la potencia de Python & en Android !
Autor: JaAViEr(0x5d)
Saludos !
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por gersonm el 26 de Enero de 2012
Por johnny IV el 26 de Enero de 2012
MUY buena la explicación, gracias!!!!
Por hcks el 26 de Enero de 2012
Por JaAViEr el 27 de Enero de 2012
gersonm :
La verdad no he investigado eso, pero yo tenía la 2.1 de android y andaba bien...
johnny IV-blog :
estos ejemplos serían más gratificante, si se pudiera ver un video o pantallazo en el dispositivo para asi imaginarse lo que se está haciendo.
MUY buena la explicación, gracias!!!!
Originalmente tuve con pantallazos, pero me cerraron un hosting y las perdí todas :-\
hcks :
Muchas Gracias !
Por angel el 05 de Marzo de 2012
Por liz99 el 08 de Marzo de 2012
Por JaAViEr el 11 de Junio de 2012
liz99 :
Cuando hablas de Bases de Datos, se me viene automáticamente a la mente "SQLite" para Python. Si recién empiezas con Python y no manejas SQL, te recomiendo que te leas algo de material sobre el lenguaje de las Bases de Datos.
No sé si se le puedan instalar librerías externas de Python al Android.
Saludos, Javier.
Por Carlos_alt el 19 de Julio de 2012
Por Agustin Zubiaga el 13 de Agosto de 2012
Una pregunta, hay forma de crear una aplicacion como la conocemos, es decir que aparezca en launcher y que cuando la abras te muestre un canvas en el que puedas agregar widgets, etc?
Por richards el 14 de Diciembre de 2012
Por Joaquin el 04 de Abril de 2014
La verdad muy bueno! Te queria preguntar si tenes o no hay una lista con todos los metodos que podes usar y que digan que hace cada metodo.
Gracias por tu aporte! Espero tu respuesta!
Por dcaraballo el 26 de Abril de 2014
Por Luis O el 20 de Febrero de 2015
Por toribio el 13 de Mayo de 2015
Por wizo el 15 de Septiembre de 2015