SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
Aplicaciones para Android con Kivy
Nahuel Defossé
Meetup Patagónico de Python
Agosto, 2016
Características de Kivy
Framework para escribir aplicaciones multimedia (o al menos
con capacidades gráficas avanzadas).
Genera la UI a través de OpenGL (no usa widgets nativos)
Solución completa basada en Python/Cython.
Soporte Multi-táctil.
Soporte en Windows, Linux y Mac, Android e iOS.
Licencia MIT
Instalación
Pasos para Windows, Linux y OS X
https://kivy.org/docs/installation/installation.html
Proyectos Hermanos de Kivy
Buildozer: empaquetador genérico apara Python (creador de
APKs para Android!)
Plyer: envoltura Pythonica independiente de la plataforma para
APIs dependientes de la plataforma.
Pyjnius: Acceso dinámico a Java/Android desde Python.
Pyobjus: acceso dinámico a las APIs Objective-C/iOS desde
Python.
Python for Android: herramientas para compilar y empaquetar
aplicaciones Python para Android.
Kivy iOS: herramientas para compilar y empaquetar
aplicaciones Python para Android.
Audiostream: biblioteca para el acceso directo al micrófono y
parlante.
Kivy Designer: Diseñador de interfases para Kivy.
KivEnt: motor de juegos orientado a entidades.
Garden: widgets y bibliotecas creadas y mantenidas por
usuarios.
Ejemplos de capacidades de Kivy
Figure 1: Layout Complejo
Figure 2: Garden
Ejemplos de la vida real de Kivy
Ejemplos: Museo de Historia Natural de Lille, Francia, Plane White,
exhibición de Arte Interactiva, Particle Panda, Simulador de
Partículas, Liatris, Robótica, Deteción de Objetos, Monitor de
Misubishi LancelotEvo, Teclado TouchContinuum
Componentes básicos de Kivy
App
Widget
ScreenManager
Screen
Layouts
Button
Label
TextInput
Image
Clock
SoundLoader
Animation
Ejemplo Mínimo
from kivy.app import App
from kivy.uix.label import Label
class MiApp(App):
def build(self):
return Label(text="Hola mundo")
if __name__ == "__main__":
MiApp().run()
Para correrlo
python main.py
Depurando una aplicación
Si bien la app no es aún compleja, tenemos un depurador de UIs!
python main.py -m inspector
Para activar el inspector debemos pulsar Control + e
Figure 3: Depuración
Prueba en Android
Si la aplicación no necesita paquetes de terceros, podemos probarla
en el Kivy Laucher de Google Play.
Prueba en Android (cont.)
Para esto creamos un archivo llamado android.txt en la misma
carpeta dónde esté main.py, archivos .kv, carpeta data si la
hubiera, etc.
proyecto/
main.py
estilo.kv
android.txt
Copiamos la carpeta en el telefono a través del administrador de
archivos o con el comando adb en el directorio kivy.
Ejemplo de android.txt
title=Demo_1
author=Nahuel
orientation=portrait
Dando estilo
En un archivo con nombre demo.kv (por le nombre DemoApp):
<MyWidget>:
BoxLayout:
size: root.size
Button:
text: "Hola Mundo"
on_press: app.decir_hola()
Variables utilizables:
app (app.root)
self el widget en el que estamos parados
root la ventana principal
Utilizando programación reactiva
La programación reactiva trata sobre reaccionar a los cambios.
En kivy podemos generar reacciones a cambios de propiedades (de
objetos). Por ejmplo, ante el cambio de un valor de un slider
(propiedad value) se actualice un texto de una etiqueta.
El lenguaje kv permite definir este comportamiento de manera muy
sencilla. La forma de referenciar otros componentes, es utilizar el
campo id.
Programación Reactiva
Ejemplo
<MiWidget>:
BoxLayout:
orientation: 'vertical'
size: root.size
pos: root.pos
BoxLayout:
size_hint_y: .2
Button:
text: texto.text
on_press: app.saludar()
Label:
text: "%2.3f" % slider.value
id: texto
Slider:
id: slider
Garden
Garden provee widgets mantenidos port terceros.
Ej. mapview
mapview es un widget para mostrar mapas a traves de
OpenStreetMaps MapView.
Instalación
garden install mapview
Garden (cont.)
Utilización de mapview
from kivy.garden.mapview import MapView
from kivy.app import App
class MapViewApp(App):
def build(self):
mapview = MapView(
zoom=15,
lat=-42.7852576,
lon=-65.0083537)
return mapview
MapViewApp().run()
Garden (cont.)
Figure 5: MapView
Buildozer
Buildozer es un paquete de Python que permite gestionar la
compilación de aplicaciones escritas en Kivy.
En particular nos interesa Android
Está rota en OS X al momento de la charla, para generar apks
se puede utilizar una máqiuna virtual.
Creación del archivo de especificaciones
pip install buildozer
buildozer android init
buildozer.spec
Este archivo define entre otras cosas:
Nombre de la aplicación, paquete y version
Rutas a los SDK y NDK (si no se definen se descargar
automaticamente)
Compilando
Nota
buildozer baja todo, Andoird SDK, Android NDK, ANT,
Python-for-Android y lo compila. La primera ejecución puede
demorar un buen rato (más de 15 minutos en conexiones de menos
de 3Mbits).
Creación de APK depuración
buildozer andoird debug
Creación de APK release
buildozer andoird release
Creación de APK y ejecución
buildozer andoird debug deploy run
Depuración del APK
logcat
buildozer android logcat
Permite ver la salida de depuración de Android. Es importante
filtrar lo útil, ya que se ven los mensajes de todas las aplicaciones.
Usando características propias de Android
plyer
Envoltura Pythonica. Más fácil de usar. APIs más populares.
pyjnius
Reflexión, cualquier API, control total sobre Java.
Demo
Aplicación soundboard, a partir de sonidos de memes de internet.
Código fuente
https://github.com/D3f0/soundboard
APK
https://github.com/D3f0/soundboard/blob/master/bin/
Soundboard-0.3.1-debug.apk?raw=true
Links sobre Kivy
Kivy - Creating Desktop and Mobile Apps with Python
Kivy with Python tutorial for Mobile Application Development
Kivy Crash Course Muy buen tuorial en videos cortos.
Gracias!
No duden en hacerme consultar a https://twitter.com/d3f0

Más contenido relacionado

La actualidad más candente

Building beautiful apps with Google flutter
Building beautiful apps with Google flutterBuilding beautiful apps with Google flutter
Building beautiful apps with Google flutterAhmed Abu Eldahab
 
Build web applications using google flutter
Build web applications using google flutterBuild web applications using google flutter
Build web applications using google flutterAhmed Abu Eldahab
 
Flutter Online Study jam 10-7-2019
Flutter Online Study jam 10-7-2019Flutter Online Study jam 10-7-2019
Flutter Online Study jam 10-7-2019Ahmed Abu Eldahab
 
Avances tecnológicos en diversas área de informática
Avances tecnológicos en diversas área de informáticaAvances tecnológicos en diversas área de informática
Avances tecnológicos en diversas área de informáticaBarriaEric
 
Fluttercon Berlin 23 - Dart & Flutter on RISC-V
Fluttercon Berlin 23 - Dart & Flutter on RISC-VFluttercon Berlin 23 - Dart & Flutter on RISC-V
Fluttercon Berlin 23 - Dart & Flutter on RISC-VChris Swan
 
Numba: Array-oriented Python Compiler for NumPy
Numba: Array-oriented Python Compiler for NumPyNumba: Array-oriented Python Compiler for NumPy
Numba: Array-oriented Python Compiler for NumPyTravis Oliphant
 
Vulkan introduction
Vulkan introductionVulkan introduction
Vulkan introductionJiahan Su
 
Introduction to Node-RED
Introduction to Node-REDIntroduction to Node-RED
Introduction to Node-REDnodered_ug_jp
 
Build beautiful native apps in record time with flutter
Build beautiful native apps in record time with flutterBuild beautiful native apps in record time with flutter
Build beautiful native apps in record time with flutterRobertLe30
 

La actualidad más candente (20)

Building beautiful apps with Google flutter
Building beautiful apps with Google flutterBuilding beautiful apps with Google flutter
Building beautiful apps with Google flutter
 
Developing apps with Kivy
Developing apps with KivyDeveloping apps with Kivy
Developing apps with Kivy
 
Animations in Flutter
Animations in FlutterAnimations in Flutter
Animations in Flutter
 
Build web applications using google flutter
Build web applications using google flutterBuild web applications using google flutter
Build web applications using google flutter
 
Flutter Online Study jam 10-7-2019
Flutter Online Study jam 10-7-2019Flutter Online Study jam 10-7-2019
Flutter Online Study jam 10-7-2019
 
Flutter
FlutterFlutter
Flutter
 
What is Flutter
What is FlutterWhat is Flutter
What is Flutter
 
Flutter beyond hello world
Flutter beyond hello worldFlutter beyond hello world
Flutter beyond hello world
 
Hello Flutter
Hello FlutterHello Flutter
Hello Flutter
 
Flutter
FlutterFlutter
Flutter
 
Python ppt
Python pptPython ppt
Python ppt
 
Avances tecnológicos en diversas área de informática
Avances tecnológicos en diversas área de informáticaAvances tecnológicos en diversas área de informática
Avances tecnológicos en diversas área de informática
 
Programador Jr. para Python Primera Parte
Programador Jr. para Python Primera ParteProgramador Jr. para Python Primera Parte
Programador Jr. para Python Primera Parte
 
Fluttercon Berlin 23 - Dart & Flutter on RISC-V
Fluttercon Berlin 23 - Dart & Flutter on RISC-VFluttercon Berlin 23 - Dart & Flutter on RISC-V
Fluttercon Berlin 23 - Dart & Flutter on RISC-V
 
Flutter
Flutter Flutter
Flutter
 
Numba: Array-oriented Python Compiler for NumPy
Numba: Array-oriented Python Compiler for NumPyNumba: Array-oriented Python Compiler for NumPy
Numba: Array-oriented Python Compiler for NumPy
 
Introduction to python
 Introduction to python Introduction to python
Introduction to python
 
Vulkan introduction
Vulkan introductionVulkan introduction
Vulkan introduction
 
Introduction to Node-RED
Introduction to Node-REDIntroduction to Node-RED
Introduction to Node-RED
 
Build beautiful native apps in record time with flutter
Build beautiful native apps in record time with flutterBuild beautiful native apps in record time with flutter
Build beautiful native apps in record time with flutter
 

Similar a Creando Aplicaciones para Android con Kivy

Similar a Creando Aplicaciones para Android con Kivy (20)

Android Pres3
Android Pres3Android Pres3
Android Pres3
 
App inventor
App inventorApp inventor
App inventor
 
Curso Iniciacion android
Curso Iniciacion androidCurso Iniciacion android
Curso Iniciacion android
 
Taller de Android
Taller de AndroidTaller de Android
Taller de Android
 
App inventor
App inventorApp inventor
App inventor
 
WinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSWinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOS
 
Introducción a la programación androide
Introducción a la programación androideIntroducción a la programación androide
Introducción a la programación androide
 
Taller deandroid
Taller deandroidTaller deandroid
Taller deandroid
 
Material rap1
Material rap1Material rap1
Material rap1
 
Introducción a Android: 10 cosas importantes que hay que entender
Introducción a Android: 10 cosas importantes que hay que entenderIntroducción a Android: 10 cosas importantes que hay que entender
Introducción a Android: 10 cosas importantes que hay que entender
 
Android
AndroidAndroid
Android
 
Android
AndroidAndroid
Android
 
Android
AndroidAndroid
Android
 
Android studio
Android studioAndroid studio
Android studio
 
Software
SoftwareSoftware
Software
 
Android
AndroidAndroid
Android
 
Curso de programación básico de android
Curso de programación básico de androidCurso de programación básico de android
Curso de programación básico de android
 
Proyecto 1
Proyecto 1Proyecto 1
Proyecto 1
 
Sistema Operativo. android
Sistema Operativo. androidSistema Operativo. android
Sistema Operativo. android
 
Android studio
Android studioAndroid studio
Android studio
 

Más de Nahuel Defossé

Clase 4/4 Curso Introducción a Python 2012
Clase 4/4 Curso Introducción a Python 2012Clase 4/4 Curso Introducción a Python 2012
Clase 4/4 Curso Introducción a Python 2012Nahuel Defossé
 
Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012Nahuel Defossé
 
Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012Nahuel Defossé
 
Clase 1 Curso Introducción a Python 2012
Clase 1 Curso Introducción a Python 2012Clase 1 Curso Introducción a Python 2012
Clase 1 Curso Introducción a Python 2012Nahuel Defossé
 
Creando un SCADA con Python y HTML5
Creando un SCADA con Python y HTML5Creando un SCADA con Python y HTML5
Creando un SCADA con Python y HTML5Nahuel Defossé
 

Más de Nahuel Defossé (6)

Clase 4/4 Curso Introducción a Python 2012
Clase 4/4 Curso Introducción a Python 2012Clase 4/4 Curso Introducción a Python 2012
Clase 4/4 Curso Introducción a Python 2012
 
Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012
 
Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012
 
Clase 1 Curso Introducción a Python 2012
Clase 1 Curso Introducción a Python 2012Clase 1 Curso Introducción a Python 2012
Clase 1 Curso Introducción a Python 2012
 
Presnetación Go
Presnetación GoPresnetación Go
Presnetación Go
 
Creando un SCADA con Python y HTML5
Creando un SCADA con Python y HTML5Creando un SCADA con Python y HTML5
Creando un SCADA con Python y HTML5
 

Último

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilJuanGallardo438714
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxlosdiosesmanzaneros
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Último (15)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Creando Aplicaciones para Android con Kivy

  • 1. Aplicaciones para Android con Kivy Nahuel Defossé Meetup Patagónico de Python Agosto, 2016
  • 2. Características de Kivy Framework para escribir aplicaciones multimedia (o al menos con capacidades gráficas avanzadas). Genera la UI a través de OpenGL (no usa widgets nativos) Solución completa basada en Python/Cython. Soporte Multi-táctil. Soporte en Windows, Linux y Mac, Android e iOS. Licencia MIT
  • 3. Instalación Pasos para Windows, Linux y OS X https://kivy.org/docs/installation/installation.html
  • 4. Proyectos Hermanos de Kivy Buildozer: empaquetador genérico apara Python (creador de APKs para Android!) Plyer: envoltura Pythonica independiente de la plataforma para APIs dependientes de la plataforma. Pyjnius: Acceso dinámico a Java/Android desde Python. Pyobjus: acceso dinámico a las APIs Objective-C/iOS desde Python. Python for Android: herramientas para compilar y empaquetar aplicaciones Python para Android. Kivy iOS: herramientas para compilar y empaquetar aplicaciones Python para Android. Audiostream: biblioteca para el acceso directo al micrófono y parlante. Kivy Designer: Diseñador de interfases para Kivy. KivEnt: motor de juegos orientado a entidades. Garden: widgets y bibliotecas creadas y mantenidas por usuarios.
  • 5. Ejemplos de capacidades de Kivy Figure 1: Layout Complejo
  • 7. Ejemplos de la vida real de Kivy Ejemplos: Museo de Historia Natural de Lille, Francia, Plane White, exhibición de Arte Interactiva, Particle Panda, Simulador de Partículas, Liatris, Robótica, Deteción de Objetos, Monitor de Misubishi LancelotEvo, Teclado TouchContinuum
  • 8. Componentes básicos de Kivy App Widget ScreenManager Screen Layouts Button Label TextInput Image Clock SoundLoader Animation
  • 9. Ejemplo Mínimo from kivy.app import App from kivy.uix.label import Label class MiApp(App): def build(self): return Label(text="Hola mundo") if __name__ == "__main__": MiApp().run() Para correrlo python main.py
  • 10. Depurando una aplicación Si bien la app no es aún compleja, tenemos un depurador de UIs! python main.py -m inspector Para activar el inspector debemos pulsar Control + e Figure 3: Depuración
  • 11. Prueba en Android Si la aplicación no necesita paquetes de terceros, podemos probarla en el Kivy Laucher de Google Play.
  • 12. Prueba en Android (cont.) Para esto creamos un archivo llamado android.txt en la misma carpeta dónde esté main.py, archivos .kv, carpeta data si la hubiera, etc. proyecto/ main.py estilo.kv android.txt Copiamos la carpeta en el telefono a través del administrador de archivos o con el comando adb en el directorio kivy. Ejemplo de android.txt title=Demo_1 author=Nahuel orientation=portrait
  • 13. Dando estilo En un archivo con nombre demo.kv (por le nombre DemoApp): <MyWidget>: BoxLayout: size: root.size Button: text: "Hola Mundo" on_press: app.decir_hola() Variables utilizables: app (app.root) self el widget en el que estamos parados root la ventana principal
  • 14. Utilizando programación reactiva La programación reactiva trata sobre reaccionar a los cambios. En kivy podemos generar reacciones a cambios de propiedades (de objetos). Por ejmplo, ante el cambio de un valor de un slider (propiedad value) se actualice un texto de una etiqueta. El lenguaje kv permite definir este comportamiento de manera muy sencilla. La forma de referenciar otros componentes, es utilizar el campo id.
  • 15. Programación Reactiva Ejemplo <MiWidget>: BoxLayout: orientation: 'vertical' size: root.size pos: root.pos BoxLayout: size_hint_y: .2 Button: text: texto.text on_press: app.saludar() Label: text: "%2.3f" % slider.value id: texto Slider: id: slider
  • 16. Garden Garden provee widgets mantenidos port terceros. Ej. mapview mapview es un widget para mostrar mapas a traves de OpenStreetMaps MapView. Instalación garden install mapview
  • 17. Garden (cont.) Utilización de mapview from kivy.garden.mapview import MapView from kivy.app import App class MapViewApp(App): def build(self): mapview = MapView( zoom=15, lat=-42.7852576, lon=-65.0083537) return mapview MapViewApp().run()
  • 19. Buildozer Buildozer es un paquete de Python que permite gestionar la compilación de aplicaciones escritas en Kivy. En particular nos interesa Android Está rota en OS X al momento de la charla, para generar apks se puede utilizar una máqiuna virtual. Creación del archivo de especificaciones pip install buildozer buildozer android init
  • 20. buildozer.spec Este archivo define entre otras cosas: Nombre de la aplicación, paquete y version Rutas a los SDK y NDK (si no se definen se descargar automaticamente)
  • 21. Compilando Nota buildozer baja todo, Andoird SDK, Android NDK, ANT, Python-for-Android y lo compila. La primera ejecución puede demorar un buen rato (más de 15 minutos en conexiones de menos de 3Mbits). Creación de APK depuración buildozer andoird debug Creación de APK release buildozer andoird release Creación de APK y ejecución buildozer andoird debug deploy run
  • 22. Depuración del APK logcat buildozer android logcat Permite ver la salida de depuración de Android. Es importante filtrar lo útil, ya que se ven los mensajes de todas las aplicaciones.
  • 23. Usando características propias de Android plyer Envoltura Pythonica. Más fácil de usar. APIs más populares. pyjnius Reflexión, cualquier API, control total sobre Java.
  • 24. Demo Aplicación soundboard, a partir de sonidos de memes de internet. Código fuente https://github.com/D3f0/soundboard APK https://github.com/D3f0/soundboard/blob/master/bin/ Soundboard-0.3.1-debug.apk?raw=true
  • 25. Links sobre Kivy Kivy - Creating Desktop and Mobile Apps with Python Kivy with Python tutorial for Mobile Application Development Kivy Crash Course Muy buen tuorial en videos cortos.
  • 26. Gracias! No duden en hacerme consultar a https://twitter.com/d3f0