Python en Android,Charla del FUDcon Latam 2012

59
Python en Android Python en Android

description

Charla para el FUDcon Latam 2012 sobre como programar en Android con el lenguaje de programación Python, varios ejemplos.

Transcript of Python en Android,Charla del FUDcon Latam 2012

Page 1: Python en Android,Charla del FUDcon Latam 2012

Python en AndroidPython en Android

Page 2: Python en Android,Charla del FUDcon Latam 2012

Python en AndroidPython en Android

Ernesto CrespoErnesto Crespo

Email: [email protected]: [email protected]

Blog:ernesto-ecrespo.blogspot.comBlog:ernesto-ecrespo.blogspot.comtwitter: @ernestocrespotwitter: @ernestocrespo

Page 3: Python en Android,Charla del FUDcon Latam 2012

LicenciaLicencia

●Este documento está licenciado bajo la GNU Free Este documento está licenciado bajo la GNU Free

Documentation License (GFDL). www.gnu.orgDocumentation License (GFDL). www.gnu.org

●Se autoriza la copia y distribución por cualquier medio, Se autoriza la copia y distribución por cualquier medio,

siempre que se realice bajo esta misma licencia, se siempre que se realice bajo esta misma licencia, se

mencione al autor original y se incluya esta nota.mencione al autor original y se incluya esta nota.

Page 4: Python en Android,Charla del FUDcon Latam 2012

●Es un sistema operativo basado en GNU/LinuxEs un sistema operativo basado en GNU/Linux

●Para dispositivos móviles (teléfonos inteligentesPara dispositivos móviles (teléfonos inteligentes

y tabletas)y tabletas)

●Desarrollado inicialmente por Android Inc. Desarrollado inicialmente por Android Inc.

Comprada por Google en 2005Comprada por Google en 2005

●Lo componen el sistema operativo, librerías, Lo componen el sistema operativo, librerías,

middleware y aplicacionesmiddleware y aplicaciones

●Es un sistema operativo basado en GNU/LinuxEs un sistema operativo basado en GNU/Linux

●Para dispositivos móviles (teléfonos inteligentesPara dispositivos móviles (teléfonos inteligentes

y tabletas)y tabletas)

●Desarrollado inicialmente por Android Inc. Desarrollado inicialmente por Android Inc.

Comprada por Google en 2005Comprada por Google en 2005

●Lo componen el sistema operativo, librerías, Lo componen el sistema operativo, librerías,

middleware y aplicacionesmiddleware y aplicaciones

AndroidAndroid

Page 5: Python en Android,Charla del FUDcon Latam 2012

CaracterísticasCaracterísticas

●Máquina Virtual optimizada para dispositivos móviles DalvikMáquina Virtual optimizada para dispositivos móviles Dalvik

●Navegador integrado basado en webkitNavegador integrado basado en webkit

●Base de datos SQLiteBase de datos SQLite

●Gráficos 3D basado en OpenGLGráficos 3D basado en OpenGL

●Soporte para audio, video e imágenesSoporte para audio, video e imágenes

●Bluetooth, EDGE, 3G y wifiBluetooth, EDGE, 3G y wifi

●Camara, GPS y acelerometroCamara, GPS y acelerometro

Page 6: Python en Android,Charla del FUDcon Latam 2012

Componentes de una aplicaciónComponentes de una aplicación

●Activities: Bloques básicos que constituyen una aplicaciónActivities: Bloques básicos que constituyen una aplicación

●Services: Procesos que corren en segundo plano, no UIServices: Procesos que corren en segundo plano, no UI

●Broadcast and Intent Receivers: Reciben y reaccionan a Broadcast and Intent Receivers: Reciben y reaccionan a

anuncios, no UIanuncios, no UI

●Content Providers: Proveen acceso a datos a otras Content Providers: Proveen acceso a datos a otras

aplicacionesaplicaciones

Page 7: Python en Android,Charla del FUDcon Latam 2012

Arquitectura de AndroidArquitectura de Android

Page 8: Python en Android,Charla del FUDcon Latam 2012

Características de SL4ACaracterísticas de SL4A

●Manejar intentsManejar intents

●Iniciar activitiesIniciar activities

●Realizar llamadasRealizar llamadas

●Enviar SMSEnviar SMS

●Enviar correosEnviar correos

●Escanear códigos de BarrasEscanear códigos de Barras

●Obtener localización y valores de sensoresObtener localización y valores de sensores

●Usar comunicaciones como wifi o bluetoothUsar comunicaciones como wifi o bluetooth

●Usar Text To spech (TTS)Usar Text To spech (TTS)

●Obtener información de la bateriaObtener información de la bateria

●Grabar videos y audiosGrabar videos y audios

Page 9: Python en Android,Charla del FUDcon Latam 2012

Lenguajes interpretados soportadosLenguajes interpretados soportados

●ShellShell

●PHPPHP

●JRubyJRuby

●PerlPerl

●PythonPython

●LuaLua

●BeanShellBeanShell

●RhinoRhino

Page 10: Python en Android,Charla del FUDcon Latam 2012

¿Cómo funciona?¿Cómo funciona?

●Cpython corre de forma nativaCpython corre de forma nativa

●Una API facade expone un subconjunto de la API de android Una API facade expone un subconjunto de la API de android

, accesible vía llamadas Json RPC, accesible vía llamadas Json RPC

●Este subconjunto es el que está disponible para el Este subconjunto es el que está disponible para el

interpreteinterprete

●La API RPC está compilada en dex bytecode, no hay La API RPC está compilada en dex bytecode, no hay

interpretación adicional en javainterpretación adicional en java

Page 11: Python en Android,Charla del FUDcon Latam 2012

APIAPI

●ActivityResultFacadeActivityResultFacade

●AlarmManagerFacadeAlarmManagerFacade

●AndroidFacadeAndroidFacade

●ApplicationManagerFacadeApplicationManagerFacade

●BatteryManagerFacadeBatteryManagerFacade

●BluetoothFacadeBluetoothFacade

●CameraFacadeCameraFacade

●PulseGeneratorFacadePulseGeneratorFacade

●SmsFacadeSmsFacade

●WifiFacadeWifiFacade

●etcetc

Page 12: Python en Android,Charla del FUDcon Latam 2012

APIAPI

●La API provista por SL4A es la misma para los lenguajes La API provista por SL4A es la misma para los lenguajes

soportados.soportados.

●Las llamadas del API devuelve un objeto con 3 campos:Las llamadas del API devuelve un objeto con 3 campos:

● id:Valor numérico asociado con la llamada.id:Valor numérico asociado con la llamada.

● result: valor que devuelve el API o null si no devuelve.result: valor que devuelve el API o null si no devuelve.

● error: Descripción del error, null si no hubo.error: Descripción del error, null si no hubo.

Page 13: Python en Android,Charla del FUDcon Latam 2012

Java vs Python en AndroidJava vs Python en Android

Page 14: Python en Android,Charla del FUDcon Latam 2012

Código de Java: Java vs Python en Código de Java: Java vs Python en AndroidAndroid

Page 15: Python en Android,Charla del FUDcon Latam 2012

Código de python: Java vs Python Código de python: Java vs Python en Androiden Android

Programa en Java: 35 Líneas de códigoPrograma en Python: 4 Líneas de código

Page 16: Python en Android,Charla del FUDcon Latam 2012

Instalación de SL4AInstalación de SL4A

●Instalación en el CelularInstalación en el Celular

●Instalación en el emulador de Android en Linux: Para este Instalación en el emulador de Android en Linux: Para este

caso se debe tener instalado el SDK de androidcaso se debe tener instalado el SDK de android

Page 17: Python en Android,Charla del FUDcon Latam 2012

Instalación del interprete de PythonInstalación del interprete de Python

Al darle clip al icono de SL4A aparece la una información Al darle clip al icono de SL4A aparece la una información

donde nos pide que se agreguen scripts o interpretes donde nos pide que se agreguen scripts o interpretes

presionando el botón menú como lo muestra la siguiente presionando el botón menú como lo muestra la siguiente

figura.figura.

Page 18: Python en Android,Charla del FUDcon Latam 2012

Instalación del interprete de PythonInstalación del interprete de Python

Al darle menú aparecen varias opciones como lo son: Al darle menú aparecen varias opciones como lo son:

Agregar, Ver, Preferencias, Ayuda, Actualizar.Agregar, Ver, Preferencias, Ayuda, Actualizar.

Page 19: Python en Android,Charla del FUDcon Latam 2012

Instalación del interprete de PythonInstalación del interprete de Python

Al darle View o Ver aparecerá un menú donde se tiene Al darle View o Ver aparecerá un menú donde se tiene

varias opciones para visualizar, en este caso se quiere varias opciones para visualizar, en este caso se quiere

visualizar interpretesvisualizar interpretes

Page 20: Python en Android,Charla del FUDcon Latam 2012

Instalación del interprete de PythonInstalación del interprete de Python

Al darle clip a agregar aparecerá una lista de interpretes Al darle clip a agregar aparecerá una lista de interpretes

que en este caso se instalará pythonque en este caso se instalará python

Page 21: Python en Android,Charla del FUDcon Latam 2012

Instalación del interprete de PythonInstalación del interprete de Python

Al seleccionar Python 2.6.2 se inicia el proceso de Al seleccionar Python 2.6.2 se inicia el proceso de

instalación del interprete y de algunos scriptinstalación del interprete y de algunos script

Page 22: Python en Android,Charla del FUDcon Latam 2012

Instalación del interprete de PythonInstalación del interprete de Python

Ahora aparece Python aparte de Shell en la lista de Ahora aparece Python aparte de Shell en la lista de

interpretadoresinterpretadores

Page 23: Python en Android,Charla del FUDcon Latam 2012

Instalación del interprete de PythonInstalación del interprete de Python

Para probar que todo está funcionando se selecciona el Para probar que todo está funcionando se selecciona el

interpretador y este se ejecutaráinterpretador y este se ejecutará

Page 24: Python en Android,Charla del FUDcon Latam 2012

Instalación del interprete de PythonInstalación del interprete de Python

Se lista los scripts en python de ejemplo para trabajar con Se lista los scripts en python de ejemplo para trabajar con

AndroidAndroid

Page 25: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Entrada de datosEjemplos: Entrada de datos

#!/usr/bin/env python#!/usr/bin/env pythonimport android,timeimport android,timedroid = android.Android()droid = android.Android()texto = droid.dialogGetInput("Escriba su nombre","Nombre:")texto = droid.dialogGetInput("Escriba su nombre","Nombre:")droid.makeToast('Hola %s' %texto[1])droid.makeToast('Hola %s' %texto[1])time.sleep(5)time.sleep(5)

Page 26: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Entrada de datosEjemplos: Entrada de datos

Page 27: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Entrada de datosEjemplos: Entrada de datos

Page 28: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Barra de progresoEjemplos: Barra de progreso

#!/usr/bin/env python#!/usr/bin/env python import android,timeimport android,timedroid = android.Android()droid = android.Android()titulo = "Horizontal"titulo = "Horizontal"mensaje = "Este es una barra de progreso horizontal" mensaje = "Este es una barra de progreso horizontal" numero = droid.dialogGetInput("Escriba el tiempo","tiempo:") numero = droid.dialogGetInput("Escriba el tiempo","tiempo:")

droid.dialogCreateHorizontalProgress(titulo,mensaje,int(numero[1])) droid.dialogCreateHorizontalProgress(titulo,mensaje,int(numero[1])) droid.dialogShow()droid.dialogShow()for i in range(0,int(numero[1])):for i in range(0,int(numero[1])): time.sleep(0.1)time.sleep(0.1) droid.dialogSetCurrentProgress(i) droid.dialogSetCurrentProgress(i) droid.dialogDismiss()droid.dialogDismiss()

Page 29: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Barra de progresoEjemplos: Barra de progreso

Page 30: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Barra de progresoEjemplos: Barra de progreso

Page 31: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Barra de spinnerEjemplos: Barra de spinner#!/usr/bin/env python#!/usr/bin/env pythonimport android, timeimport android, timedroid = android.Android()droid = android.Android()title = 'Spinner'title = 'Spinner'message = 'Este es un simple progreso spinner.'message = 'Este es un simple progreso spinner.'numero = droid.dialogGetInput("Escriba el tiempo","tiempo:")numero = droid.dialogGetInput("Escriba el tiempo","tiempo:")droid.dialogCreateSpinnerProgress(title, message)droid.dialogCreateSpinnerProgress(title, message)droid.dialogShow()droid.dialogShow()time.sleep(int(numero[1]))time.sleep(int(numero[1]))droid.dialogDismiss()droid.dialogDismiss()

Page 32: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Barra de spinnerEjemplos: Barra de spinner

Page 33: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Barra de spinnerEjemplos: Barra de spinner

Page 34: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: NotificaciónEjemplos: Notificación#importar módulos android y time#importar módulos android y timeimport android,timeimport android,time #Crear la instancia de la clase Android#Crear la instancia de la clase Androiddroid = android.Android()droid = android.Android() #Se crea el mensaje de notificación.#Se crea el mensaje de notificación.droid.notify('Prueba' , 'Hola Mundo!')droid.notify('Prueba' , 'Hola Mundo!')

Page 35: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: NotificaciónEjemplos: Notificación

Page 36: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: BotónEjemplos: Botón#!/usr/bin/env python#!/usr/bin/env pythonimport android,timeimport android,timedroid = android.Android()droid = android.Android()title = 'Interfaz de usuario'title = 'Interfaz de usuario'message = 'Esta es una prueba'message = 'Esta es una prueba'droid.dialogCreateAlert(title, message)droid.dialogCreateAlert(title, message)droid.dialogSetPositiveButtonText('Continuar')droid.dialogSetPositiveButtonText('Continuar')droid.dialogShow()droid.dialogShow()response = droid.dialogGetResponse()response = droid.dialogGetResponse()droid.makeToast('El resultado de la ejecucion del boton es: %s' droid.makeToast('El resultado de la ejecucion del boton es: %s' %response[1]['which'])%response[1]['which'])time.sleep(5)time.sleep(5)

Page 37: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: BotónEjemplos: Botón

Page 38: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: BotónEjemplos: Botón

Page 39: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: BotonesEjemplos: Botones#!/usr/bin/env python#!/usr/bin/env pythonimport androidimport androiddroid = android.Android()droid = android.Android()title = 'Alerta'title = 'Alerta'message = ('Esta alerta tiene 3 botones y' 'se espera que presione message = ('Esta alerta tiene 3 botones y' 'se espera que presione uno')uno')droid.dialogCreateAlert(title, message)droid.dialogCreateAlert(title, message)droid.dialogSetPositiveButtonText('Si')droid.dialogSetPositiveButtonText('Si')droid.dialogSetNegativeButtonText('No')droid.dialogSetNegativeButtonText('No')droid.dialogSetNeutralButtonText('Cancelar')droid.dialogSetNeutralButtonText('Cancelar')droid.dialogShow()droid.dialogShow()response = droid.dialogGetResponse()response = droid.dialogGetResponse()droid.makeToast('El resultado de la ejecucion del boton es: %s' droid.makeToast('El resultado de la ejecucion del boton es: %s' %response[1]['which'])%response[1]['which'])

Page 40: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: BotonesEjemplos: Botones

Page 41: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: BotonesEjemplos: Botones

Page 42: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: BotonesEjemplos: Botones

Page 43: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: BotonesEjemplos: Botones

Page 44: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Selección simpleEjemplos: Selección simple#!/usr/bin/env python#!/usr/bin/env pythonimport android,timeimport android,timedroid = android.Android()droid = android.Android()titulo = 'Color seleccionado'titulo = 'Color seleccionado'droid.dialogCreateAlert(titulo)droid.dialogCreateAlert(titulo)colores = ('amarillo', 'azul', 'rojo')colores = ('amarillo', 'azul', 'rojo')droid.dialogSetItems(colores)droid.dialogSetItems(colores)droid.dialogShow()droid.dialogShow()respuesta = droid.dialogGetResponse().resultrespuesta = droid.dialogGetResponse().resultdroid.makeToast('El color seleccionado es: %s' droid.makeToast('El color seleccionado es: %s' %colores[respuesta['item']])%colores[respuesta['item']])time.sleep(5)time.sleep(5)

Page 45: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Selección simpleEjemplos: Selección simple

Page 46: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Selección SimpleEjemplos: Selección Simple

Page 47: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Selección Simple 2Ejemplos: Selección Simple 2#!/usr/bin/env python#!/usr/bin/env python

import android, timeimport android, timedroid = android.Android()droid = android.Android()titulo = "Seleccione una ciudad"titulo = "Seleccione una ciudad"ciudades = ['Valencia','Barquisimeto','Merida','Caracas']ciudades = ['Valencia','Barquisimeto','Merida','Caracas']droid.dialogCreateAlert(titulo)droid.dialogCreateAlert(titulo)droid.dialogSetSingleChoiceItems(ciudades)droid.dialogSetSingleChoiceItems(ciudades)droid.dialogSetPositiveButtonText('Seleccione')droid.dialogSetPositiveButtonText('Seleccione')droid.dialogSetNegativeButtonText('Salir')droid.dialogSetNegativeButtonText('Salir')droid.dialogShow()droid.dialogShow()respuesta = droid.dialogGetResponse().resultrespuesta = droid.dialogGetResponse().resultitems = droid.dialogGetSelectedItems()items = droid.dialogGetSelectedItems()if respuesta['which'] == "positive":if respuesta['which'] == "positive": droid.makeToast("La ciudad seleccionada es: %s " droid.makeToast("La ciudad seleccionada es: %s " %ciudades[int(items[1][0])])%ciudades[int(items[1][0])]) time.sleep(2)time.sleep(2)else:else: droid.makeToast("Saliendo del programa")droid.makeToast("Saliendo del programa") time.sleep(2)time.sleep(2)

Page 48: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Selección Simple 2Ejemplos: Selección Simple 2

Page 49: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Selección MultipleEjemplos: Selección Multiple#!/usr/bin/env python#!/usr/bin/env pythonimport android, timeimport android, timedroid = android.Android()droid = android.Android()titulo = "Seleccione las ciudades de su preferencia"titulo = "Seleccione las ciudades de su preferencia"ciudades = ['Valencia','Barquisimeto','Merida','Caracas','Maracaibo','Maracay','Margarita']ciudades = ['Valencia','Barquisimeto','Merida','Caracas','Maracaibo','Maracay','Margarita']droid.dialogCreateAlert(titulo)droid.dialogCreateAlert(titulo)droid.dialogSetMultiChoiceItems(ciudades)droid.dialogSetMultiChoiceItems(ciudades)droid.dialogSetPositiveButtonText('Seleccionar')droid.dialogSetPositiveButtonText('Seleccionar')droid.dialogSetNegativeButtonText('Salir')droid.dialogSetNegativeButtonText('Salir')droid.dialogShow()droid.dialogShow()respuesta = droid.dialogGetResponse().resultrespuesta = droid.dialogGetResponse().resultitems = droid.dialogGetSelectedItems()items = droid.dialogGetSelectedItems()if respuesta['which'] == "positive":if respuesta['which'] == "positive": if len(items[1]) == 0:if len(items[1]) == 0: droid.dialogCreateAlert("No se selecciono ciudad alguna")droid.dialogCreateAlert("No se selecciono ciudad alguna") elif len(items[1]) > 0:elif len(items[1]) > 0: lista = []lista = [] texto = ""texto = "" cantidad = len(items[1])cantidad = len(items[1]) c = 1c = 1 for i in items[1]:for i in items[1]: lista.append(ciudades[int(i)])lista.append(ciudades[int(i)]) if c <> cantidad:if c <> cantidad: texto = texto + ciudades[int(i)] + ","texto = texto + ciudades[int(i)] + "," else:else: texto = texto + ciudades[int(i)]texto = texto + ciudades[int(i)] c = c+1c = c+1 droid.dialogCreateAlert("Ciudades seleccionada: %s" %texto)droid.dialogCreateAlert("Ciudades seleccionada: %s" %texto)else:else: droid.dialogCreateAlert("Saliendo de la aplicacion")droid.dialogCreateAlert("Saliendo de la aplicacion")droid.dialogSetPositiveButtonText('Aceptar')droid.dialogSetPositiveButtonText('Aceptar')droid.dialogShow()droid.dialogShow()

Page 50: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Selección MultipleEjemplos: Selección Multiple

Page 51: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: Selección MultipleEjemplos: Selección Multiple

Page 52: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: WebviewEjemplos: Webview<html><html> <head><head> <title>Text to Speech</title><title>Text to Speech</title> <script><script> var droid = new Android();var droid = new Android(); var speak = function() {var speak = function() { droid.postEvent("say", document.getElementById("say").value); }droid.postEvent("say", document.getElementById("say").value); } </script></script> </head></head> <body><body> <form onsubmit="speak(); return false;"><form onsubmit="speak(); return false;"> <label for="say">que le gustaria decir?</label><label for="say">que le gustaria decir?</label> <input type="text" id="say" /><input type="text" id="say" /> <input type="submit" value="Speak" /><input type="submit" value="Speak" /> </form></form> </body></body></html></html>

Page 53: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: WebviewEjemplos: Webviewimport androidimport android

droid = android.Android()droid = android.Android()droid.webViewShow('file:///sdcard/sl4a/scripts/text_to_speech2.html')droid.webViewShow('file:///sdcard/sl4a/scripts/text_to_speech2.html')while True:while True: result = droid.waitForEvent('say').resultresult = droid.waitForEvent('say').result droid.ttsSpeak(result['data'])droid.ttsSpeak(result['data'])

Page 54: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: WebviewEjemplos: Webview

Page 55: Python en Android,Charla del FUDcon Latam 2012

Ejemplos: WebviewEjemplos: Webview

Page 56: Python en Android,Charla del FUDcon Latam 2012

Más ejemplosMás ejemplosEjecución remota de programas python en el celular:Ejecución remota de programas python en el celular:●Posición del celular en google mapPosición del celular en google maphttp://ernesto-ecrespo.blogspot.com/2011/01/aplicacion-que-muestra-las-coordenadas.htmlhttp://ernesto-ecrespo.blogspot.com/2011/01/aplicacion-que-muestra-las-coordenadas.html

●Captura de la información de la posición del celular desde LinuxCaptura de la información de la posición del celular desde Linuxhttp://ernesto-ecrespo.blogspot.com/2010/12/capturar-la-ubicacion-del-celular.htmlhttp://ernesto-ecrespo.blogspot.com/2010/12/capturar-la-ubicacion-del-celular.html

●Obtener información del estado de la bateriaObtener información del estado de la bateriahttp://ernesto-ecrespo.blogspot.com/2010/12/obtener-informacion-del-estado-de-la.htmlhttp://ernesto-ecrespo.blogspot.com/2010/12/obtener-informacion-del-estado-de-la.html

●Manejar los mensajes de texto desde LinuxManejar los mensajes de texto desde Linuxhttp://ernesto-ecrespo.blogspot.com/2010/12/manejar-los-mensajes-de-texto-del.htmlhttp://ernesto-ecrespo.blogspot.com/2010/12/manejar-los-mensajes-de-texto-del.html

●Enviar mensajes de texto desde android con pythonEnviar mensajes de texto desde android con pythonhttp://ernesto-ecrespo.blogspot.com/2010/06/enviar-mensajes-de-texto-desde-android.htmlhttp://ernesto-ecrespo.blogspot.com/2010/06/enviar-mensajes-de-texto-desde-android.html

●Enviar correo electrónico desde andoird con pythonEnviar correo electrónico desde andoird con pythonhttp://ernesto-ecrespo.blogspot.com/2010/06/enviar-correo-desde-android-con-python.htmlhttp://ernesto-ecrespo.blogspot.com/2010/06/enviar-correo-desde-android-con-python.html

●Más ejemplos en la página oficialMás ejemplos en la página oficial●http://code.google.com/p/android-scripting/wiki/Tutorialshttp://code.google.com/p/android-scripting/wiki/Tutorials

Page 57: Python en Android,Charla del FUDcon Latam 2012

Usos de SL4AUsos de SL4ASmallSatSmallSat

Page 58: Python en Android,Charla del FUDcon Latam 2012

Usos de SL4AUsos de SL4ACellbotsCellbots

Page 59: Python en Android,Charla del FUDcon Latam 2012

Referencias:Referencias:●WikipediaWikipediahttp://es.wikipedia.org/wiki/Androidhttp://es.wikipedia.org/wiki/Android

●Sitio oficial de AndroidSitio oficial de Androidhttp://developer.android.com/guide/basics/what-is-android.htmlhttp://developer.android.com/guide/basics/what-is-android.html

●Sitio Oficial de SL4ASitio Oficial de SL4Ahttp://code.google.com/p/android-scripting/http://code.google.com/p/android-scripting/

●Presentación Programando en Android de Matias Bordese en PyArPresentación Programando en Android de Matias Bordese en PyArhttp://python.org.ar/pyar/Charlas#Programando_Python_en_Androidhttp://python.org.ar/pyar/Charlas#Programando_Python_en_Android

●Blog de Ernesto CrespoBlog de Ernesto Crespohttp://ernesto-ecrespo.blogspot.com/search/label/Androidhttp://ernesto-ecrespo.blogspot.com/search/label/Android

●Cellbots, Canal de youtube:Cellbots, Canal de youtube:http://www.youtube.com/cellbotshttp://www.youtube.com/cellbots

●SmallSatSmallSathttp://blog.makezine.com/2010/07/27/nexus-onearduino-smallsat-satellite/http://blog.makezine.com/2010/07/27/nexus-onearduino-smallsat-satellite/

●CellbotsCellbotswww.cellbots.comwww.cellbots.com

●Cellbot control:Cellbot control:https://github.com/georgegoh/cellbot-controllerhttps://github.com/georgegoh/cellbot-controller