Python en Android

5,753 views

Published on

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

Published in: Technology
2 Comments
2 Likes
Statistics
Notes
  • 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...
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 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
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
5,753
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
210
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide

Python en Android

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

×