Programming Mobile Apps with Python

Programming Mobile Apps with Python

Programming Mobile Apps with Python Andreas Schreiber <[email protected]> EuroPython 2012, Florence, Italy (July 3, 2012) www.medando.de Medando – Mobile Health Apps EuroPython 2012, Florence, 03.07.2012 Slide 2 www.medando.de My Blood Pressure EuroPython 2012, Florence, 03.07.2012 Slide 3 www.medando.de 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 EuroPython 2012, Florence, 03.07.2012 Slide 4 www.medando.de 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) EuroPython 2012, Florence, 03.07.2012 Slide 5 www.medando.de 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, … EuroPython 2012, Florence, 03.07.2012 Slide 6 www.medando.de 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 EuroPython 2012, Florence, 03.07.2012 Slide 7 www.medando.de Mobile Operating Systems Popular mobile operating systems • Android • Apple iOS • Windows Phone / Mobile / CE • RIM BlackBerry • Nokia OS / Symbian • Samsung Bada • … EuroPython 2012, Florence, 03.07.2012 Slide 8 www.medando.de Market Share: Smartphone Sales Source: http://en.wikipedia.org/wiki/Smartphone EuroPython 2012, Florence, 03.07.2012 Slide 9 www.medando.de 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, … EuroPython 2012, Florence, 03.07.2012 Slide 10 www.medando.de Apps in the iOS App Store Source: http://en.wikipedia.org/wiki/App_Store_(iOS) EuroPython 2012, Florence, 03.07.2012 Slide 11 www.medando.de Apps in the Android Market / Google Play Google Play Apps 700.000 600.000 500.000 400.000 300.000 200.000 100.000 0 EuroPython 2012, Florence, 03.07.2012 Slide 12 www.medando.de Apps in Google Play Google Play Downloads 25.000.000.000 20.000.000.000 15.000.000.000 10.000.000.000 5.000.000.000 0 EuroPython 2012, Florence, 03.07.2012 Slide 13 www.medando.de Apps in the Windows Phone Marketplace Source: http://www.windowsphoneapplist.com EuroPython 2012, Florence, 03.07.2012 Slide 14 www.medando.de So Many Apps… … but almost none of them are developed in Python! EuroPython 2012, Florence, 03.07.2012 Slide 15 www.medando.de Early Mobile Development with Python • Symbian • Window Mobile / CE EuroPython 2012, Florence, 03.07.2012 Slide 16 www.medando.de Symbian Symbian OS • Operating system for smartphones and PDAs • Micro kernel, 32bit, single user • GUI-centric application framework A schematic diagram of the S60 platform architecture. S60 • User interface for smartphones Programming for Symbian • C++, Java, Web Widgets • (Flash Lite), (Python) EuroPython 2012, Florence, 03.07.2012 Slide 17 www.medando.de 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 EuroPython 2012, Florence, 03.07.2012 Slide 18 www.medando.de “Hello World” import appuifw appuifw.app.title = u„Hello World" appuifw.note(u"Hello World!", 'info') EuroPython 2012, Florence, 03.07.2012 Slide 19 www.medando.de Starting a Python Interpreter EuroPython 2012, Florence, 03.07.2012 Slide 20 www.medando.de Running Scripts EuroPython 2012, Florence, 03.07.2012 Slide 21 www.medando.de Interactive Console EuroPython 2012, Florence, 03.07.2012 Slide 22 www.medando.de Source Code Template import appuifw 1. Importing modules import e32 2. Setting screen size appuifw.app.screen = 'normal' 3. Applications menu def item1(): print "item1 was selected.” 4. Set. exit key handler appuifw.app.menu = [(u"item 1", item1)] (Callback function) def quit(): appuifw.app.set_exit() 5. Setting app title app.exit_key_handler=quit 6. Application body appuifw.app.title = u'Simple Application' 7. Active Objects app_lock = e32.Ao_lock() 8. Main Loop # starts scheduler -> event processing app_lock.wait() Complete template: http://www.mobilenin.com/pys60/resources/app_skeleton_with_mainloop.py EuroPython 2012, Florence, 03.07.2012 Slide 23 www.medando.de Example „Location Based Service“ Send SMS to someone if certain cell is near (using GSM Cell ID) 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) EuroPython 2012, Florence, 03.07.2012 Slide 24 www.medando.de Example „OpenGL“ http://tinyurl.com/pys60cube EuroPython 2012, Florence, 03.07.2012 Slide 25 www.medando.de 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 EuroPython 2012, Florence, 03.07.2012 Slide 26 www.medando.de 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) EuroPython 2012, Florence, 03.07.2012 Slide 27 www.medando.de Current Mobile Development with Python • Android • iOS • Windows Phone EuroPython 2012, Florence, 03.07.2012 Slide 28 www.medando.de 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 EuroPython 2012, Florence, 03.07.2012 Slide 29 www.medando.de 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!? EuroPython 2012, Florence, 03.07.2012 Slide 30 www.medando.de Python for Android Several options • Scripting Layer for Android (SL4A) • Python for Android (Py4A) • Kivy • PySide for Android • PyGame EuroPython 2012, Florence, 03.07.2012 Slide 31 www.medando.de Scripting Layer for Android (SL4A) • Executes scripts and interactive interpreters on Android • Access to many APIs • Support for • Python • Perl • Ruby • Lua • BeanShell • JavaScript Source: Practical Android Projects by Lucas Jordan and Pieter Greyling • Tcl • Available on Google Code: http://code.google.com/p/android-scripting EuroPython 2012, Florence, 03.07.2012 Slide 32 www.medando.de 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 EuroPython 2012, Florence, 03.07.2012 Slide 33 www.medando.de Scripting Layer for Android (SL4A) • Scripts • Sharing via barcodes or APKs • Hello Word: import android droid = android.Android() droid.makeToast('Hello, Android!') EuroPython 2012, Florence, 03.07.2012 Slide 34 www.medando.de 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/ EuroPython 2012, Florence, 03.07.2012 Slide 35 www.medando.de 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 EuroPython 2012, Florence, 03.07.2012 Slide 36 www.medando.de 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 EuroPython 2012, Florence, 03.07.2012 Slide 37 www.medando.de 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 EuroPython 2012, Florence, 03.07.2012

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    57 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us