programming mobile apps with python · pdf fileprogramming mobile apps with python ......
TRANSCRIPT
![Page 1: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/1.jpg)
www.medando.de
Programming Mobile Apps with Python
Andreas Schreiber <[email protected]> EuroPython 2012, Florence, Italy (July 3, 2012)
![Page 2: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/2.jpg)
Slide 2 www.medando.de EuroPython 2012, Florence, 03.07.2012
Medando – Mobile Health Apps
![Page 3: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/3.jpg)
Slide 3 www.medando.de EuroPython 2012, Florence, 03.07.2012
My Blood Pressure
![Page 4: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/4.jpg)
Slide 4 www.medando.de EuroPython 2012, Florence, 03.07.2012
Overview
• Apps and Statistics
• Apps, Hardware, Markets
• Early Mobile Development with Python
• Nokia, Windows Mobile / CE
• Current Mobile Development with Python
• Android, iOS, Windows Phone
• Everything else…
• Other systems, summary, conclusions
![Page 5: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/5.jpg)
Slide 5 www.medando.de EuroPython 2012, Florence, 03.07.2012
Mobile Apps
What is a mobile app?
• A software designed to run on smartphones, tablet computers, and other mobile devices
• Limited memory, small screens, touch UI, battery efficient
• Runs on mobile operating systems
• Available through application distribution platforms
• Apps are either free or paid
• “App” was Word of the Year in 2010 (USA)
![Page 6: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/6.jpg)
Slide 6 www.medando.de EuroPython 2012, Florence, 03.07.2012
Smartphones
What is a smartphone?
• Mobile phone based on a mobile operating platform
• Combination of
• PDA functions, camera, media player, Web browser, …
• Equipped with
• Touch screen, high-speed networking (Wi-Fi, mobile broadband), GPS, NFC, acceleration sensors, …
![Page 7: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/7.jpg)
Slide 7 www.medando.de EuroPython 2012, Florence, 03.07.2012
Tablet Computers
What is a Tablet?
• A mobile computer that is larger than a smartphone
• Built as touch screen device
• Virtual keyboard, sometimes stylus or digital pen
• Mostly based on x86 or ARM architectures
![Page 8: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/8.jpg)
Slide 8 www.medando.de EuroPython 2012, Florence, 03.07.2012
Mobile Operating Systems
Popular mobile operating systems
• Android
• Apple iOS
• Windows Phone / Mobile / CE
• RIM BlackBerry
• Nokia OS / Symbian
• Samsung Bada
• …
![Page 9: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/9.jpg)
Slide 9 www.medando.de EuroPython 2012, Florence, 03.07.2012
Market Share: Smartphone Sales
Source: http://en.wikipedia.org/wiki/Smartphone
![Page 10: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/10.jpg)
Slide 10 www.medando.de EuroPython 2012, Florence, 03.07.2012
App Distribution
• Application Distribution Platforms
• Google Play
• Apple App Store
• Windows Phone Marketplace (and Windows Marketplace for Mobile)
• BlackBerry App World
• Nokia Ovi Store
• Many more
• Cross-platform, manufacturer-specific, carrier-specific, …
![Page 11: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/11.jpg)
Slide 11 www.medando.de EuroPython 2012, Florence, 03.07.2012
Apps in the iOS App Store
Source: http://en.wikipedia.org/wiki/App_Store_(iOS)
![Page 12: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/12.jpg)
Slide 12 www.medando.de EuroPython 2012, Florence, 03.07.2012
Apps in the Android Market / Google Play
0
100.000
200.000
300.000
400.000
500.000
600.000
700.000Google Play Apps
![Page 13: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/13.jpg)
Slide 13 www.medando.de EuroPython 2012, Florence, 03.07.2012
Apps in Google Play
0
5.000.000.000
10.000.000.000
15.000.000.000
20.000.000.000
25.000.000.000Google Play Downloads
![Page 14: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/14.jpg)
Slide 14 www.medando.de EuroPython 2012, Florence, 03.07.2012
Apps in the Windows Phone Marketplace
Source: http://www.windowsphoneapplist.com
![Page 15: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/15.jpg)
Slide 15 www.medando.de EuroPython 2012, Florence, 03.07.2012
So Many Apps…
… but almost none of them are developed in Python!
![Page 16: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/16.jpg)
Slide 16 www.medando.de EuroPython 2012, Florence, 03.07.2012
Early Mobile Development with Python
• Symbian
• Window Mobile / CE
![Page 17: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/17.jpg)
Slide 17 www.medando.de EuroPython 2012, Florence, 03.07.2012
Symbian
Symbian OS
• Operating system for smartphones and PDAs
• Micro kernel, 32bit, single user
• GUI-centric application framework
S60
• User interface for smartphones
Programming for Symbian
• C++, Java, Web Widgets
• (Flash Lite), (Python)
A schematic diagram of the S60 platform architecture.
![Page 18: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/18.jpg)
Slide 18 www.medando.de EuroPython 2012, Florence, 03.07.2012
Python for S60 (PyS60)
• Python port for S60 platform
• Developed by Nokia, but development has stopped
• Open-Source-License (Apache Version 2)
• Stable Release
• Last release: 1.4.5 (27.01.2009)
• Available on SourceForge http://sourceforge.net/projects/pys60
![Page 19: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/19.jpg)
Slide 19 www.medando.de EuroPython 2012, Florence, 03.07.2012
“Hello World”
import appuifw appuifw.app.title = u„Hello World" appuifw.note(u"Hello World!", 'info')
![Page 20: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/20.jpg)
Slide 20 www.medando.de EuroPython 2012, Florence, 03.07.2012
Starting a Python Interpreter
![Page 21: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/21.jpg)
Slide 21 www.medando.de EuroPython 2012, Florence, 03.07.2012
Running Scripts
![Page 22: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/22.jpg)
Slide 22 www.medando.de EuroPython 2012, Florence, 03.07.2012
Interactive Console
![Page 23: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/23.jpg)
Slide 23 www.medando.de EuroPython 2012, Florence, 03.07.2012
Source Code Template
1. Importing modules
2. Setting screen size
3. Applications menu
4. Set. exit key handler
(Callback function)
5. Setting app title
6. Application body
7. Active Objects
8. Main Loop
Complete template: http://www.mobilenin.com/pys60/resources/app_skeleton_with_mainloop.py
import appuifw import e32 appuifw.app.screen = 'normal' def item1(): print "item1 was selected.” appuifw.app.menu = [(u"item 1", item1)] def quit(): appuifw.app.set_exit() app.exit_key_handler=quit appuifw.app.title = u'Simple Application' app_lock = e32.Ao_lock() # starts scheduler -> event processing app_lock.wait()
![Page 24: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/24.jpg)
Slide 24 www.medando.de EuroPython 2012, Florence, 03.07.2012
Example „Location Based Service“
import location HOME_CELL_ID = u"98521779" # my home in Cologne, Germany WIFE = u"+49173247****“ # cell phone number of my wife entries = [u"can’t wait to see you!", u"I’m hungry.", u"I’m in a bad mood."] listbox = appuifw.Listbox(entries, shout) home = 0 while home == 0: country, provider, lac, cell = location.gsm_location() if (cell== HOME_CELL_ID): home = 1 message = u"Will be at home in a moment and %s" % mood messaging.sms_send(WIFE, message)
Send SMS to someone if certain cell is near (using GSM Cell ID)
![Page 25: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/25.jpg)
Slide 25 www.medando.de EuroPython 2012, Florence, 03.07.2012
Example „OpenGL“
http://tinyurl.com/pys60cube
![Page 26: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/26.jpg)
Slide 26 www.medando.de EuroPython 2012, Florence, 03.07.2012
Windows Mobile / CE
Windows Mobile
• Operating system for smartphones
• Based on Windows CE kernel
• Implemented in C
Programming for Windows Mobile
• Visual C++ (native code)
• .NET framework
• Tcl-Tk (with eTcl)
• Python with PythonCE
![Page 27: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/27.jpg)
Slide 27 www.medando.de EuroPython 2012, Florence, 03.07.2012
Python CE
• Python port for Windows CE
• Python CE: http://pythonce.sourceforge.net/
• Outdated since 2007
# Send a quick popup message to the user import win32sys win32sys.MessageBox(0, "My Message", "My Title", 1) win32sys.MessageBeep() # Launch another CE application import win32sh win32sh.ShellExecuteEx(0, 0, "", "\\Windows\\calc.exe", "", "\\Windows", 1)
![Page 28: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/28.jpg)
Slide 28 www.medando.de EuroPython 2012, Florence, 03.07.2012
Current Mobile Development with Python
• Android
• iOS
• Windows Phone
![Page 29: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/29.jpg)
Slide 29 www.medando.de EuroPython 2012, Florence, 03.07.2012
Android
Android
• Linux-based operating system for mobile devices
• Developed by the Open Handset Alliance, led by Google
• Open Source, Apache License
• Kernel based on Linux-kernel
• Libraries and APIs written in C
• Application Framework in Java
• Java VM Dalvik with JIT
• Hardware platform: ARM
![Page 30: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/30.jpg)
Slide 30 www.medando.de EuroPython 2012, Florence, 03.07.2012
Programming Android
• Apps are usually developed in Java
• Software development tools
• Android Software Development Kit
• Native Development Kit
• App Inventor for Android
• Simple project and Basic4android
• some others
• Python!?
![Page 31: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/31.jpg)
Slide 31 www.medando.de EuroPython 2012, Florence, 03.07.2012
Python for Android
Several options
• Scripting Layer for Android (SL4A)
• Python for Android (Py4A)
• Kivy
• PySide for Android
• PyGame
![Page 32: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/32.jpg)
Slide 32 www.medando.de EuroPython 2012, Florence, 03.07.2012
Scripting Layer for Android (SL4A)
• Executes scripts and interactive interpreters on Android
• Access to many APIs
• Support for • Python • Perl • Ruby • Lua • BeanShell • JavaScript • Tcl
• Available on Google Code: http://code.google.com/p/android-scripting
Source: Practical Android Projects by Lucas Jordan and Pieter Greyling
![Page 33: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/33.jpg)
Slide 33 www.medando.de EuroPython 2012, Florence, 03.07.2012
Scripting Layer for Android (SL4A)
• Support for some UI elements: Dialogs, Toasts, Progressbar, …
• Interactive console
Source: Practical Android Projects by Lucas Jordan and Pieter Greyling
![Page 34: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/34.jpg)
Slide 34 www.medando.de EuroPython 2012, Florence, 03.07.2012
Scripting Layer for Android (SL4A)
• Scripts
• Sharing via barcodes or APKs
• Hello Word:
import android droid = android.Android() droid.makeToast('Hello, Android!')
![Page 35: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/35.jpg)
Slide 35 www.medando.de EuroPython 2012, Florence, 03.07.2012
Python for Android (Py4A)
• Python interpreter for Android
• CPython, cross-compiled for Android
• Used in SL4A
• Access to many Android APIs
• Native UI support not complete
• Website: http://code.google.com/p/python-for-android/
![Page 36: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/36.jpg)
Slide 36 www.medando.de EuroPython 2012, Florence, 03.07.2012
Building an App
• To build a stand-alone app, the Python for Android interpreter must be included in an APK
• Project: http://code.google.com/p/android-python27/
• Template files
• Build files
• Basically requires to change Java code to add your own script
public static final String PYTHON_MAIN_SCRIPT_NAME = "hello.py"; public static final String PYTHON_PROJECT_ZIP_NAME = "my_python_project.zip";
File: GlobalConstants.java
![Page 37: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/37.jpg)
Slide 37 www.medando.de EuroPython 2012, Florence, 03.07.2012
Kivy
• Cross platform framework for innovative user interfaces
• Multi-touch
• Runs on Android, iOS, Linux, Windows, Mac OSX
• Graphics engines uses OpenGL ES2
• Open Source
• Website: http://kivy.org
![Page 38: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/38.jpg)
Slide 38 www.medando.de EuroPython 2012, Florence, 03.07.2012
Kivy Hello World
from kivy.app import App from kivy.uix.button import Button class TestApp(App): def build(self): return Button(text='Hello World') TestApp().run()
Source: Kivy Website kivy.org
![Page 39: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/39.jpg)
Slide 39 www.medando.de EuroPython 2012, Florence, 03.07.2012
See Kivy Poster Outside…
Poster by Mathieu Virbel
![Page 40: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/40.jpg)
Slide 40 www.medando.de EuroPython 2012, Florence, 03.07.2012
PySide for Android
• For writing GUI applications for Android using Python
• Based on
• Python for Android (Py4A)
• Qt for Android (Necessitas)
• Python bindings for Qt (PySide)
• Website: http://thp.io/2011/pyside-android/
![Page 41: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/41.jpg)
Slide 41 www.medando.de EuroPython 2012, Florence, 03.07.2012
PySide for Android Example
import sys import traceback def main(): from PySide.QtCore import * from PySide.QtGui import * app = QApplication(sys.argv) w = QLabel('Hello World!') w.show() app.exec_() if __name__=="__main__": main()
![Page 42: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/42.jpg)
Slide 42 www.medando.de EuroPython 2012, Florence, 03.07.2012
Pygame Subset for Android
• Subset of Pygame for the Android platform
• Good for developing simple games
• Website: http://pygame.renpy.org/
![Page 43: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/43.jpg)
Slide 43 www.medando.de EuroPython 2012, Florence, 03.07.2012
iOS
![Page 44: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/44.jpg)
Slide 44 www.medando.de EuroPython 2012, Florence, 03.07.2012
Apple iOS
iOS
• Mobile operating system by Apple
• Multi-touch user interface
• OS layer: Core OS layer, Core Services, Media layer, Cocoa Touch layer
Programming iOS
• Apps are written in Objective-C
• Software Development Kit and IDE Xcode
• Python on iOS almost not possible
![Page 45: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/45.jpg)
Slide 45 www.medando.de EuroPython 2012, Florence, 03.07.2012
Python for iOS – A Python IDE for the iOS
http://pythonforios.com/
![Page 46: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/46.jpg)
Slide 46 www.medando.de EuroPython 2012, Florence, 03.07.2012
Python for iOS – On iPhone
![Page 47: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/47.jpg)
Slide 47 www.medando.de EuroPython 2012, Florence, 03.07.2012
Python for iOS – On iPad
![Page 48: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/48.jpg)
Slide 48 www.medando.de EuroPython 2012, Florence, 03.07.2012
Python for iOS – On iPad
![Page 49: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/49.jpg)
Slide 49 www.medando.de EuroPython 2012, Florence, 03.07.2012
Python for iOS – On iPad
![Page 50: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/50.jpg)
Slide 50 www.medando.de EuroPython 2012, Florence, 03.07.2012
Kivy
• You can publish Kivy Apps in the Apple App Store
• No dynamic linking
• First App: Deflectouch
![Page 51: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/51.jpg)
Slide 51 www.medando.de EuroPython 2012, Florence, 03.07.2012
Windows Phone
Windows Phone
• Mobile operating system by Microsoft
• Successor to Windows Mobile
Programming for Windows Phone
• Apps must be based on XNA or Silverlight
• Windows Phone Developer Tools
![Page 52: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/52.jpg)
Slide 52 www.medando.de EuroPython 2012, Florence, 03.07.2012
IronPython
IronPython
• Python implementation for the .NET platform
• Since version 2.7.2 (March 2012):
• Preliminary support for Windows Phone 7.5
• No documentation yet
• http://blog.ironpython.net/2012/03/whats-new-in-ironpython-272.html
![Page 53: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/53.jpg)
Slide 53 www.medando.de EuroPython 2012, Florence, 03.07.2012
Everything else…
![Page 54: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/54.jpg)
Slide 54 www.medando.de EuroPython 2012, Florence, 03.07.2012
Other Mobile Devices
Many other devices with Apps
• Livescribe
• Amazon Kindle
• No Python support
• Maybe support via Jython
![Page 55: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/55.jpg)
Slide 55 www.medando.de EuroPython 2012, Florence, 03.07.2012
Summary
Symbian Android iOS Windows Phone
Python support
Yes Yes, with restrictions
Via Kivy Not now
![Page 56: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/56.jpg)
Slide 56 www.medando.de EuroPython 2012, Florence, 03.07.2012
Comparison Matrix by Thomas Perl (@thp4)
Source: http://thp.io/2012/mobile-matrix/
![Page 57: Programming Mobile Apps with Python · PDF fileProgramming Mobile Apps with Python ... Programming Android • Apps are usually developed in Java • Software development tools •](https://reader034.vdocuments.net/reader034/viewer/2022052302/5a853e827f8b9a882e8c1d05/html5/thumbnails/57.jpg)
Slide 57 www.medando.de EuroPython 2012, Florence, 03.07.2012
Questions?
@onyame
Conclusions
• Python on mobile phone not ready for production development of apps
• Some solutions for scripting and interactive interpretation