+ All Categories
Home > Documents > Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda...

Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda...

Date post: 21-Dec-2015
Category:
View: 218 times
Download: 0 times
Share this document with a friend
Popular Tags:
49
Python for S60 Daniel Rocha Forum Nokia
Transcript
Page 1: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

Python for S60

Daniel Rocha

Forum Nokia

Page 2: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 2

Agenda

• Introduction to Python for S60 (PyS60)

• Getting started with PyS60• Packages

• Installation on a device

• Running sample apps

•Application development basics• Tools, Emulators, Utilities packages

• Creating a stand-alone Python app

•PyS60 API Tour and Example apps

•Conclusion

Page 3: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

Introduction

Page 4: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 4

About Python, the language...•Open Source development since 1990, led by Guido van Rossum

•Design goals: maximizing programmer productivity and extensibility

• Special emphasis on code readability• “small language, large library”• Easily extensible with native code

•Modern, full featured: classes, inheritance, function objects, exceptions, automatic memory management, threads

Page 5: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 5

Quick code example## first python script - this is a comment ##x = y = z = 0 ## multiple assignmentx = 10 ##variable attributiony = x + 20z = y + x

print "Numbers are %s, %s, %s" % (x,y,z)

## lists, tuples and associative arrayslist = [1,3,5,7,10]tuple = (10,20,30)assoc = {'daniel': 29, 'susan': 28, 'jack':'80'}

print "List is %s, List[0] is %s, List[0:2] is %s" % (list, list[0], list[:2])print "Is 9 in list?", 9 in listprint "Looping:",

for x in list: print x,

print "Tuple is %s, Typle[0] is %s" % (tuple, tuple[0])a, b, c = tupleprint "Unpacking tuple %s into: a=%s, b=%s, c=%s" % (tuple, a, b, c)print "Assoc is %s, Assoc['daniel'] is %s, Is susan in assoc? %s" %

(assoc,assoc['daniel'],'susan' in assoc)

>>> Numbers are 10, 30, 40List is [1, 3, 5, 7, 10], List[0] is 1, List[0:2] is [1, 3] Is 9 in list? FalseLooping: 1 3 5 7 10 Tuple is (10, 20, 30), Typle[0] is 10 Unpacking tuple (10, 20, 30) into: a=10, b=20, c=30Assoc is {'daniel': 29, 'jack': '80', 'susan': 28}, Assoc['daniel'] is 29, Is susan in assoc? True>>>

Page 6: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 6

Python for S60 (PyS60)•Simplifies application development and provides a scripting solution for Symbian C++ APIs

•Usable in different ways: • GUI application• background (“daemon”)

process• embeddable in your C++ app

•Easier way of writing native applications

•Open source implementation, easy to extend using Python/C API

Page 7: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 7

Python for S60 (PyS60) – contd.

•Based on Python 2.2.2•Consists of:

• Python runtime:• Python interpreter DLL• Standard and proprietary

Python library modules

• Python Script Shell:• Execution environment for

Python scripts• For S60 prior to 3rd. Edition:

• Recognizer plug-in• Automatic Installer

•SDK Plug-in for writing extensions and testing scripts on a PC (Windows-only)

Page 8: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 8

•Support for Python Standard Libraries – not all standard and optional modules but most can be added without modifications to PyS60

•Support of many custom S60 libraries• e32

• sysinfo

• appuifw

• graphics

• camera

• keycapture

• audio

• telephone

• messaging

• contacts

• calendar

• e32db

• E32dbm

• inbox

• positioning

• sensor

Python for S60 (PyS60) – Libraries

Page 9: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

Getting started with PyS60

Page 10: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 10

Python on S60 Mobile Phones

•SourceForge project site: http://sourceforge.net/projects/pys60

• Source code

• Docs

• Distributed by flavor of S60 • Interpreter

• SDK

• Script Shell

Page 11: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 11

What’s available at SourceForge

•pyS60 full C++ source code

•pyS60 Runtime, distributed by flavor of S60:• PythonForS60_1_4_4_<yourS60version>.SIS for devices

• PythonForS60_1_4_4_SDK_<yourS60SDK>.zip for running Python scripts on S60 emulator and compiling your own extensions (Windows-only)

•pyS60 Script Shell, distributed by flavor of S60:• Ideal for testing and developing scripts

• PythonScriptShell_1_4_4_<yourS60version>.SIS

• Also unsigned version, if more capabilities are needed.

•Complete API reference guide

•Release notes

Page 12: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 12

Getting started – PyS60 on a mobile device

•Install PyS60 Runtime interpreter package. In our example, Nokia E61i is a 3rd. Edition device so we install PythonForS60_1_4_4_3rd.SIS

•You can perform installation either via PC Suite (Windows) or by sending the .SIS file via Bluetooth (Mac and Linux)

•This is the runtime package, script shell will be installed next

Page 13: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 13

Getting started – PyS60 on a mobile device

•Install PyS60 Script Shell. In our example, Nokia E61i is a 3rd. Edition device so we install PythonScriptShell_1_4_4_3rd.SIS

•Script shell is useful for quickly running and testing scripts, run interactive consoles

•Python app visible in the main application menu

Page 14: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 14

Getting started – PyS60 on a mobile device

•Run script -> Reads from E:\Python and C:\Python

•There is an interactive console for on-device editing

•Bluetooth console for remote editing of Python scripts

•Not required for running Python stand-alone apps! Interpreter and Script shell are not dependent on each other

Page 15: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 15

Testing PyS60 example scripts

•Start the Python Script Shell

•Click Options / Run Script

•Choose one of the scripts in the list and hit OK

Page 16: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

Application development basics

Page 17: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 17

Tools of the trade - Windows

• Some version of Python installed and running -> ActivePython (www.activestate.com) comes with Python 2.5.1, PyWin editor and Python shell.

• S60 Platform SDKs for Symbian OS, for C++ -> provides PC-based emulation environment for creating and running scripts and Python extensions (www.forum.nokia.com/tools)

• Package PythonForS60_1_4_4_SDK_3rdEd.zip for plugging Python into the S60 SDK

• Packaging tool for creating .SIS installable files (Ensymble - http://www.nbl.fi/~nbl928/ensymble.html) – Py2sis tool comes with the SDK, not usable outside Windows

• If using Ensymble, OpenSSL command-line utilities -> http://www.stunnel.org/download/binaries.html

• S60 device with optional memory card• Nokia PC Suite – optional but a timesaver

Page 18: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 18

Basic development cycle - Windows

•Create a .py file using PyWin containing valid Python for S60 code

•Save it to C:\Symbian\9.1\S60_3rd_MR\Epoc32\winscw\c\python

•Start the S60 SDK Emulator

•Click on the Python Script Shell, choose your script from the list

•Click “Select” to run it

Page 19: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 19

Tools of the trade - Linux

•Some version of Python installed and running

•Emulation environment not available

•Packaging tool for creating .SIS installable files (Ensymble - http://www.nbl.fi/~nbl928/ensymble.html) + OpenSSL command line utilities

•PyS60-compat – Emulation library for some PyS60 APIs (http://sourceforge.net/projects/pys60-compat/)

•S60 device. Having a memory card greatly facilitiates script testing

•Bluetooth-enabled workstation

Page 20: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 20

Basic development cycle - Linux

•Create a .py file using any text editor

•Send your script to the E:\Python phone using obexftp or connecting the phone as a usb drive

•Start Python Script Shell•Choose your script from the list

•Click “Select” to run it•No emulator, you have to run your script on the phone, or with PyS60-compat

Page 21: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 21

Creating a Stand-alone Python Application

•Easiest: Ensymble• http://www.nbl.fi/~nbl928/ensymble.html

• For S60 3rd Edition, PyS60 1.4.0 or later

• Linux, Mac, Windows

•py2sis with standard PyS60 source distribution

•Both tools create a .sis file which can be installed on the phone as a native application, appear in the main menu and have its own icon

C:\dev\python>ensymble_python2.5-0.26.py py2sis simplecube.py

Page 22: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 22

Symbian OS 9.1 Platform Security – affects Python

•www.symbiansigned.com•Accessing potentially sensitive features now requires capabilities

• Global key capture• Reading the cell ID• Reading the (internal) GPS location• Setting the system time• Protected File Access

•Need devcert (w/ Publisher ID) or Open Signed Online

• Register with www.symbiansigned.com• Register your phone IMEI with the devcert• Sign your application with the devcert• Install your application on your phone

Page 23: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

PyS60 API Tour and Example apps

Page 24: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 24

Application framework basics

•Application type can be used to access and modify the UI = appuifw.app

•UI elements:• Title• Tabs• Body (Text, ListBox, Canvas)• LSK and RSK

•Define handlers for Options menu and Exit key

•Wait for user input using an Active Object lock – other threads cannot access UI

Page 25: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 25

Application framework basics

•UI Controls are implemented as Python types:

• ListBox• Text• Canvas

•Controls are set to the application body (using app.body = control)

•Dialogs are implemented as module-level functions

•Form is a dialog implemented as a type, due to its versatility

•Content_handler object used to open files of given types

Page 26: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 26

UI framework – Components

• Dialogs – notes, query, multi-query, popup- menu, selection list, multi-selection list

• Form

• Canvas

• Menus

• Text

• Listbox

Page 27: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 27

UI framework – Components

Page 28: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 28

Multimedia – audio, video, camera

• Multimedia applications can be developed using modules:

• Audio – allows playing and recording of audio and text-to-speech functions

• Camera – for taking pictures, recording videos, controlling camera aspects and querying camera capabilities

• Graphics – Image saving and loading

Page 29: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 29

Messaging and Inbox – sms

•Inbox module is used to read through your message Inbox

•Messaging module is for sending SMS and MMS messages

Page 30: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 30

Messaging and Inbox – sms exampleSource: sms.py

import inbox, appuifw, inbox, messaging

box = inbox.Inbox()

for sms_id in box.sms_messages()[:5]:

msg = box.content(sms_id)

appuifw.note(msg)

messaging.sms_send("+551185417677", u"Hello Bossa!")

  

Page 31: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 31

Connectivity: Bluetooth, TCP, HTTP

•Python applications can use standard socket module for communication, via Bluetooth, TCP, etc.

•High-level urllib can be used for HTTP and Web commnucations

Demo: Tracker

Page 32: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 32

Connectivity – urllibSource: webclient.py

import urllib, appuifw, e32

URL = "http://www.python.org/images/python-logo.gif"

dest_file = u"C:\\Data\\Images\\python-logo.gif"

urllib.urlretrieve(URL, dest_file)

lock = e32.Ao_lock()

viewer = appuifw.Content_handler(lock.signal)

viewer.open(dest_file)

lock.wait()

Page 33: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 33

Connectivity – bluetooth photo senderSource: bluetooth.py

import camera, e32, socket, appuifw

PHOTO = u"C:\\Data\\Images\\bt_photo_send.jpg"

def send_photo():

try:

address, services = socket.bt_obex_discover()

except:

appuifw.note(u"OBEX Push not available", "error")

return

if u'OBEX Object Push' in services:

channel = services[u'OBEX Object Push']

socket.bt_obex_send_file(address, channel, PHOTO)

appuifw.note(u"photo sent", "info")

else:

appuifw.note(u"OBEX Push not available", "error")

Page 34: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 34

Many more! Explore the API

•Positioning

•Location

•E32dbm

•Telephone

•Contacts

•Sensor…

Demo: Shake your music

Page 35: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 35

Conclusion

•Introduction to the Python Language

www.python.org/doc•Examples from

http://www.mobilepythonbook.com

•http://wiki.forum.nokia.com/index.php/Category:Python

•http://wiki.opensource.nokia.com/projects/Python_for_S60

•http://mobilepythonbook.com/•http://croozeus.googlepages.com/py60

Page 36: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

Backup

Page 37: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 37

UI framework – Dialog notes and queriesSource: notes.py

import appuifw, time

##### noteappuifw.note(u"Hello!",'info') ## may also take 'error' and 'conf'

##### queryname = appuifw.query(u"Type your name:",'text',"Daniel")age = appuifw.query(u"Type your age:",'number')date = appuifw.query(u"Type a date:",'date')code = appuifw.query(u"Type a password:",'code')query = appuifw.query(u"Wanna see your data?",'query')timetuple = time.localtime(date)input = u"You name is: %s, your age is: %s, year is %s, pwd is %s" % (name, age, timetuple[0],code)

if query: appuifw.note(input)else: appuifw.note(u"Insensitive clod!",'error')

Page 38: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 38

UI framework – List dialogsSource: lists.py

import appuifw

##### popupfruits = [u"Apple",u"Banana",u"Orange"]index = appuifw.popup_menu(fruits,u"Select a fruit:")

if index in range(len(fruits)): appuifw.note(u"You've chosen:" + fruits[index])

##### selection listphones = [u"Nokia",u"Nokia",u"The ones from Finnish company"]index = appuifw.selection_list(phones,0)if index in range(len(phones)): appuifw.note(u"You've chosen:" + phones[index])

##### multi selection with search cars = [u"Ferrari",u"Lamborghini",u"McLaren",u"Renault"]selections = appuifw.multi_selection_list(cars,'checkbox',1) ## search fieldresult = ""

if len(selections) > 0: for x in selections: result+= cars[x] + "," appuifw.note(u"Your choices:"+result[:-1])else: appuifw.note(u"You don't like cars")

Page 39: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 39

Application framework – Basic application exampleSource: app1.py

import appuifw, e32

##handler for Exitdef quit(): appuifw.note(u"Application exiting...") app_lock.signal()

##sets app UI titleappuifw.app.exit_key_handler = quitappuifw.app.title = u"Hello!!!"appuifw.note(u"Application has been started...")

##wait for inputapp_lock = e32.Ao_lock()app_lock.wait()

Page 40: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 40

UI framework – Menu exampleSource: menu.py

import appuifw, e32

##menudef menu_choice1(): appuifw.note(u"Choice 1")

def menu_choice2(): appuifw.note(u"Choice 2") def menu_choice3(): appuifw.note(u"Choice 3")

## mainmymenu = [(u"Choice 1",menu_choice1), (u"Choice 2",menu_choice2), (u"Choice 3",((u"Sub-choice",menu_choice3), (u"Sub-choice1",menu_choice1)))]

appuifw.app.menu = mymenu

Page 41: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 41

UI framework – Text exampleSource: text.py

##sets Text tx=appuifw.Text()tx.color=(0,0,128)tx.font=u'LatinBold17'tx.style = appuifw.STYLE_BOLDtx.set(u"Text")

## new color and styletx.color=(0,0,0)tx.style = appuifw.STYLE_ITALICtx.add(u"Italic!")

## new fonttx.font = u"albi17b" #tx.add(u"Albi17b text!")appuifw.app.body = tx

## Code for handling exit key omitted

Page 42: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 42

UI framework – ListBox exampleSource: listbox.py

import appuifw, e32

##handler for Exitdef quit(): appuifw.note(u"Application exiting...") app_lock.signal()

##sets app UI titleappuifw.app.exit_key_handler = quitappuifw.app.title = u"Hello!!!"

##callbackdef lbox_observe(): appuifw.note(u"You have chosen " + entries[listBox.current()][0])

##sets ListBoxicon1 = appuifw.Icon(u'z:\\resource\\apps\\avkon2.mbm', 28, 29)icon2 = appuifw.Icon(u'z:\\resource\\apps\\avkon2.mbm', 40, 41)entries = [(u"Signal", icon1), (u"Battery", icon2)]listBox = appuifw.Listbox(entries, lbox_observe)appuifw.app.body = listBox

Page 43: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 43

Multimedia framework – audio exampleSource: audio.py

import appuifw, audio, os

MENU = [u"Play",u"Record",u"Delete",u"Say!"]

SOUNDFILE = u'C:\\Data\\Images\\sound.wav'

sound = None

while True:

index = appuifw.popup_menu(MENU,u"Select operation")

if sound:

sound.stop()

sound = audio.Sound.open(SOUNDFILE)

if index == 0:

sound.play()

sound.close()

elif index == 1:

sound.record()

appuifw.query(u"Press OK to stop",'query')

sound.stop()

sound.close()

elif index == 2:

os.remove(SOUNDFILE)

Page 44: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 44

Multimedia framework – camera exampleSource: camera.py

import e32, camera, appuifw, key_codes  

  

def viewfinder(img):  

    canvas.blit(img)  

  

def shoot():  

    camera.stop_finder()  

    photo = camera.take_photo(size = (640, 480))  

    w, h = canvas.size  

    canvas.blit(photo, target = (0, 0, w, 0.75 * w), scale = 1)  

    photo.save('e:\\Images\\photo.jpg')  

  

appuifw.app.body = canvas = appuifw.Canvas()  

appuifw.app.title = u"Camera"  

  

camera.start_finder(viewfinder)  

canvas.bind(key_codes.EKeySelect, shoot)  

  

Page 45: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 45

Multimedia framework – camera exampleSource: video.py

import e32, camera, appuifw, key_codes, time

def viewfinder(img):

canvas.blit(img)

def shoot():

camera.start_record("C:\\Data\\Videos\\video.mp4",donothing)

appuifw.query(u"Press OK to stop",'query')

camera.stop_record()

def donothing(a,b):

pass

canvas = appuifw.Canvas()

appuifw.app.body = canvas

appuifw.app.title = u"Camera"

camera.start_finder(viewfinder)

canvas.bind(key_codes.EKeySelect, shoot)

  

Page 46: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 46

Messaging and Inbox – sms exampleSource: sms.py

import inbox, appuifw, inbox, messaging

box = inbox.Inbox()

for sms_id in box.sms_messages()[:5]:

msg = box.content(sms_id)

appuifw.note(msg)

messaging.sms_send("+551185417677", u"Hello Bossa!")

  

Page 47: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 47

Connectivity – urllibSource: webclient.py

import urllib, appuifw, e32

URL = "http://www.python.org/images/python-logo.gif"

dest_file = u"C:\\Data\\Images\\python-logo.gif"

urllib.urlretrieve(URL, dest_file)

lock = e32.Ao_lock()

viewer = appuifw.Content_handler(lock.signal)

viewer.open(dest_file)

lock.wait()

Page 48: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

© 2007 Nokia Company Confidential

Slide 48

Connectivity – bluetooth photo senderSource: bluetooth.py

import camera, e32, socket, appuifw

PHOTO = u"C:\\Data\\Images\\bt_photo_send.jpg"

def send_photo():

try:

address, services = socket.bt_obex_discover()

except:

appuifw.note(u"OBEX Push not available", "error")

return

if u'OBEX Object Push' in services:

channel = services[u'OBEX Object Push']

socket.bt_obex_send_file(address, channel, PHOTO)

appuifw.note(u"photo sent", "info")

else:

appuifw.note(u"OBEX Push not available", "error")

Page 49: Python for S60 Daniel Rocha Forum Nokia. © 2007 Nokia Company Confidential Slide 2 Agenda Introduction to Python for S60 (PyS60) Getting started with.

Thank you!Questions?

[email protected]


Recommended