Python en Android
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Python en Android

on

  • 5,333 views

Charla de Programación en Android con python para el Flisol 2011

Charla de Programación en Android con python para el Flisol 2011

Statistics

Views

Total Views
5,333
Views on SlideShare
5,333
Embed Views
0

Actions

Likes
1
Downloads
172
Comments
2

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Gracias por tu exposición, el mundo merece ésto... Estoy buscando algún curso en phyton para móviles donde pueda desarrollar una idea que tengo en mente, o si me enseñas y trabajamos juntos podrían hacerlo...
    Are you sure you want to
    Your message goes here
    Processing…
  • Genial!! muchas gracias! buena expo con ejemplos que funcionan.

    Sabes donde puedo encontrar documentacion de la libreria 'android' pues estoy que practico repitiendo ejemplos pero no puedo crear nuevos por que no se que posibilidades tengo con dicha libreria.

    Gracioas
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Python en Android Presentation Transcript

  • 1. Python en Android
  • 2. Python en Android Ernesto Crespo Email: ecrespo@gmail.com Blog:ernesto-ecrespo.blogspot.com FLISOL 2011-Barquisimeto twitter: @ernestocrespo
  • 3. Licencia
    • Este documento está licenciado bajo la GNU Free Documentation License (GFDL). www.gnu.org
    • 4. 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.
  • 5.
    • Es un sistema operativo basado en GNU/Linux
    • 6. Para dispositivos móviles (teléfonos inteligentes
    • 7. y tabletas)
    • 8. Desarrollado inicialmente por Android Inc.
    • 9. Comprada por Google en 2005
    • 10. Lo componen el sistema operativo, librerías,
    • 11. middleware y aplicaciones
    Android
  • 12. Características
    • Máquina Virtual optimizada para dispositivos móviles Dalvik
    • 13. Navegador integrado basado en webkit
    • 14. Base de datos SQLite
    • 15. Gráficos 3D basado en OpenGL
    • 16. Soporte para audio, video e imágenes
    • 17. Bluetooth, EDGE, 3G y wifi
    • 18. Camara, GPS y acelerometro
  • 19. Componentes de una aplicación
    • Activities: Bloques básicos que constituyen una aplicación
    • 20. Services: Procesos que corren en segundo plano, no UI
    • 21. Broadcast and Intent Receivers: Reciben y reaccionan a anuncios, no UI
    • 22. Content Providers: Proveen acceso a datos a otras aplicaciones
  • 23. Arquitectura de Android
  • 24. Características de SL4A
    • Manejar intents
    • 25. Iniciar activities
    • 26. Realizar llamadas
    • 27. Enviar SMS
    • 28. Enviar correos
    • 29. Escanear códigos de Barras
    • 30. Obtener localización y valores de sensores
    • 31. Usar comunicaciones como wifi o bluetooth
    • 32. Usar Text To spech (TTS)
    • 33. Obtener información de la bateria
    • 34. Grabar videos y audios
  • 35. Lenguajes interpretados soportados
    • Shell
    • 36. PHP
    • 37. JRuby
    • 38. Perl
    • 39. Python
    • 40. Lua
    • 41. BeanShell
    • 42. Rhino
  • 43. ¿Cómo funciona?
    • Cpython corre de forma nativa
    • 44. Una API facade expone un subconjunto de la API de android , accesible vía llamadas Json RPC
    • 45. Este subconjunto es el que está disponible para el interprete
    • 46. La API RPC está compilada en dex bytecode, no hay interpretación adicional en java
  • 47. API
    • ActivityResultFacade
    • 48. AlarmManagerFacade
    • 49. AndroidFacade
    • 50. ApplicationManagerFacade
    • 51. BatteryManagerFacade
    • 52. BluetoothFacade
    • 53. CameraFacade
    • 54. PulseGeneratorFacade
    • 55. SmsFacade
    • 56. WifiFacade
    • 57. etc
  • 58. API
    • La API provista por SL4A es la misma para los lenguajes soportados.
    • 59. Las llamadas del API devuelve un objeto con 3 campos:
      • id:Valor numérico asociado con la llamada.
      • 60. result: valor que devuelve el API o null si no devuelve.
      • 61. error: Descripción del error, null si no hubo.
  • 62. Instalación de SL4A
    • Instalación en el Celular
    • 63. Instalación en el emulador de Android en Linux: Para este caso se debe tener instalado el SDK de android
  • 64. 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.
  • 65. Instalación del interprete de Python
      Al darle menú aparecen varias opciones como lo son: Agregar, Ver, Preferencias, Ayuda, Actualizar.
  • 66. 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
  • 67. Instalación del interprete de Python
      Al darle clip a agregar aparecerá una lista de interpretes que en este caso se instalará python
  • 68. 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
  • 69. Instalación del interprete de Python
      Ahora aparece Python aparte de Shell en la lista de interpretadores
  • 70. Instalación del interprete de Python
      Para probar que todo está funcionando se selecciona el interpretador y este se ejecutará
  • 71. Instalación del interprete de Python
      Se lista los scripts en python de ejemplo para trabajar con Android
  • 72. 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)
  • 73. Ejemplos: Entrada de datos
  • 74. Ejemplos: Entrada de datos
  • 75. 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()
  • 76. Ejemplos: Barra de progreso
  • 77. Ejemplos: Barra de progreso
  • 78. 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()
  • 79. Ejemplos: Barra de spinner
  • 80. Ejemplos: Barra de spinner
  • 81. 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!')
  • 82. Ejemplos: Notificación
  • 83. Ejemplos: Botón #!/usr/bin/env python import android,time droid = android.Android() title = 'Interfaz de usuario' message = 'Esta es una prueba' droid.dialogCreateAlert(title, message) droid.dialogSetPositiveButtonText('Continuar') droid.dialogShow() response = droid.dialogGetResponse() droid.makeToast('El resultado de la ejecucion del boton es: %s' %response[1]['which']) time.sleep(5)
  • 84. Ejemplos: Botón
  • 85. Ejemplos: Botón
  • 86. 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'])
  • 87. Ejemplos: Botones
  • 88. Ejemplos: Botones
  • 89. Ejemplos: Botones
  • 90. Ejemplos: Botones
  • 91. Ejemplos: Selección simple #!/usr/bin/env python import android,time droid = android.Android() titulo = 'Color seleccionado' droid.dialogCreateAlert(titulo) colores = ('amarillo', 'azul', 'rojo') droid.dialogSetItems(colores) droid.dialogShow() respuesta = droid.dialogGetResponse().result droid.makeToast('El color seleccionado es: %s' %colores[respuesta['item']]) time.sleep(5)
  • 92. Ejemplos: Selección simple
  • 93. Ejemplos: Selección Simple
  • 94. Ejemplos: Selección Simple 2 #!/usr/bin/env python import android, time droid = android.Android() titulo = "Seleccione una ciudad" ciudades = ['Valencia','Barquisimeto','Merida','Caracas'] droid.dialogCreateAlert(titulo) droid.dialogSetSingleChoiceItems(ciudades) droid.dialogSetPositiveButtonText('Seleccione') droid.dialogSetNegativeButtonText('Salir') droid.dialogShow() respuesta = droid.dialogGetResponse().result items = droid.dialogGetSelectedItems() if respuesta['which'] == "positive": droid.makeToast("La ciudad seleccionada es: %s " %ciudades[int(items[1][0])]) time.sleep(2) else: droid.makeToast("Saliendo del programa") time.sleep(2)
  • 95. Ejemplos: Selección Simple 2
  • 96. Ejemplos: Selección Multiple #!/usr/bin/env python import android, time droid = android.Android() titulo = &quot;Seleccione las ciudades de su preferencia&quot; ciudades = ['Valencia','Barquisimeto','Merida','Caracas','Maracaibo','Maracay','Margarita'] droid.dialogCreateAlert(titulo) droid.dialogSetMultiChoiceItems(ciudades) droid.dialogSetPositiveButtonText('Seleccionar') droid.dialogSetNegativeButtonText('Salir') droid.dialogShow() respuesta = droid.dialogGetResponse().result items = droid.dialogGetSelectedItems() if respuesta['which'] == &quot;positive&quot;: if len(items[1]) == 0: droid.dialogCreateAlert(&quot;No se selecciono ciudad alguna&quot;) elif len(items[1]) > 0: lista = [] texto = &quot;&quot; cantidad = len(items[1]) c = 1 for i in items[1]: lista.append(ciudades[int(i)]) if c <> cantidad: texto = texto + ciudades[int(i)] + &quot;,&quot; else: texto = texto + ciudades[int(i)] c = c+1 droid.dialogCreateAlert(&quot;Ciudades seleccionada: %s&quot; %texto) else: droid.dialogCreateAlert(&quot;Saliendo de la aplicacion&quot;) droid.dialogSetPositiveButtonText('Aceptar') droid.dialogShow()
  • 97. Ejemplos: Selección Multiple
  • 98. Ejemplos: Selección Multiple
  • 99. Ejemplos: Webview <html> <head> <title>Text to Speech</title> <script> var droid = new Android(); var speak = function() { droid.postEvent(&quot;say&quot;, document.getElementById(&quot;say&quot;).value); } </script> </head> <body> <form onsubmit=&quot;speak(); return false;&quot;> <label for=&quot;say&quot;>que le gustaria decir?</label> <input type=&quot;text&quot; id=&quot;say&quot; /> <input type=&quot;submit&quot; value=&quot;Speak&quot; /> </form> </body> </html>
  • 100. Ejemplos: Webview import android droid = android.Android() droid.webViewShow('file:///sdcard/sl4a/scripts/text_to_speech2.html') while True: result = droid.waitForEvent('say').result droid.ttsSpeak(result['data'])
  • 101. Ejemplos: Webview
  • 102. Ejemplos: Webview
  • 103. Más ejemplos Ejecución remota de programas python en el celular:
    • Posición del celular en google map
    • 104. http://ernesto-ecrespo.blogspot.com/2011/01/aplicacion-que-muestra-las-coordenadas.html
    • 105. Captura de la información de la posición del celular desde Linux
    • 106. http://ernesto-ecrespo.blogspot.com/2010/12/capturar-la-ubicacion-del-celular.html
    • 107. Obtener información del estado de la bateria
    • 108. http://ernesto-ecrespo.blogspot.com/2010/12/obtener-informacion-del-estado-de-la.html
    • 109. Manejar los mensajes de texto desde Linux
    • 110. http://ernesto-ecrespo.blogspot.com/2010/12/manejar-los-mensajes-de-texto-del.html
    • 111. Enviar mensajes de texto desde android con python
    • 112. http://ernesto-ecrespo.blogspot.com/2010/06/enviar-mensajes-de-texto-desde-android.html
    • 113. Enviar correo electrónico desde andoird con python
    • 114. http://ernesto-ecrespo.blogspot.com/2010/06/enviar-correo-desde-android-con-python.html
    • 115. Más ejemplos en la página oficial
    • 116. http://code.google.com/p/android-scripting/wiki/Tutorials
  • 117. Referencias:
    • Wikipedia
    • 118. http://es.wikipedia.org/wiki/Android
    • 119. Sitio oficial de Android
    • 120. http://developer.android.com/guide/basics/what-is-android.html
    • 121. Sitio Oficial de SL4A
    • 122. http://code.google.com/p/android-scripting/
    • 123. Presentación Programando en Android de Matias Bordese en PyAr
    • 124. http://python.org.ar/pyar/Charlas#Programando_Python_en_Android
    • 125. Blog de Ernesto Crespo
    • 126. http://ernesto-ecrespo.blogspot.com/search/label/Android