SlideShare una empresa de Scribd logo
4
Lo más leído
13
Lo más leído
14
Lo más leído
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

PPTX
Embedded linux
PDF
Android Development with Kotlin, Part 1 - Introduction
PDF
Board support package_on_linux
PDF
Embedded Android : System Development - Part II (HAL)
PDF
LAS16-307: Benchmarking Schedutil in Android
PPTX
Clean code in Jupyter notebooks
PDF
Audio in linux embedded
PDF
Tuning Android for low RAM
Embedded linux
Android Development with Kotlin, Part 1 - Introduction
Board support package_on_linux
Embedded Android : System Development - Part II (HAL)
LAS16-307: Benchmarking Schedutil in Android
Clean code in Jupyter notebooks
Audio in linux embedded
Tuning Android for low RAM

La actualidad más candente (20)

PDF
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
PPTX
kali linux.pptx
PPTX
Best practices for ansible
PDF
CMake - Introduction and best practices
DOCX
c++ report file for theatre management project
PDF
Android IPC Mechanism
PDF
1.2 autenticación y autorización
PDF
Audio Drivers
PDF
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
PPTX
Introduction to Android Develpment
PPTX
Kali Linux
PDF
Docker-PPT.pdf for presentation and other
PPT
Raspberrypi best ppt
PDF
Introduction to Docker Compose
PDF
Android framework design and development
PDF
Kubernetes security
PPTX
Raspberry Pi (Introduction)
PDF
Cours langage-c
PDF
Qt for Python
 
PDF
모두의 쿠버네티스 (Kubernetes for everyone)
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
kali linux.pptx
Best practices for ansible
CMake - Introduction and best practices
c++ report file for theatre management project
Android IPC Mechanism
1.2 autenticación y autorización
Audio Drivers
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Introduction to Android Develpment
Kali Linux
Docker-PPT.pdf for presentation and other
Raspberrypi best ppt
Introduction to Docker Compose
Android framework design and development
Kubernetes security
Raspberry Pi (Introduction)
Cours langage-c
Qt for Python
 
모두의 쿠버네티스 (Kubernetes for everyone)
Publicidad

Similar a Creando Aplicaciones para Android con Kivy (20)

ODP
Desarrollo de aplicaciones multiplataforma con python y Kivy
PDF
Ingeniería inversa básica en android tomo ii
PDF
Android Tips & Tricks - Boosting your productivity
 
ODP
Desarrollo de aplicaciones android con Python
PDF
Seminario Android (Parte 1) - movilforum
ODP
Python en Android,Charla del FUDcon Latam 2012
ODP
Python en Android
PPT
Nivel Inicial app inventor - Presentación.ppt
PPTX
APLICACIONES ANDROID
PDF
Desarollando aplicaciones móviles con Python y Android
PPTX
Crear aplicaciones para Android en Google
PDF
[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación
PPTX
Troyanizando y Auditando Android - HoneyCON
PPTX
Curso Iniciacion android
PDF
Py Qt Desarrollando Aplicaciones De Escritorio El Co Di Go K
PPTX
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
PPTX
Curso Cloud Computing, Parte 2: Google App Engine
PDF
Introducción a Mobile Processing
PPTX
Aplicación Android Patito helpme
ODP
Taller livetrackingandroid
Desarrollo de aplicaciones multiplataforma con python y Kivy
Ingeniería inversa básica en android tomo ii
Android Tips & Tricks - Boosting your productivity
 
Desarrollo de aplicaciones android con Python
Seminario Android (Parte 1) - movilforum
Python en Android,Charla del FUDcon Latam 2012
Python en Android
Nivel Inicial app inventor - Presentación.ppt
APLICACIONES ANDROID
Desarollando aplicaciones móviles con Python y Android
Crear aplicaciones para Android en Google
[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación
Troyanizando y Auditando Android - HoneyCON
Curso Iniciacion android
Py Qt Desarrollando Aplicaciones De Escritorio El Co Di Go K
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
Curso Cloud Computing, Parte 2: Google App Engine
Introducción a Mobile Processing
Aplicación Android Patito helpme
Taller livetrackingandroid
Publicidad

Más de Nahuel Defossé (6)

PDF
Clase 4/4 Curso Introducción a Python 2012
PDF
Clase 3/4 Curso Introducción a Python 2012
PDF
Clase 2/4 Curso Introducción a Python 2012
PDF
Clase 1 Curso Introducción a Python 2012
PDF
Presnetación Go
PDF
Creando un SCADA con Python y HTML5
Clase 4/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 1 Curso Introducción a Python 2012
Presnetación Go
Creando un SCADA con Python y HTML5

Último (20)

PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
Estrategia de apoyo tecnología miguel angel solis
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PDF
CyberOps Associate - Cisco Networking Academy
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PDF
SAP Transportation Management para LSP, TM140 Col18
PPT
introduccion a las_web en el 2025_mejoras.ppt
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
taller de informática - LEY DE OHM
PDF
Estrategia de apoyo tecnología grado 9-3
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
Maste clas de estructura metálica y arquitectura
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Sesion 1 de microsoft power point - Clase 1
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Estrategia de apoyo tecnología miguel angel solis
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Plantilla para Diseño de Narrativas Transmedia.pdf
CyberOps Associate - Cisco Networking Academy
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Calidad desde el Docente y la mejora continua .pdf
historia_web de la creacion de un navegador_presentacion.pptx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
SAP Transportation Management para LSP, TM140 Col18
introduccion a las_web en el 2025_mejoras.ppt
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
taller de informática - LEY DE OHM
Estrategia de apoyo tecnología grado 9-3
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Maste clas de estructura metálica y arquitectura
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...

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