Python – Android Manuel Aznar Septiembre de 2011.

Slides:



Advertisements
Presentaciones similares
Entorno de Trabajo e Introducción a Java Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 1.
Advertisements

Crea una cuenta en WordPress WordPress es uno de los servicios más usados para la creación de blogs en internet, ya que es una plataforma con una gran.
“Android: Un acercamiento practico” Manuel Alejandro Moscoso Domínguez Estudiante de Ingeniería en Bioinformática Talca, 8 de octubre de 2009.
GUÍA DE USO DEL SISTEMA DE ATENCIÓN Y GESTIÓN TICKETS (SAGT) ANALISTAS Gerencia de Atención al Estado Oficina de Atención al Usuario Octubre, 2010.
Curso de Linex (II) Antonio Durán Terrés. Aplicaciones de Linex ● Veremos ahora algunas de las aplicaciones básicas de Linex – Utilidades básicas: bloc.
Python – Android – Ejercicios Presentación. Indice ● Ejemplos básicos ● Ejemplos avanzados ● Ejercicio.
MANUAL PARA MOVILES. NUMERO PIN 1.PULSAMOS LOS 4 NUMEROS DE NUESTRO PIN DEL TELEFONO 2. PULSAMOS DESBLOQUEAR.
 1. Ingresar a la página  2. Nos registramos en twitter Nombre completo: nombre de usuario Correo electrónico: se verificara.
¡LOS SERVIDORES DE FTP Y NUBE!
¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
BASE DE DATOS EN LA WEB POR- OSIRYS MARCIAGA JESUS NIETO.
WINDOWS Elvira Abajo Lera Octubre, 2008.
Paul Leger Modelo OSI Paul Leger
Iniciación a Android Dia 1: Instalación Android Studio - 1h
UNIVERSIDAD NACIONAL DE CHIMBORAZO NOMBRE:ERIKA SALAO PRIMERO:A ESCUELADE:EDUCACION BASICA DOCENTE: FERNANDO BUFANTE AÑO LECTIVO Es un sistemas.
Manual de Usuario Portal de Proveedores PROVEEDOR - FACTORING
Diseño de aplicaciones móviles
Google Play Store o Play Store para abreviar, es la aplicación que la gente con tabletas y smartphones Android utiliza para descargar juegos, aplicaciones.
WordPress REST API
COMPONENTES DE INTERNET
Iniciación a Android Dia 1: Instalación Android Studio - 1h
DESARROLLO WEB CON HTML 5 Francisco J. Arce Anguiano
DESARROLLO DE APPS MÓVILES Introducción
Utilizando la serie de productos TECNO 21 , podrá monitorear y controlar en forma remota, Sensores, Transductores o dispositivos inteligentes, por medio.
APLICACIONES DE MENSAJERIA INSTANTANEA
SERVIDOR ESCUELA LINUX
¿Cómo crear una cuenta de Twitter?
Módulo: Herramientas y estrategias del marketing digital
Potente herramienta para el desarrollo de aplicaciones móviles
PHP Hypertext Preprocessor
LOS DIFERENTES LENGUAJES DE PROGRAMACION PARA LA WEB
Un gestor de referencias bibliográficas.
Administrador de dispositivos
ECLIPSE.
PARCIAL 2.
Tutorial del backoffice PARA inscripción en línea, ACTUALIZACION DE DATOS Y ENVIO DE PAGOS VERSION 2.0 – 4/10/2017.
INSTALACIÓN DE TU TIENDA ON LINE PRESTASHOP EN HOSTING
Pulse Agenda: Información General Tablero Vista de Clases Asignaciones
UNIDAD II INTERNET.
Tutorial Holdings Management (Administración de Colecciones)
Android.
BÚSQUEDA, SELECCIÓN Y GESTIÓN DE INFORMACIÓN A TRAVÉS DE
¿Qué es IONIC? Ionic es un Framework que nos permite crear de una manera rápida y sencilla aplicaciones móviles multiplataforma (Android, IOS, Windows)
 PhoneGap es un framework de código libre para el desarrollo de aplicaciones móviles. Su principal característica: multiplataforma, es decir, con un.
Push Notifications.
¿Cómo crear una cuenta de Twitter?
EXPOSICION INDUCCION ACTIVIDAD 3
Fundamentos de programación en TIG 4. Aptana y Arcpy
INTRODUCCIÓN A JAVA.
PowerPoint.
SOL GUTIÉRREZ Y MARIANA HEINTZ 4°C Prof. Gustavo price
Tecnología SUMS.
Lizbeth Montserrat cerero cedano 1E T/V característica, funciones, tipos y ejemplos de los hipervínculos.
Joselin Elizabeth Raygoza Chávez 1-A T/M Tecnologias de la Información.
HERRAMIENTAS DE MICOSOFT WORD LOS HIPERVINCULOS TABLA DE CONTENIDO 1. Los hipervínculos Como insertar un hipervínculo Sintaxis para insertar.
QUE ES UN SISTEMA OPERATIVO ANDROID  Es un Sistema Operativo además de una plataforma de Software basada en el núcleo de Linux.  Permite controlar dispositivos.
Sistemas Operativos En La Nube Mtro. Abimael Antonio Pineda TEMA.
SE Móvil® v3.0.
TECNOLOGÍAS DE LA INFORMACIÓN UNIVERSIDAD DE GUADALAJARA PREPARATORIA NO.10 DENIA NAYELLI VAZQUEZ GONZALEZ 1AMAT.
GUÍA DE NAVEGACIÓN PLATAFORMA VIRTUAL PASTO PIEMSA 2018
SISTEMA ELECTRONICO DE CONTROL DE OBRAS BITACORA Versión 2.0
¿ Qué es Wamp Server? Es un entorno de desarrollo web que nos va a permitir tener nuestro propio servidor o host local (instalado en nuestro ordenador).
Planificación Curso UNIDAD 1. INTRODUCCIÓN A LOS SERVICIOS EN RED
Introducción a Android Studio Lic. Jose Armando Tiznado Ubillus.
SE Móvil® v3.0.
Diseño y Programación Orientados a Objetos
Android Integrantes: Nelson Lopez Reyes Silvana Carpio Salvador.
SWAY Aplicación Office 365.
LA NUBE: ¿QUÉ ES? Es el servicio virtual que sirve para guardar tus archivos en Internet, siempre dispuesto para ti sin necesidad de descargar, traer tus.
STS – SALES TERMINAL SYSTEM Modulo de venta Internacional
Transcripción de la presentación:

Python – Android Manuel Aznar Septiembre de 2011

Indice ● Introducción a Android ● SL4A ● Ejemplos básicos ● Ejemplos avanzados ● Ejercicio ● Generación de un APK instalable en el móvil

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

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

Versiones de Android

Crecimiento de Android

Arquitectura de Android

Market Android I

Market Android II

Market Android III

Market Android IV

Market Android V

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

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

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.

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.

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.

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.

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

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: ●

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. ●

SL4A: Lenguajes soportados ● Shell ● PHP ● JRuby ● Perl ● Python ● Lua ● BeanShell ● Rhino

● 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

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.

Instalación del interprete de Python Al darle menú aparecen varias opciones como lo son: Agregar, Ver, Preferencias, Ayuda, Actualizar.

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

Instalación del interprete de Python Al darle clip a agregar aparecerá una lista de interpretes que en este caso se instalará python

Instalación del interprete de Python Al seleccionar Python se inicia el proceso de instalación del interprete y de algunos script

Instalación del interprete de Python Ahora aparece Python aparte de Shell en la lista de interpretadores

Instalación del interprete de Python Para probar que todo está funcionando se selecciona el interpretador y este se ejecutará

Instalación del interprete de Python Se lista los scripts en python de ejemplo para trabajar con Android

Herramientas para el desarrollo ● Instalar JDK ● Instalar Android SDK ● Instalar ANT ● Instalar Eclipse ● Instalar plugin Eclipse-Android

Ejemplos: Hola Mundo import android droid = android.Android() droid.makeToast('Hello, Android!') print 'Hello world!'

Ejemplos: Entrada de datos import android droid = android.Android() texto = droid.dialogGetInput("Escriba su nombre","Nombre:") droid.makeToast('Hola %s' %texto[1])

Ejemplos: Entrada de datos

Ejemplos: Notificación import android droid = android.Android() droid.notify('Prueba', 'Hola Mundo 3!')

Ejemplos: Notificación

Ejemplos: Botones #!/usr/bin/env python import android droid = 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'])

Ejemplos: Botones

Ejemplos: Menús import android droid=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": break print "Hecho."

Ejemplos: Enviar import android droid = android.Android() asunto = "Prueba de envio de correo desde Android con un script de python" para = 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 send 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.send (para,asunto,cuerpo_correo) #Se finaliza la instancia de la clase. droid.exit()

Ejemplos: Enviar 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 =" " 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)

Ejemplos: Llamar #Importando el módulo android y el módulo time import android #Creando la instancia droid del objeto Android droid = android.Android() #Asignando el número de teléfono telefono =" " #Llamando al numero de telefono dado droid.phoneCallNumber(telefono)

Ejemplos: Propone llamar #Importando el módulo android y el módulo time import android #Creando la instancia droid del objeto Android droid = android.Android() #Asignando el número de teléfono y mensaje telefono =" " #Propone llamar al numero de telefono dado droid.phoneDialNumber(telefono)

Ejemplos: Geolocalización import android from time import sleep #Se crea la instancia de la clase Android droid = android.Android() #Se inicia la localizacion droid.startLocating() #Se espera 15 segunfos sleep(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ón droid.stopLocating()

Ejemplos: Chat por bluetooth I import android import 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()

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()

Ejemplos: Hacer una foto import android droid = android.Android() droid.cameraCapturePicture('/sdcard/foo.jpg')

Ejemplos: Text-To-Speech import android droid = android.Android() message = droid.dialogGetInput('TTS', '¿Que quieres decir?').result droid.ttsSpeak(message)

Ejemplos: Mensajería I import android import 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)

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()

Ejemplos: Batería I #!/usr/bin/env python2.6 # -*- coding: utf-8 -*- import android droid = android.Android() #Se monitoriza la bateria droid.batteryStartMonitoring() #Se captura la información de la bateria bateriaHealth = 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"

Ejemplos: Batería II #Se captura el tipo de conexión que usa el dispositivo tipoConexion = 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 bateria estatus = 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"

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 bateria droid.batteryStopMonitoring()

Más ejemplos Más ejemplos en la página oficial ●

Ejercicio: Mandar la posición y hora por ● 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 aun contacto ● Que la meta como evento en el Google Calendar

Ejercicio: Paso 1 ● Crear un “servicio” que se quede siempre en ejecución.

Ejercicio: Paso 2 ● Hacer que el servicio escuche los mensajes SMS entrantes y saque un Toast con el número y texto del mensaje. ● Habrá que buscar como poder emular el envío de SMS al emulador.

Ejercicio: Paso 3 ● Hacer que solo coja los que tengan el texto “GPS” y que además los marque como leídos.

Ejercicio: Paso 4 ● Hacer que envie un “vacio” indicando en el titulo del que ha recibido un mensaje “GPS” y desde que número lo ha recibido. ● Posible mejora: Si lo ha recibido de un contacto de la agenda sacar también su nombre.

Ejercicio: Paso 5 ● Hacer que geolocalice la posición del móvil. Tanto si esta el GPS conectado como si no. ● Crear una url del Google Maps con la latitud y longitud. ● Enviar esa url en el cuerpo del . ● Si no se envía al emulador la simulación de un cambio de posición GPS se queda esperando bloqueado

Ejercicio: Paso 6 ● Añadir que ademas de enviar el también cree en el Google Calendar un evento para ese momento indicando esa posición.

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 ● Cambiar el nombre del proyecto en el "build.xml" ● Ejecutar "ant release" para crear el APK

Referencias: ● Wikipedia ● ● Sitio oficial de Android ● ● Sitio Oficial de SL4A ●