27 de jun. de 2010

Enviar mensajes de texto desde Android con python

Continuando con la referencia del API de ASE para Android se explicará como enviar un mensaje de texto desde python para un celular con Android.

EL API para enviar mensajes de texto es el siguiente:
smsSend(
 String destinationAddress: typically a phone number,
String text)

Sends an SMS.
#Importando el módulo android y el módulo time
import android, time

#Creando la instancia droid del objeto Android
droid = android.Android()

#Asignando el número de teléfono y mensaje
telefono ="0xxxyyyyyyy"
mensaje = "Esta es una prueba de envio de sms a la hora %s" %time.ctime()

#Enviar mensaje a la pantalla de android con la info del número y mensaje
droid.makeToast("enviando mensaje a %s, con el siguiente contenido: %s" %(telefono,mensaje))

#Enviando el mensaje de texto
droid.smsSend(telefono,mensaje)

El mensaje llego al celular del número asignado sin problemas.

Enviar correo desde Android con python





Siguiendo con la API de ASE se tiene una función que permite enviar un correo pasando el correo, el asunto y el cuerpo del correo.

La función del API de ASE que permite enviar correos se llama:
sendEmail(correo,asunto,cuerpo_correo)

A continuación se coloca el código del programa en python para enviar el correo:

#Se importa el módulo android
import android

#Se crea la instancia de la clase Android
droid = android.Android()

#Se define la dirección de correo, el asunto del correo y el contenido del mismo
asunto = "Prueba de envio de correo desde Android con un script de python"
para = "ecrespo@gmail.com"
cuerpo_correo = "Esta es una prueba de envio de correo\n El tiempo en el reloj es: %s\n ------\n Ernesto Crespo\n" %time.ctime()

#Se llama a la función sendEmail con los datos necesarios.
#Esto llama a la aplicación de envío de correo de forma gráfica con la
#información que se pasa en la función.
droid.sendEmail(para,asunto,cuerpo_correo)

#Se finaliza la instancia de la clase.
droid.exit()

El resultado se puede ver en las siguientes imágenes:
La primera imagen es del buzón de salida.

Y la siguiente imagen es del buzón de recibidos.

Notará que en el correo se tiene la hora de ejecución del script pero el script se recibió a otra hora, el problema fue que el celular no tenía conexión 3G y se tuvo que conectar a una red wifi para poder enviar los correos.

Escaneado de redes inalámbricas con python desde Android

Revisando el API de ASE encuentro que hay una forma de escanear redes inalámbricas con python en Android.
La idea es escanear las redes inalámbricas existentes y luego guardar la información en un archivo y presentarla en pantalla del celular.

A continuación se presenta el código:

#Importar los módulos android y time
import android,time

#Creando el objeto droid de la clase Android
droid = android.Android()

#Escanear las redes inalámbricas existentes y guardar en la variable redeswifi
redeswifi = droid.wifiGetScanResults()

#Se crea un archivo de texto donde se almacenará la información de las redes
archivo = open('/sdcard/redes.txt','w')

#Se crea una lista vacía
lista = []

#La información de las redes inalámbricas se encuentra en el indice 1
# de una lista, este indice contiene otra lista y dentro hay un diccionario
for i in range(len(redeswifi[1])):
#Se espera 1 segundo por cada iteración
time.sleep(1)

#Se toma los valores del diccionario(ssid,frequency,capabilities,level)
essid = redeswifi[1][i]['ssid']
frecuencia = redeswifi[1][i]['frequency']
capacidad = redeswifi[1][i]['capabilities']
level = redeswifi[1][i]['level']

#Se prepara la información para ser presentada en pantalla y en archivo
infored = "Red inalambrica : %s, frecuencia: %s, señal: %s, cifrado:%s" \
%(essid,frecuencia,level,capacidad)

#Se presenta la información en la pantalla del celular y se guarda también
#en una lista
droid.makeToast(infored)
lista.append("%s\n" %infored)

#Se escribe en el archivo y se cierra el mismo
archivo.writelines(lista)
archivo.close()

A continuación se muestra el contenido del archivo generado en el script:

Red inalambrica : prueba, frecuencia: 2442, señal: -91, cifrado:
Red inalambrica : pasillo, frecuencia: 2422, señal: -93, cifrado:[WPA2-PSK-TKIP+CCMP]

13 de jun. de 2010

Lector de código de barras hecho en python para Android

Este post se basa en el artículo en inglés de Matt Cutts donde crea el lector de código de barras en 6 líneas de código, el enlace del blog lo tienen acá.

A continuación tienen el código necesario para buscar en internet un código de barras capturado por medio de la camara del celular:

#Importar modulo android
import android
#Instanciar el objeto Android
droid = android.Android()
#Llama al lector de código de barras del celular, se captura el código ISBN
# y se abre un navegador en google books para buscar ese código
droid.startActivity('android.intent.action.VIEW', "http://books.google.com?q=%d" %int(droid.scanBarcode()[1]['extras']['SCAN_RESULT']))

Eliminando los comentarios al final el script contiene sólo 3 líneas de código para realizar la busqueda en internet libros por medio del código de barras capturado desde la camara.

Pero lo mejor será desglosar la última línea de código en varias líneas para una explicación detallada de lo que hace la última línea:

#Importar modulo android
import android
#Instanciar el objeto Android
droid = android.Android()
#Escanear el codigo de barra por medio de la camara del celular, code guarda una lista
code = droid.scanBarcode()
#Capturar el isbn del diccionario que contiene la lista
#La lista tiene 3 elementos y el número 1 contiene un diccionario.
#El diccionario contiene el formato del código de barras y el isbn.
#Luego ese código se convierte de utf8 a int
isbn = int(code[1]['extras']['SCAN_RESULT'])
#Crea el url completo para realizar la busqueda del isbn
url = "http://books.google.com?q=%d" %isbn
#Inicia la busqueda del isbn en google abriendo un navegador
droid.startActivity('android.intent.action.VIEW', url)

Al escanear el código de barra desde el celular se abre una ventana del navegador para realizar una busqueda en books.google.com del isbn capturado.


La siguiente figura muestra el resultado de la busqueda.


6 de jun. de 2010

Instalar python en Android

Este artículo explicará como instalar python en Android desde el emulador para poder mostrar las capturas de pantalla y ese procedimiento es el mismo para instalar python desde el celular.

Lo primero que se necesita hacer es iniciar el emulador como se explico en el artículo de instalación del SDK de Android.

Al ejecutar adb devices encontrarán un dispositivo virtual funcionando.
ernesto@zvezda:~/android-sdk-linux_86/tools$ ./adb devices List of devices attached emulator-5554 device

Luego se baja el programa ASE desde el siguiente enlace.

Para instalarlo en el emulador se ejecuta el siguiente comando adb:
ernesto@zvezda:~/android-sdk-linux_86/tools$ ./adb install ../../Descargas/ase_r22.apk 868 KB/s (217639 bytes in 0.244s) pkg: /data/local/tmp/ase_r22.apk Success

Esto indica que se instalo sin problemas el programa ASE.

En la siguiente figura se muestra el home del emulador con ASE instalado.

Al darle clip al icono de ASE aparece la una información donde nos pide que se agreguen scripts o interpretes presionando el botón menú como lo muestra la siguiente figura:


Al darle menú aparecen varias opciones como lo son: Agregar, Ver, Preferencias, Ayuda, Actualizar. Siguiente figura:

Al darle View o Ver aparecerá un menú donde se tiene varias opciones para visualizar, en este caso se quiere visualizar interpretes. Siguiente figura:

Al darle clip a Interpretes aparecerá sólo como interprete Shell y las opciones Agregar, Iniciar servidor, Preferencias y Ayuda. En este caso se va a agregar un interprete nuevo.

Al darle clip a agregar aparecerá una lista de interpretes que en este caso se instalará python. Siguiente figura:
Al seleccionar Python 2.6.2 se inicia el proceso de instalación del interprete y de algunos scripts como lo muestran las 2 siguientes figuras:


Ahora aparece Python aparte de Shell en la lista de interpretadores como lo muestra la siguiente figura:


Para probar que todo está funcionando se selecciona el interpretador y este se ejecutará como lo muestra la figura:
Por último se lista los scripts en python de ejemplo para trabajar con Android:
En siguientes artículos se explicará el uso de los scripts para ir creando una aplicación para Android.

AddThis