0% found this document useful (0 votes)
19 views41 pages

Developing Apps For Android and Other Platforms Wi

The document discusses developing apps for Android and other platforms using Kivy and Python. It provides an introduction to Python and Kivy, demonstrates some example apps including Pong, and discusses accessing device APIs and packaging apps.

Uploaded by

kelaryg
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views41 pages

Developing Apps For Android and Other Platforms Wi

The document discusses developing apps for Android and other platforms using Kivy and Python. It provides an introduction to Python and Kivy, demonstrates some example apps including Pong, and discusses accessing device APIs and packaging apps.

Uploaded by

kelaryg
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/259903531

Developing Apps for Android and Other Platforms with Kivy and
Python

Presentation · April 2013


Source: DLR

CITATIONS READS

3 57,137

1 author:

Andreas Schreiber
German Aerospace Center (DLR)
177 PUBLICATIONS 1,223 CITATIONS

SEE PROFILE

All content following this page was uploaded by Andreas Schreiber on 13 August 2014.

The user has requested enhancement of the downloaded file.


www.DLR.de • Chart 1 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Developing Apps for Android


and Other Platforms with Kivy
and Python

Andreas Schreiber <[email protected]>

droidcon 2013, Berlin, 09. April 2013


www.DLR.de • Chart 2 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Outline

• Introduction
• Python
• Kivy
• Demos
• Limitations
• Credits
www.DLR.de • Chart 3 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Me

Scientist,
Head of department

Founder,
CEO

Enthusiastic about
Python
www.DLR.de • Chart 4 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

DLR
German Aerospace Center

− Research Institution
− Space Agency
− Project Management Agency
www.DLR.de • Chart 5 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Locations and employees

7400 employees across Stade  Hamburg


32 institutes and facilities at  Neustrelitz
Bremen   Trauen
16 sites.
Berlin 
Braunschweig 
Offices in Brussels, Paris,
 Goettingen
Tokyo and Washington.
Juelich   Cologne
 Bonn
~1400 employees develop software

Lampoldshausen 

Stuttgart 
Augsburg 
 Oberpfaffenhofen
Weilheim 
www.DLR.de • Chart 6 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Python
Python

• General-purpose, high-level programming language


• Object-oriented, aspect-oriented, functional
• Dynamic type system
• Easy-to-learn with clear and expressive syntax

def faculty(x):
if x > 1:
return x * faculty(x - 1)
else:
return 1
www.DLR.de • Chart 8 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Python on Mobile Devices

Early Mobile Development with Python


• PyS60 for Symbian
• Python CE for Windows Mobile

Current Mobile Development with Python


• Scripting Layer for Android (SL4A)
• Python for Android (Py4A)
• PySide / Qt for Android
• WinRT / IronPython for Windows 8
• Kivy…
www.DLR.de • Chart 9 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Kivy
www.DLR.de • Chart 10 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Kivy

• Platform-independent Python-Framework

• Available for
• Android
• iOS
• Meego
• Windows kivy.org
• Linux
• OSX
• (Raspberry Pi)

• Development in Python on all platforms


• Not emulated!
www.DLR.de • Chart 11 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Kivy Basics

• Framework for Natural User Interfaces (NUI)


• Touchscreens / Multi-Touch

• GPU accelerated graphics


• Based on OpenGL ES 2.0

• Suitable for prototypes as well as products


• Porting to new platforms is easy
www.DLR.de • Chart 12 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Kivy Software

• Open Source (LGPL), 7 Core developer

• Source code: https://github.com/kivy

• Documentation: http://kivy.org/docs

• Kivy on Google Play:


https://play.google.com/store/apps/details?id=org.kivy.pygame
www.DLR.de • Chart 13 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Kivy says Hello!

from kivy.app import App


from kivy.uix.button import Button

class HelloApp(App):
def build(self):
return Button(text='Hello Berlin')

HelloApp().run()
www.DLR.de • Chart 14 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013
www.DLR.de • Chart 15 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Development with Kivy

• Python for widgets, input, program logic

• Language KV for layout und graphics

• Cython for low-level access to graphic routines


www.DLR.de • Chart 16 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

“Hello Berlin” with KV

from kivy.app import App

class HelloApp(App):
pass

HelloApp().run() File hello.kv


defines root widget

#:kivy 1.0

Button:
text: ‘Hello Berlin’
www.DLR.de • Chart 17 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Example: Pong

import kivy
from kivy.app import App
from kivy.uix.widget import Widget

class PongGame(Widget):
pass

class PongApp(App):
def build(self):
return PongGame()

if __name__ == '__main__':
PongApp().run()
www.DLR.de • Chart 18 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Pong Graphics
#:kivy 1.6.0

<PongGame>:
canvas:
Rectangle:
pos: self.center_x - 5, 0
size: 10, self.height

Label:
font_size: 70
center_x: root.width / 4
top: root.top - 50
text: "0"

Label:
font_size: 70
center_x: root.width * 3 / 4
top: root.top - 50
text: "0"
www.DLR.de • Chart 19 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Pong

Full example: http://kivy.org/docs/tutorials/pong.html


www.DLR.de • Chart 20 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Accessing Java Classes from Python

• Smartphones have many APIs


• Camera, Compass, Contacts, Location, …

• Access from Python via PyJNIus


• https://github.com/kivy/pyjnius
• Implemented with JNI and Java reflection

Example

from jnius import autoclass

Hardware = autoclass('org.renpy.android.Hardware')
print 'DPI is', Hardware.getDPI()
www.DLR.de • Chart 21 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Packaging

• Creating packages for Windows, OSX, Android und iOS:


http://kivy.org/docs/guide/packaging.html
www.DLR.de • Chart 22 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Build Tools

Tool chain
• Python-for-android
• Cross compiler for ARM
• Android SDK & NDK
• Python and some Python packages

Buildozer
• Hides the complexity: Downloads, compiles, packages Kivy source code
• https://github.com/kivy/buildozer

% buildozer android debug deploy run


www.DLR.de • Chart 23 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Demos
www.DLR.de • Chart 24 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Kivy Showcase
www.DLR.de • Chart 25 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Kivy Pictures
www.DLR.de • Chart 26 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Small Dragon Luki


Speech therapy game for kids
www.DLR.de • Chart 27 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Small Dragon Luki


www.DLR.de • Chart 28 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

MQTT Client
www.DLR.de • Folie 29 mobile.cologne > Andreas Schreiber • Plattformübergreifende Apps entwickeln mit Kivy und Python > 08.11.2012

Steering Plant Growth

• Webcam takes picture of plants

• Computer detects plant

• Computer generates an image for


lighting

• Light source (e.g., a projector)


illuminates the plant using the
generated image
www.DLR.de • Chart 30 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013
www.DLR.de • Chart 31 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013
www.DLR.de • Chart 32 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013
www.DLR.de • Chart 33 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013
www.DLR.de • Chart 34 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Other Examples…
iOS-App Deflectouch

https://itunes.apple.com/de/app/deflectouch/id505729681
iOS/Android-App ProcessCraft

https://itunes.apple.com/gb/app/processcraft/id526377075
http://showgen.com
www.DLR.de • Chart 37 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Limitations
www.DLR.de • Chart 38 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Missing, but Planned (or In Progress)

User Interface Designer


• Design tool for Kivy Language KV
• Planned for GSoC

Abstraction of mobile APIs


• Platform-independent Python wrapper for platform APIs (Android, iOS,
Linux/Mac/Windows)
• Project Plyer will start as GSoC project maybe

Porting to Raspberry Pi
• Useful for small/cheap standalone systems
• Founded via Crowdsourcing (bountysource.com)
www.DLR.de • Chart 39 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Credits

Thanks to the Kivy developers

• Mathieu Virbel (@mathieuvirbel)

• Thomas Hansen (@hansent)

• Gabriel Pettier (@tshirtman)

• and many others


www.DLR.de
> droidcon 2013
• Chart
> A. 40
Schreiber • Developing
Apps for Android and
Other Platforms with Kivy
and Python > 09.04.2013

Questions?

Summary
• Kivy allows platform-independent development of
apps for Android, iOS, Meego, Windows, OSX
and Linux
• Suitable for multi-touch and graphics applications,
such as kiosk systems, exhibits, games, …

Andreas Schreiber
Twitter: @onyame
http://www.dlr.de/sc
View publication stats

You might also like