3. Licencia
● Este documento está licenciado bajo la GNU Free
Documentation License (GFDL). www.gnu.org
● Se autoriza la copia y distribución por cualquier medio,
siempre que se realice bajo esta misma licencia, se
mencione al autor original y se incluya esta nota.
4. Android
●Es un sistema operativo basado en GNU/Linux
●Es un sistema operativo basado en GNU/Linux
●Para dispositivos móviles (teléfonos inteligentes
●Para dispositivos móviles (teléfonos inteligentes
y tabletas)
y tabletas)
●Desarrollado inicialmente por Android Inc.
●Desarrollado inicialmente por Android Inc.
Comprada por Google en 2005
Comprada por Google en 2005
●Lo componen el sistema operativo, librerías,
●Lo componen el sistema operativo, librerías,
middleware y aplicaciones
middleware y aplicaciones
5. Características
● Máquina Virtual optimizada para dispositivos móviles Dalvik
● Navegador integrado basado en webkit
● Base de datos SQLite
● Gráficos 3D basado en OpenGL
● Soporte para audio, video e imágenes
● Bluetooth, EDGE, 3G y wifi
● Camara, GPS y acelerometro
6. Componentes de una aplicación
● Activities: Bloques básicos que constituyen una aplicación
● Services: Procesos que corren en segundo plano, no UI
● Broadcast and Intent Receivers: Reciben y reaccionan a
anuncios, no UI
● Content Providers: Proveen acceso a datos a otras
aplicaciones
8. Características de SL4A
● Manejar intents
● Iniciar activities
● Realizar llamadas
● Enviar SMS
● Enviar correos
● Escanear códigos de Barras
● Obtener localización y valores de sensores
● Usar comunicaciones como wifi o bluetooth
● Usar Text To spech (TTS)
● Obtener información de la bateria
● Grabar videos y audios
10. ¿Cómo funciona?
● Cpython corre de forma nativa
● Una API facade expone un subconjunto de la API de android
, accesible vía llamadas Json RPC
● Este subconjunto es el que está disponible para el
interprete
● La API RPC está compilada en dex bytecode, no hay
interpretación adicional en java
12. API
● La API provista por SL4A es la misma para los lenguajes
soportados.
● Las llamadas del API devuelve un objeto con 3 campos:
● id:Valor numérico asociado con la llamada.
● result: valor que devuelve el API o null si no devuelve.
● error: Descripción del error, null si no hubo.
15. Código de python: Java vs Python
en Android
Programa en Java: 35 Líneas de código
Programa en Python: 4 Líneas de código
16. Instalación de SL4A
● Instalación en el Celular
● Instalación en el emulador de Android en Linux: Para este
caso se debe tener instalado el SDK de android
17. Instalación del interprete de Python
Al darle clip al icono de SL4A 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.
18. Instalación del interprete de Python
Al darle menú aparecen varias opciones como lo son:
Agregar, Ver, Preferencias, Ayuda, Actualizar.
19. Instalación del interprete de Python
Al darle View o Ver aparecerá un menú donde se tiene
varias opciones para visualizar, en este caso se quiere
visualizar interpretes
20. Instalación del interprete de Python
Al darle clip a agregar aparecerá una lista de interpretes
que en este caso se instalará python
21. Instalación del interprete de Python
Al seleccionar Python 2.6.2 se inicia el proceso de
instalación del interprete y de algunos script
22. Instalación del interprete de Python
Ahora aparece Python aparte de Shell en la lista de
interpretadores
23. Instalación del interprete de Python
Para probar que todo está funcionando se selecciona el
interpretador y este se ejecutará
24. Instalación del interprete de Python
Se lista los scripts en python de ejemplo para trabajar con
Android
25. Ejemplos: Entrada de datos
#!/usr/bin/env python
import android,time
droid = android.Android()
texto = droid.dialogGetInput("Escriba su nombre","Nombre:")
droid.makeToast('Hola %s' %texto[1])
time.sleep(5)
28. Ejemplos: Barra de progreso
#!/usr/bin/env python
import android,time
droid = android.Android()
titulo = "Horizontal"
mensaje = "Este es una barra de progreso horizontal"
numero = droid.dialogGetInput("Escriba el tiempo","tiempo:")
droid.dialogCreateHorizontalProgress(titulo,mensaje,int(numero[1]))
droid.dialogShow()
for i in range(0,int(numero[1])):
time.sleep(0.1)
droid.dialogSetCurrentProgress(i)
droid.dialogDismiss()
31. Ejemplos: Barra de spinner
#!/usr/bin/env python
import android, time
droid = android.Android()
title = 'Spinner'
message = 'Este es un simple progreso spinner.'
numero = droid.dialogGetInput("Escriba el tiempo","tiempo:")
droid.dialogCreateSpinnerProgress(title, message)
droid.dialogShow()
time.sleep(int(numero[1]))
droid.dialogDismiss()
34. Ejemplos: Notificación
#importar módulos android y time
import android,time
#Crear la instancia de la clase Android
droid = android.Android()
#Se crea el mensaje de notificación.
droid.notify('Prueba' , 'Hola Mundo!')
56. Más ejemplos
Ejecución remota de programas python en el celular:
●Posición del celular en google map
http://ernesto-ecrespo.blogspot.com/2011/01/aplicacion-que-muestra-las-coordenadas.html
● Captura de la información de la posición del celular desde Linux
http://ernesto-ecrespo.blogspot.com/2010/12/capturar-la-ubicacion-del-celular.html
● Obtener información del estado de la bateria
http://ernesto-ecrespo.blogspot.com/2010/12/obtener-informacion-del-estado-de-la.html
● Manejar los mensajes de texto desde Linux
http://ernesto-ecrespo.blogspot.com/2010/12/manejar-los-mensajes-de-texto-del.html
● Enviar mensajes de texto desde android con python
http://ernesto-ecrespo.blogspot.com/2010/06/enviar-mensajes-de-texto-desde-android.html
● Enviar correo electrónico desde andoird con python
http://ernesto-ecrespo.blogspot.com/2010/06/enviar-correo-desde-android-con-python.html
● Más ejemplos en la página oficial
http://code.google.com/p/android-scripting/wiki/Tutorials
●
59. Referencias:
Wikipedia
●
http://es.wikipedia.org/wiki/Android
●Sitio oficial de Android
http://developer.android.com/guide/basics/what-is-android.html
●Sitio Oficial de SL4A
http://code.google.com/p/android-scripting/
●Presentación Programando en Android de Matias Bordese en PyAr
http://python.org.ar/pyar/Charlas#Programando_Python_en_Android
●Blog de Ernesto Crespo
http://ernesto-ecrespo.blogspot.com/search/label/Android
●Cellbots, Canal de youtube:
http://www.youtube.com/cellbots
●SmallSat
http://blog.makezine.com/2010/07/27/nexus-onearduino-smallsat-satellite/
●Cellbots
www.cellbots.com
●Cellbot control:
https://github.com/georgegoh/cellbot-controller