Kivy is an open source framework for developing apps for natural user interfaces such as touch screens and multi-touch displays. The Kivy framework is platform independent. Implementations exist for Android, iOS, Linux, Mac OS-X, and Windows. The programming language Python is used to develop apps based on Kivy. Since Kivy sits on top of OpenGL, it is very well suited for graphics applications such as games or information displays. Kivy can be used both to develop prototypes as well as products that are available through the usual app stores. In this talk you will learn all the basics about the Kivy framework including live demonstrations of some Kivy-based apps. We will also show how you can package Kivy-based apps to distribute via app stores. Some examples for real-world apps shows you how we are using Kivy to develop prototypes and products for health, medicine and biology. Of course, you learn about benefits and limitations of using Kivy for app development.

ResearchGate Logo

Discover the world's research

  • 20+ million members
  • 135+ million publications
  • 700k+ research projects

Join for free

Developing Apps for Android

and Other Platforms with Kivy

and Python

Andreas Schreiber <andreas.schreiber@dlr.de>

droidcon 2013, Berlin, 09. April 2013

www.DLR.de • Chart 1 > 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 2 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Me

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

Scientist,

Head of department

Founder,

CEO

Enthusiastic about

Python

DLR

German Aerospace Center

Research Institution

Space Agency

Project Management Agency

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

Locations and employees

7400 employees across

32 institutes and facilities at

16 sites.

Offices in Brussels, Paris,

Tokyo and Washington.

~1400 employees develop software

Cologne

Oberpfaffenhofen

Braunschweig

Goettingen

Berlin

Bonn

Neustrelitz

Weilheim

Bremen Trauen

Lampoldshausen

Stuttgart

Stade

Augsburg

Hamburg

Juelich

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

Python

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

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

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 8 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

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

Platform- independent Python -Framework

Available for

Android

iOS

Meego

Windows

Linux

OSX

(Raspberry Pi)

Development in Python on all platforms

Not emulated!

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

kivy.org

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 11 > 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 12 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

Kivy says Hello!

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

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

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 15 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

"Hello Berlin" with KV

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

from kivy.app import App

class HelloApp(App):

pass

HelloApp().run()

#:kivy 1.0

Button:

text: 'Hello Berlin'

File hello.kv

defines root widget

Example: Pong

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

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()

Pong Graphics

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

#: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"

Pong

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

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

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

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

from jnius import autoclass

Hardware = autoclass('org.renpy.android.Hardware')

print 'DPI is', Hardware.getDPI()

Packaging

Creating packages for Windows, OSX, Android und iOS:

http://kivy.org/docs/guide/packaging.html

www.DLR.de • Chart 21 > 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

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

% buildozer android debug deploy run

Demos

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

Kivy Showcase

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

Kivy Pictures

www.DLR.de • Chart 25 > 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 26 > 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 27 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

MQTT Client

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

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

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

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

Other Examples…

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

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

Limitations

www.DLR.de • Chart 37 > 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 38 > 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 • Chart 39 > droidcon 2013 > A. Schreiber • Developing Apps for Android and Other Platforms with Kivy and Python > 09.04.2013

> droidcon 2013 > A.

Schreiber • Developing

Apps for Android and

Other Platforms with Kivy

and Python > 09.04.2013

www.DLR.de • Chart 40

Questions?

Andreas Schreiber

Twitter: @onyame

http://www.dlr.de/sc

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, …

... al 2009) project [12] . In their paper, "Developing App for Android and Other Platforms with Kivy and Python" Andreas Schreiber give a demonstration of Kivy-based application and sum-maries Kivy framework [11] kivy is most well known android supporting python toolkit has been since around 1012. kivy dose not specifically designed for mobile support but it focus on cross platform and supporting novel user interface this properties made it support android , IOS as well as desktop use [8]. it draw its GUI using openGL which working essentially same at all platform.kivy android support originally based on Renpy's Android build tool. it help to Create multi touch user interface and python UI framework for rapid development of mobile application [6] . ...

... We use the Kivy because its framework which support the python language and its very easy to integrate with python library[2] [11]. ...

  • Swapnil More Swapnil More
  • Rishabh Jain
  • Harshil Kanakia

In the fastest developing world education is the most important factor in all over the country. Indian Rural teachers have a great responsibility on their shoulders to educate the students without getting technological support. They face various challenges like network problems, lack of technical skills, the burden of multitasking. In this research, paper researchers try to make an application for Indian rural teachers to fight technical challenges and overcome the burden on them.

ResearchGate has not been able to resolve any references for this publication.