![Page 2: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/2.jpg)
Indice
● Introducción a Android● SL4A● Ejemplos básicos● Ejemplos avanzados● Ejercicio● Generación de un APK instalable en el móvil
![Page 3: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/3.jpg)
Android
● Es un sistema operativo basado en GNU/Linux
● Para dispositivos móviles (teléfonos inteligentes
y tabletas)
● Desarrollado inicialmente por Android Inc.
Comprada por Google en 2005
● Lo componen el sistema operativo, librerías,
middleware y aplicaciones
![Page 4: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/4.jpg)
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
![Page 5: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/5.jpg)
Versiones de Android
![Page 6: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/6.jpg)
Crecimiento de Android
![Page 7: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/7.jpg)
Arquitectura de Android
![Page 8: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/8.jpg)
Market Android I
![Page 9: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/9.jpg)
Market Android II
![Page 10: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/10.jpg)
Market Android III
![Page 11: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/11.jpg)
Market Android IV
![Page 12: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/12.jpg)
Market Android V
![Page 13: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/13.jpg)
Market Android VI
● Un único pago de 25$
● Si la aplicación es de pago el reparto de los beneficios es de 30% Google, 70% Desarrollador
● Hay otros markets como el de Amazon, Motorola, Vodafone, ... con distintas condiciones
![Page 14: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/14.jpg)
Componentes de una aplicación
●Activities: Bloques básicos que constituyen una aplicación
●Services: Procesos que corren en segundo plano, no UI
●Broadcast y Intent Receivers: Reciben y reaccionan a anuncios,
no UI
●Content Providers: Proveen acceso a datos a otras aplicaciones
![Page 15: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/15.jpg)
SL4A: Scripting Layer for Android
SL4A hace posibles crear rapidamente prototipos de aplicaciones para Android en el mismo dispositivo usando lenguajes de scripting de alto nivel.
Esos scripts tienen acceso a muchas de las APIs disponibles por la aplicaciones desarrolladas en Java con un interface simplificado.
![Page 16: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/16.jpg)
SL4A: ¿Por qué?
● ¿Es suficientemente fácil escribir programas para Android? Sí. ¿Entonces?● El entorno de desarrollo de Android te hace la vida más fácil. Pero te obliga a tener un ordenador para trabajar. ● SL4A es una nueva idea para poder trabajar en una situación en la que necesites algo rápidamente. Después de que se haya aprendido se puede pasar a hacer una aplicación real.
![Page 17: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/17.jpg)
SL4A: ¿Cómo?
● SL4A provee de una fachada que hace llamadas al API via JSON RPC. ● ¿SL4A compila los programas a Dex bytecode o hay una capa adicional de interpretación?● Depende del lenguaje. Python es una versión de C que arranca nativamente.
![Page 18: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/18.jpg)
SL4A: ¿Rendimiento?
● Se centra sobre todo en el desarrollo rápido y sencillo mas que en el rendimiento.
● Si importa mucho el rendimiento es mejor usar el SDK o el NDK, donde se tiene más control sobre el sistema.
![Page 19: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/19.jpg)
SL4A: Características● 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
![Page 20: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/20.jpg)
SL4A: 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.
● URL:
http://code.google.com/p/android-scripting/wiki/ApiReference
![Page 21: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/21.jpg)
SL4A: ¿API completa?
● BeanShell, JRuby, y Rhino tienen básicamente un API completa ya que invocan a Java directamente.● Los lenguajes interpretados como Python son más restrictivos. Ellos solo tienen acceso al API expuesto a través de la capa RPC.● Mirar la referencia al API para saber la lista de las cosas que estan soportadas. ● La capa RPC se puede extender fácilmente.
http://code.google.com/p/android-scripting/wiki/ApiReference
![Page 22: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/22.jpg)
SL4A: Lenguajes soportados
● Shell
● PHP
● JRuby
● Perl
● Python● Lua
● BeanShell
● Rhino
![Page 23: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/23.jpg)
● 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
Instalación de SL4A
![Page 24: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/24.jpg)
Instalación del interprete de PythonAl 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.
![Page 25: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/25.jpg)
Instalación del interprete de Python
Se lista los scripts en python de ejemplo para trabajar con
Android
![Page 26: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/26.jpg)
Herramientas para el desarrollo
● Instalar JDKhttp://www.oracle.com/technetwork/java/javase/downloads/index.html
● Instalar Android SDKhttp://developer.android.com/sdk/index.html
● Instalar ANThttp://ant.apache.org
● Instalar Eclipse http://www.eclipse.org
● Instalar plugin Eclipse-Androidhttp://developer.android.com/sdk/eclipse-adt.html
![Page 27: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/27.jpg)
Crear APK
Para hacerlo con Ant:● Descomprimir el script_for_android_template.zip● Poner la variable de entorno "ANDROID_SDK"● Poner el paquete del proyecto :
sh configure_package.sh <nombre del paquete de la aplicacion> ● Cambiar el nombre del proyecto en el "build.xml"● Ejecutar "ant release" para crear el APK
![Page 28: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/28.jpg)
Ejemplos: Hola Mundo
import androiddroid = android.Android()droid.makeToast('Hello, Android!')print 'Hello world!'
![Page 29: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/29.jpg)
Ejemplos: Entrada de datos
import androiddroid = android.Android()texto = droid.dialogGetInput("Escriba su nombre","Nombre:")droid.makeToast('Hola %s' %texto[1])
![Page 30: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/30.jpg)
Ejemplos: Entrada de datos
![Page 31: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/31.jpg)
Ejemplos: Entrada de datos
![Page 32: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/32.jpg)
Ejemplos: Notificaciónimport android
droid = android.Android()
droid.notify('Prueba' , 'Hola Mundo 3!')
![Page 33: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/33.jpg)
Ejemplos: Notificación
![Page 34: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/34.jpg)
Ejemplos: Botones#!/usr/bin/env pythonimport androiddroid = android.Android()title = 'Alerta'message = ('Esta alerta tiene 3 botones y' 'se espera que presione uno')droid.dialogCreateAlert(title, message)droid.dialogSetPositiveButtonText('Si')droid.dialogSetNegativeButtonText('No')droid.dialogSetNeutralButtonText('Cancelar')droid.dialogShow()response = droid.dialogGetResponse()droid.makeToast('El resultado de la ejecucion del boton es: %s' %response[1]['which'])
![Page 35: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/35.jpg)
Ejemplos: Botones
![Page 36: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/36.jpg)
Ejemplos: Botones
![Page 37: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/37.jpg)
Ejemplos: Botones
![Page 38: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/38.jpg)
Ejemplos: Botones
![Page 39: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/39.jpg)
Ejemplos: Menús
import androiddroid=android.Android()
droid.addOptionsMenuItem("Si","si",None,"star_on")droid.addOptionsMenuItem("No","no","No","star_off")droid.addOptionsMenuItem("Salir","off",None,"ic_menu_revert")
print "Presiona el menu para ver opciones extra.."print "En 10 segundos se saldra si no hace nada"
while True: # Wait for events from the menu. response=droid.eventWait(10000).result if response==None: break print response if response["name"]=="off": breakprint "Hecho."
![Page 40: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/40.jpg)
Ejemplos: Enviar email
import android
droid = android.Android()
asunto = "Prueba de envio de correo desde Android con un script de python"para = "[email protected]"cuerpo_correo = "Esta es una prueba de envio de correo\n El tiempo en el reloj es: %s\n ------\n Curso de Python\n" %time.ctime()
#Se llama a la funcion sendEmail con los datos necesarios.#Esto llama a la aplicacion de envio de correo de forma grafica con la#informacion que se pasa en la funcion.droid.sendEmail(para,asunto,cuerpo_correo)
#Se finaliza la instancia de la clase.droid.exit()
![Page 41: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/41.jpg)
Ejemplos: Enviar SMS
#Importando el módulo android y el módulo timeimport android,time
#Creando la instancia droid del objeto Androiddroid = android.Android()
#Asignando el número de teléfono y mensajetelefono ="034777777777"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 mensajedroid.makeToast("enviando mensaje a %s, con el siguiente contenido: %s" %(telefono,mensaje))
#Enviando el mensaje de textodroid.smsSend(telefono,mensaje)
![Page 42: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/42.jpg)
Ejemplos: Llamar
#Importando el módulo android y el módulo timeimport android
#Creando la instancia droid del objeto Androiddroid = android.Android()
#Asignando el número de teléfonotelefono ="034777777777"
#Llamando al numero de telefono dadodroid.phoneCallNumber(telefono)
![Page 43: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/43.jpg)
Ejemplos: Propone llamar
#Importando el módulo android y el módulo timeimport android
#Creando la instancia droid del objeto Androiddroid = android.Android()
#Asignando el número de teléfono y mensajetelefono ="034777777777"
#Propone llamar al numero de telefono dadodroid.phoneDialNumber(telefono)
![Page 44: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/44.jpg)
Ejemplos: Geolocalizaciónimport androidfrom time import sleep
#Se crea la instancia de la clase Androiddroid = android.Android()#Se inicia la localizaciondroid.startLocating()#Se espera 15 segunfossleep(15)#Se presenta en la consola la información de la localización#Se maneja la información de un diccionario.print "Altitud: ",droid.readLocation().result["network"]["altitude"]print "Proveedor: ",droid.readLocation().result["network"]["provider"]print "Latitud: ",droid.readLocation().result["network"]["latitude"]print "Longitud: ",droid.readLocation().result["network"]["longitude"]print "Tiempo: ",droid.readLocation().result["network"]["time"]print "Velocidad: ",droid.readLocation().result["network"]["speed"]print "Precisión: ",droid.readLocation().result["network"]["accuracy"]#Se detiene la localizacióndroid.stopLocating()
![Page 45: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/45.jpg)
Ejemplos: Chat por bluetooth Iimport androidimport time
droid = android.Android()droid.toggleBluetoothState(True)droid.dialogCreateAlert('¿Eres el servidoe?')droid.dialogSetPositiveButtonText('Si')droid.dialogSetNegativeButtonText('No')droid.dialogShow()result = droid.dialogGetResponse()is_server = result.result['which'] == 'positive'if is_server: droid.bluetoothMakeDiscoverable() droid.bluetoothAccept()else: droid.bluetoothConnect()
![Page 46: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/46.jpg)
Ejemplos: Chat por bluetooth II
if is_server: result = droid.getInput('Chat', 'Pon tu mensaje').result if result is None: droid.exit() droid.bluetoothWrite(result + '\n')
while True: message = droid.bluetoothReadLine().result droid.dialogCreateAlert('Chat recibido', message) droid.dialogSetPositiveButtonText('Ok') droid.dialogShow() droid.dialogGetResponse() result = droid.getInput('Chat', 'Pon tu mensaje').result if result is None: break droid.bluetoothWrite(result + '\n')
droid.exit()
![Page 47: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/47.jpg)
Ejemplos: Hacer una foto
import android
droid = android.Android()droid.cameraCapturePicture('/sdcard/foo.jpg')
![Page 48: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/48.jpg)
Ejemplos: Text-To-Speech
import android
droid = android.Android()message = droid.dialogGetInput('TTS', '¿Que quieres decir?').resultdroid.ttsSpeak(message)
![Page 49: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/49.jpg)
Ejemplos: Mensajería Iimport androidimport xmpp
_SERVER = 'talk.google.com', 5223
def log(droid, message): print message self.droid.ttsSpeak(message)
class SayChat(object):
def __init__(self): self.droid = android.Android() username = self.droid.dialogGetInput('Usuario').result password = self.droid.dialogGetInput('Password').result jid = xmpp.protocol.JID(username) self.client = xmpp.Client(jid.getDomain(), debug=[]) self.client.connect(server=_SERVER) self.client.RegisterHandler('message', self.message_cb)
![Page 50: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/50.jpg)
Ejemplos: Mensajería II if not self.client: log('Ha fallado la conexion!') return auth = self.client.auth(jid.getNode(), password, 'botty') if not auth: log('Ha fallado la autentificacion!') return self.client.sendInitPresence()
def message_cb(self, session, message): jid = xmpp.protocol.JID(message.getFrom()) username = jid.getNode() text = message.getBody() self.droid.ttsSpeak('%s dice %s' % (username, text))
def run(self): try: while True: self.client.Process(1) except KeyboardInterrupt: pass
saychat = SayChat()saychat.run()
![Page 51: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/51.jpg)
Ejemplos: Batería I#!/usr/bin/env python2.6# -*- coding: utf-8 -*-import androiddroid = android.Android()
#Se monitoriza la bateriadroid.batteryStartMonitoring()
#Se captura la información de la bateriabateriaHealth = droid.batteryGetHealth()[1]if bateriaHealth == 2: print "La bateria está bien"elif bateriaHealth == 1: print "Salud de la Bateria desconocido"elif bateriaHealth == 3:
print "La bateria tiene sobrecarga"elif bateriaHealth == 4: print "La bateria está muerta"elif bateriaHealth == 5: print "La bateria tiene sobrevoltaje"else: print "falla desconocida"
![Page 52: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/52.jpg)
Ejemplos: Batería II#Se captura el tipo de conexión que usa el dispositivotipoConexion = droid.batteryGetPlugType()[1]if tipoConexion == 0: print "Cable desconectado"elif tipoConexion == 1: print "Fuente de alimentación: cargador AC"elif tipoConexion == 2: print "Fuente de alimentación: cable USB"else: print "Desconocido"#Se captura lel estatus de la bateriaestatus = droid.batteryGetStatus()[1]if estatus == 2: print "Bateria cargandose"elif estatus == 3: print "Bateria descargandose"elif estatus == 4: print "Bateria no se está cargando"elif estatus == 5: print "Bateria full de carga"
![Page 53: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/53.jpg)
Ejemplos: Batería III
print "Tipo de tecnología: ",droid.batteryGetTechnology()[1]print "Temperatura: ",droid.batteryGetTemperature()[1]print "voltaje: ",droid.batteryGetVoltage()[1]
#Se deja de monitorizar la bateriadroid.batteryStopMonitoring()
![Page 54: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/54.jpg)
Ejemplos: SQLite
import sqlite3
# Connect to database file, create it if it does not existconn = sqlite3.connect('/sdcard/sqlitedemo.db')# Get a cursorcursor = conn.cursor()# Create a tablecursor.execute("CREATE TABLE IF NOT EXISTS gente (texto)")# Insert some datacursor.execute("INSERT INTO gente VALUES ('Juan Ramirez Sanchez')")cursor.execute("INSERT INTO gente VALUES ('Alejandro Garcia Garcia')")conn.commit()# Read the data back outcursor.execute("SELECT * from gente")for row in cursor: print row
conn.close()
![Page 55: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/55.jpg)
Más ejemplos
Más ejemplos en la página oficial● http://code.google.com/p/android-scripting/wiki/Tutorials
![Page 56: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/56.jpg)
Mandar la posición y hora por Email I
● Que escuche los SMS● Si le llega un SMS con la palabra “GPS”● Hacer que capture la posición GPS del móvil● Que la envíe por email aun contacto● Que la meta como evento en el Google Calendar
![Page 57: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/57.jpg)
Mandar la posición y hora por Email II# -*- coding: utf-8 -*-
try: from xml.etree import ElementTree # for Python 2.5 usersexcept ImportError: from elementtree import ElementTreeimport gdata.calendar.serviceimport gdata.serviceimport atom.serviceimport gdata.calendarimport atomimport androidimport sysimport timeimport urllib2from string import splitfrom string import find
droid = android.Android()
![Page 58: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/58.jpg)
Mandar la posición y hora por Email IIIdef servicio(): while True: time.sleep(10)
# Escuchar los mensajes SMS msg_solicitud = droid.smsGetMessages(True) for i in msg_solicitud.result: msg_sms = i["body"].strip().upper() if msg_sms == "GPS": droid.makeToast(u"Solicitud de localización recibida") droid.smsMarkMessageRead([i["_id"]], True) telefono = i["address"] enviar_mensaje(telefono)
droid.makeToast(u"%s: %s" % (telefono,msg_sms)) if __name__ == "__main__": servicio()
![Page 59: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/59.jpg)
Mandar la posición y hora por Email IV
def enviar_mensaje(numero): try: mensaje, mapa = localizar() msg = "%s %s" % (mensaje, mapa)
asunto = u"Respuesta a la peticion de localización GPS desde el numero %s" % (numero)
para = "[email protected]" droid.sendEmail(para, asunto, msg.encode('ascii', 'replace'))
droid.makeToast(u"Enviada respuesta")anadirEvento(msg)droid.makeToast(u"Evento añadido al calendario")
except: droid.makeToast("Error: " + str(sys.exc_info()[0]))
![Page 60: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/60.jpg)
Mandar la posición y hora por Email Vdef localizar(): droid.makeToast(u"Empezando a localizar la posicion") droid.startLocating(3600,1) time.sleep(10) fin = True segundos = 300 seg_trancurridos = 0 while fin: time.sleep(1) seg_trancurridos += 1 l = droid.readLocation() ll = l.result if "gps" in ll: mensaje = u"Posición actual: " pos = (str(ll["gps"]["latitude"]), str(ll["gps"]["longitude"])) fin = False droid.makeToast(u"Posición GPS encontrada")
![Page 61: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/61.jpg)
Mandar la posición y hora por Email VI else: if seg_trancurridos == segundos: fin = False if "network" in ll: pos = (str(ll["network"]["latitude"]), str(ll["network"]["longitude"])) mensaje = u"Posición red celular: " droid.makeToast(u"Posición Red Celular encontrada") else: ll = droid.getLastKnownLocation().result pos = (str(ll["network"]["latitude"]), str(ll["network"]["longitude"])) mensaje = u"Ultima posición red celular: " droid.makeToast(u"No se pudo establecer conexión, se enviara la ultima posición registrada") droid.makeToast(u"Terminado de localizar la posicion") pll = "%s,%s" % (str(pos[0]), str(pos[1])) mapa = "http://maps.google.com/maps?ll=%s&q=%s" % (pll, pll) droid.stopLocating() return mensaje, mapa
![Page 62: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/62.jpg)
Mandar la posición y hora por Email VIIdef anadirEvento(mensaje):
EMAIL_USER = '[email protected]'EMAIL_PSWD = 'xxxxxxxx'
calendar_service = gdata.calendar.service.CalendarService()calendar_service.email = EMAIL_USERcalendar_service.password = EMAIL_PSWDcalendar_service.source = 'Android'calendar_service.ProgrammaticLogin()
event = gdata.calendar.CalendarEventEntry()event.content = atom.Content(text=mensaje)event.quick_add = gdata.calendar.QuickAdd(value='true')
![Page 63: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/63.jpg)
Mandar la posición y hora por Email VIII
# Send the request and receive the response: while True:
# Sometime Google Calendar service returns an error. This keeps trying until there's no error.
try: new_event = calendar_service.InsertEvent(event,
'/calendar/feeds/default/private/full') break
except gdata.service.RequestError as inst: if inst[0]['status'] == 302: time.sleep(1.0) continue raise except: raise
![Page 64: Desarrollo de aplicaciones android con Python](https://reader033.vdocuments.pub/reader033/viewer/2022050714/5a6e90c17f8b9a7f7e8b4863/html5/thumbnails/64.jpg)
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/