05 pys60_multimédia_v2

Post on 16-Oct-2014

28 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Bevezetés a mobil szoftverfejlesztésbe

Dr. Forstner Bertalan

forstner.bertalan@aut.bme.hu

© BME-AAIT 2008 1Bevezetés a mobil szoftverfejlesztésbe – 5. előadás

Az Amorg a Twitteren� Versenyek, ZH és vizsgaeredmények,

linkek, események és sok más hasznos dolog

� Kövesd: bme_amorg_lite

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 1. előadás 2

� Kövesd: bme_amorg_lite

Az előző rész tartalmából� User Interface

� Az alkalmazás felülete

� Text widget

� Tabok

� Dialógusok� Note

� Adatbekérő ablak

� Választólista

� Többszörös választólista

� Űrlap

� Listbox és ikonok© BME-AAIT 2008 3Bevezetés a mobil szoftverfejlesztésbe – 5. előadás

Emlékeztek még rá…Milyen beviteli mezők lehetnek egy űrlapon?

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 4

Emlékeztek még rá…Milyen beviteli mezők lehetnek egy űrlapon?

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 5

5. előadás – PyS60 Multimédiás lehetőségek

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 6

Tartalom� Graphics modul

� Grafikus primitívek

� Bitmapek használata

Billentyű kezelés� Billentyű kezelés

� Kamera használata

� Hangkeltés

� Külső tartalom-megjelenítés

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 7

Graphics modul� Kétdimenziós grafikák elkészítéséhez:

grafikai primitívek

� Rajzolás a vászonra: Canvas

� canvas = appuifw.Canvas(redraw_callback = ujrarajzolas_fv, � canvas = appuifw.Canvas(redraw_callback = ujrarajzolas_fv, event_callback = billentyukezeles_fv)

� Vagy Image objektumra

� Megjelenítés� appui.app.body=canvas

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 8

Rajzolási kontextus� Opció paraméterek segítségével

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 9

Koordináták megadása� Vásznon, képen belüli „tájékozódáshoz”

� tetszőleges típusú szekvenciában (pl. ennes, lista)

� koordináta-párok tetszőleges, kételemű � koordináta-párok tetszőleges, kételemű szekvenciákként

� vagy pedig maguk a koordináták, � minden ponthoz egymást követően egy x és egy y

koordináta érték

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 10

Koordináták: példák(1,1)

((1,2))

((1,1),(1,2))

([1.1, 1.2][-2.0, -2.2])

(1,1,5,5)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 11

Rajzoló primitívek 1� line(koordináták, opciók)

� polygon(koordináták, opciók)

� rectangle(bal_felső_sarok, jobb_alsó_sarok, opciók)jobb_alsó_sarok, opciók)

� ellipse(bal_felső_sarok, jobb_alsó_sarok, opciók)

� pieslice(bal_felső_sarok, jobb_alsó_sarok, kezdet, vég, opciók)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 12

Rajzoló primitívek 2� arc(bal_felső_sarok, jobb_alsó_sarok, kezdet,

vég, opciók)

� point((x, y), opciók)

� clear([háttérszín= (255,255,255)])� clear([háttérszín= (255,255,255)])

� text((x,y), szöveg, [fill=szín, font])

� measure_text(text, [font=None, maxwidth=-1, maxadvance=-1])

� (bounding_rect, cursorAdvance, NumberOfChars)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 13

Példa 1def view1():

t = appuifw.Text()appuifw.app.body = tt.clear()t.font='title't.color=(255,0,0)t.set(u'Szöveges nézet.')

def view2():global canvas, imageglobal canvas, imageappuifw.app.body = canvas

def changetab(index): appuifw.app.activate_tab( index)if index==0:view1()

else:view2()

def redraw(rect):global image, canvascanvas.blit(image)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 14

Példa 2

canvas = appuifw.Canvas(redraw_callback = redraw)w, h=canvas.sizeimage = graphics.Image.new((w,h))image.line((0,0,200,200), width=3, outline=(255,0,0))image.line((200,200,200,0,0,100), width=5, outline=(0,0,255))image.polygon((40,20,50,30,40,40,30,30), fill=(0,255,0))image.rectangle((70,70,90,90),outline=(0,0,255),fill=(255,0,0),width=4)image.ellipse((20,50,40,100), outline=(0,0,0))image.ellipse((20,50,40,100), outline=(0,0,0))image.pieslice((60,150,90,200), 10,20, fill=(255,255,0))

appuifw.app.set_tabs([u"szöveg", u"rajz"], changetab)changetab(1)

�Demo

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 15

Bitképek� Image objektum: memóriában tárolt bitkép

� Függvények opcionális callback paraméterrel

� paramétere a hibakód� paramétere a hibakód

� 0: hibamentes lefutás

� Az Image.new(size, [mode='RGB16']) � 'RGB12', 'RGB16', 'RGB' (ez 24 bites), '1' (fekete-fehér), 'L' (8 bites

szürkeárnyalatos)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 16

Bitképek használata 1� load(fájlnév, callback): meglévő objektum

� a kép dimenziói meg kell egyezzenek az éppen megnyitandó kép méreteivel

� open(fájlnév, callback): factory

� teljes path

� PNG, JPEG

� Image.inspect(fájlnév)

� szótárral tér vissza

� 'size' kulcsszó alatt tartalmazza a fájl által tartalmazott kép méretét

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 17

Bitképek használata 2� save(fájlnév, [callback=None, format=None, quality=75,

bpp=24, compression=default])

� Fájlformátum� jpeg

� Quality: tömörítés minősége egy 1-100-ig terjedő skálán � Quality: tömörítés minősége egy 1-100-ig terjedő skálán

� png� Bpp: Színmélység: 1, 8, 24� Compression: ‘best’, ‘fast’, ‘no’, ‘default’

� None formátum esetén a fájl kiterjesztése dönt

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 18

Műveletek képekkel� resize(méret, [callback, keepaspect=0])

� visszatérési értéke az új bitmap

� keepaspect=1: méretarány megtartása

transpose(irány, [callback])� transpose(irány, [callback])� visszatérési értéke az új bitmap

� FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM, ROTATE_90, ROTATE_180, ROTATE_270

� stop()

� Aszinkron esemény leállítása

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 19

Bitképek másolása� célkép.blit(forráskép, [target=(0,0), source=((0,0),

image.size), mask=None, scale=0])� target, source:

� egy koordináta pár� két koordinátapár: célnégyzet

� scale=1: on-the-fly átméretezés a cél betöltésére

� maszk kép� 1 bites vagy 8 bites szürkeárnyalatos � A képnek csak azok a részei lesznek átmásolva (vagy

áttetszően átmásolva), amelyek a maszk képen fehér árnyalatúak.

� a maszk kép mérete meg kell, hogy egyezzen a forráskép méretével.

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 20

Példa1bitmap = graphics.Image.open(u"C:\\amorg.png")

appuifw.app.body.clear()tab=2canvas = appuifw.Canvas(redraw_callback = redraw)canvas.clear()w, h=canvas.sizeimage = graphics.Image.new((w,h))image = graphics.Image.new((w,h))image.line((0,0,200,200), width=3, outline=(255,0,0))image.line((200,200,200,0,0,100), width=5, outline=(0,0,255))image.polygon((40,20,50,30,40,40,30,30), fill=(0,255,0))image.rectangle((70,70,90,90),outline=(0,0,255),fill=(255,0,0),width=4)image.ellipse((20,50,40,100), outline=(0,0,0))image.pieslice((00,00,90,200), 0,1.57, outline=(255,255,0))image.text((90,200), u"Árvíztűrő", font="title")image.save("c:\\abstract.png")

bitmap2=graphics.Image.open(u"C:\\abstract.png")bitmap2 = bitmap2.transpose(graphics.ROTATE_90)bitmap2 = bitmap2.resize((90,90))

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 21

Példa 2def redraw(rect):

global image, canvas, tab, bitmap, bitmap2if tab==1:canvas.blit(image)

if tab==2:canvas.blit(bitmap, target=(50,80), source=(0,0))canvas.blit(bitmap2, target=(40,140), source=(0,0))

�Demo

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 22

Billentyűzet események kezelése� Egyes UI elemek maguktól helyesen

lekezelik a gombnyomásokat

� Első módszer: Cavas objektumhoz billentyű kódok kötésebillentyű kódok kötése

� bind(keycode, callback)

� minden egyes billentyűhöz külön callback függvény

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 23

Key_code, scan_code

Key code Scan code1 EKeyLeftSoftkey EScanCodeLeftSoftkey2 EKeyRightSoftkey EScanCodeRightSoftkey3 EKeyYes EScanCodeYes4 EKeyNo EScanCodeNo5 EKeyLeftArrow EScanCodeLeftArrow6 EKeyRightArrow EScanCodeRightArrow7 EKeyUpArrow EScanCodeUpArrow7 EKeyUpArrow EScanCodeUpArrow8 EKeyDownArrow EScanCodeDownArrow9 EKeyEdit EScanCodeEdit10 EKeyBackspace EScanCodeBackspace11 EKeyStar EScanCodeStar12 EKeyHash EScanCodeHash13 EKeySelect EScanCodeSelect14 EKeyMenu EScanCodeMenu15 EKey1 EScanCode1

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 24

Keycode: Oprendszer által feldolgozva, pl. 'a' és 'A' különbözőScancode: szorosabb leképzés a billentyűzetre

Példaimport appuifw, key_codes, e32

def handle1():appuifw.note(u"Egy: Megérett a meggy.", "conf")

def handle2():appuifw.note(u"Kettő: Csipkebokorvessző.", "conf")

def handle3():appuifw.note(u"Három: Ezt elfelejtettem.", "error")

canvas = appuifw.Canvas()appuifw.app.body = canvascanvas.bind(key_codes.EKey1, handle1)canvas.bind(key_codes.EKey2, handle2)canvas.bind(key_codes.EKey3, handle3)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 25

Érintés események� bind függvénnyel

� keycode helyett:

� EButton1Down a megérintést,

� EButton1Up az érintés végét, � EButton1Up az érintés végét,

� EDrag a megérintett állapotban történő húzás eseményt,

� ESwitchOn paraméter a kijelző érintés miatti bekapcsolását jelzi

� Harmadik paraméter: koordináta párt tartalmazó kettes, amelyre szűrünk

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 26

Villódzás ellen� begin_redraw(rect) és end_redraw()

� a keretrendszer tudtára adjuk, hogy jelenleg egy újrarajzolási folyamat történik

� A függvénypáros használatával nagyban � A függvénypáros használatával nagyban csökkenthetjük a képernyő villódzását, illetve erőforrásokat takaríthatunk meg.

DEMO

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 27

Példa 1x = []

xx = []

y = []

yy = []

c=[]

count=0

def create_circle():

global x, y, xx, yy, c, countglobal x, y, xx, yy, c, count

x.append(random.randint(0,100))

y.append(random.randint(0,100))

xx.append(random.choice([-2, -1, 1, 2]))

yy.append(random.choice([-2, -1, 1, 2]))

c.append((random.randint(0,255), random.randint(0,255),

random.randint(0,255)))

count = count +1

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 28

Példa 2

t=appuifw.app.body

canvas = appuifw.Canvas()

appuifw.app.body = canvas

w, h=canvas.size

image = graphics.Image.new((w,h))

for i in xrange(0,6):for i in xrange(0,6):

create_circle()

ao_timer = e32.Ao_timer()

appuifw.app.exit_key_handler = quit

app_lock = e32.Ao_lock()

ao_timer.after(0.05, movethem)

app_lock.wait()

ao_timer.cancel()

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 29

Példa 3def movethem():

[…]

image.clear()

for i in xrange(0, count):

canvas.bind(key_codes.EButton1Down, None, ((x[i],y[i]),(x[i]+40,y[i]+40)))

x[i]+=xx[i]

if ((x[i]>w-40) or (x[i]<=0)):

xx[i]=-xx[i]

y[i]+=yy[i]

if ((y[i]>h-40) or (y[i]<=0)):if ((y[i]>h-40) or (y[i]<=0)):

yy[i]=-yy[i]

canvas.bind(key_codes.EButton1Down, clicked, ((x[i],y[i]),(x[i]+40,y[i]+40)))

image.ellipse((x[i],y[i],x[i]+40,y[i]+40), outline=(255,255,255), fill=c[i])

image.ellipse((x[i]+12,y[i]+24,x[i]+16,y[i]+28), outline=(255,255,255),

fill=(215, 215, 215))

canvas.begin_redraw()

canvas.blit(image)

canvas.end_redraw()

ao_timer.after(0.03, movethem)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 30

Példa 4def clicked(coords):

global canvas, x, y, xx, yy, count

(selectedx, selectedy) = coords

for i in xrange(0, count):

if(x[i]<=selectedx<=x[i]+40 and y[i]<=selectedy<=y[i]+40):

if(xx[i]==0):

xx[i]=random.choice([-2, -1, 1, 2])

yy[i]=random.choice([-2, -1, 1, 2])

else:else:

xx[i]=0

yy[i]=0

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 31

Event_callback� Azokon az objektumokon, amelyeknél beállíthatunk

event_callback függvényt (pl. Canvas, Listbox)

� Callback paramétere egy event dictionary� event['keycode']

� event['scancode']� event['scancode']

� event['modifiers']� pl. EModifierShift & EModifierControl

� event['type']� EEventKeyDown � EEventKeyUp� EEventKey� EButton1Up, EButton1Down, Edrag, stb.

� event[‘pos']

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 32

Példa 1speed=10 #Kezdeti sebességy=180 #Kezdeti pozíció a képernyőndown=0 #Volt-e már lenyomva billentyű

canvas = appuifw.Canvas(event_callback = handle_keyboard)appuifw.app.body = canvasw, h=canvas.sizeimage = graphics.Image.new((w,h))

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 33

Példa 2def handle_keyboard(event):

global image, speed, downif event['type']==appuifw.EEventKeyUp and down==1:

shoot()down=0

if event['keycode']==key_codes.EKeySelect and event['type']==appuifw.EEventKey:speed = speed+3down=1if speed>100:if speed>100:

speed=100image.clear()image.rectangle((0,0,10,100),outline=(0,0,255), fill=(255,255,255),width=2)image.rectangle((0,100-speed,10,100),outline=(255,0,0),fill=(255,0,0),width=2)image.ellipse((100,180,140,220), outline=(255,255,255), fill=(255, 0, 0))image.ellipse((112,204,116,208), outline=(255,255,255), fill=(215, 215, 215))canvas.blit(image)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 34

Példa 3def shoot():

global speed, y, imagesound=audio.Sound.open(u"e:\\python\\shoot.wav")sound.play(1)e32.ao_sleep(1)while (speed>10):

y=y-(speed/10)speed=speed-1image.clear()image.clear()image.ellipse((100,y,140,y+40), outline=(255,255,255), fill=(255, 0, 0))image.ellipse((112,y+24,116,y+28), outline=(255,255,255), fill=(215, 215, 215))canvas.blit(image)e32.ao_sleep(0.05)

y=180sound.stop()

�Demo

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 35

Kamera használata� Camera modul

� Nemritkán két kamera

� Videohívás, filmfelvétel

Rengeteg beállítási lehetőség� Rengeteg beállítási lehetőség

� Viewfinder

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 36

Kamera beállításacameras_available() Visszatérési értéke egy szám, amely megmondja, hogy

hány kamera áll rendelkezésünkre fizikailag a mobileszközön.

image_modes() Egy sztringekből álló listával tér vissza, amelynekelemei az egyes színmélységek, amelyeket a kameratámogat. Pl. ['RGB12', 'RGB16', 'RGB', 'JPEG_Exif']

image_sizes() Szintén egy listával tér vissza, amely a támogatottfényképfelbontások ketteseit tartalmazza. Pl. [(640,fényképfelbontások ketteseit tartalmazza. Pl. [(640,480), (160, 120)]

flash_modes Visszatér a lehetséges vaku üzemmódokkal. Pl. ['auto','none', 'forced', 'red_eye_reduce']

max_zoom() A készülék által támogatott maximális digitális zoomértékkel tér vissza. Nokia N95 esetében ez 80.

exposure_modes() A képkészítési (exponálási) módokat adja visszasztring listaként. Pl. ['auto', 'center', 'backlight', 'night’]

white_balance_modes() A készülék által támogatott fehéregyensúly beállításértékekkel tér vissza, pl. ['daylight', 'fluorescent','tungsten', 'auto', 'cloudy']

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 37

Kamera keresőképe, fotózás� start_finder(callback)

� A callback paramétere egy kép

� Másodpercenként többször meghívódik

stop_finder()� stop_finder()� take_photo([mode='RGB16', size=(640, 480), flash='auto', zoom=0,

exposure='auto', white_balance='auto', position=0])

� Position: több kamerás készülék (0 = hátoldali kamera)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 38

PéldaPICTURE = "E:\\Python\\photo.jpg"

def finder_callback(img):canvas.blit(img)

def make_photo():try:canvas.bind(key_codes.EKeySelect, shoot)camera.start_finder(finder_callback)

except Exception, e:except Exception, e:appuifw.note( unicode( e ), 'error' )

def shoot():camera.stop_finder()photo = camera.take_photo(size = (640,480))w,h = canvas.sizecanvas.blit(photo,target=(0, 0, w, 0.75 * w), scale = 1)photo.save(PICTURE)canvas.bind(key_codes.EKeySelect, None)

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

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 39

Video rögzítés� start_record(filename, callback): videorögzítés

indítása

� Előtte viewfindert kell indítani!

� Calback: a státuszról ad információt a paramétere

� stop_record()

� release()

� A kamerahardver átengedése más alkalmazásoknak

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 40

Hangkeltés 1� Audio modul

� WAV, AMR, AAC, MIDI, MP3, RealAudio

� Sound objektum� open(fájlnév)

play([hanyszor=1, szunet=0])� play([hanyszor=1, szunet=0])

� Nem blokkoló� audio.KMdaRepeatForever

� Több hang egyszerre nem lehet

� Ugyanazon az objektumon szimultán lejátszás: hiba

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 41

Hangkeltés 2� state(): állapot

� ENotReady

� EPlaying

� ERecording

� EOpen

� close()� close()

� stop()

� current_volume()

� max_volume()

� set_volume(int)

� current_position() //mikroszekundum

� duration()

� set_position(microseconds)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 42

Hangfelvétel� Sound.record()

� WAV vagy AMR

� Stop() hívásig

Telefonhívás alatti felvétel vagy lejátszás� Telefonhívás alatti felvétel vagy lejátszás

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 43

Példa 1appuifw.app.exit_key_handler = quitappuifw.app.menu = [(u"köszön", (

(u"helló", doPlayHello),(u"viszlát", doPlayGoodbye),)),

(u"felvesz", ((u"helló", doRecordHello),(u"viszlát", doRecordGoodbye),))]))]

sound = None

def doRecordHello():doRecord(u"C:\\hello.wav")

def doRecordGoodbye():doRecord(u"C:\\bye.wav")

def doPlayHello():doPlay(u"C:\\hello.wav")

def doPlayGoodbye():doPlay(u"C:\\bye.wav")

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 44

Példa 2def doRecord(filename):

global soundif sound:

sound.stop()os.remove(filename)sound=audio.Sound.open(filename)sound.record()appuifw.note(u"Halljam.", "conf")e32.ao_sleep(3)e32.ao_sleep(3)sound.stop()appuifw.note(u"Felvettem.", "conf")

def doPlay(filename):global soundif sound:

sound.stop()sound=audio.Sound.open(filename)sound.play()

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 45

Szöveg felolvasása stringből� Újabb okostelefonokon

� audio modul, text-to-speech

input = appuifw.query(u"Mondja, mi a gondja!", "text")

audio.say(input)

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 46

Content_handler� appuifw modul egy speciális szolgáltatása

� különböző tartalmak megjelenítése

� MIME típus alapján

� handler = appuifw.Content_handler(callback)

� open(content_file)

� open_standalone(content_file) � külön processzben

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 47

Példadef done():

appuifw.note(u"Kész!", "conf")

app_lock.signal()

handler = appuifw.Content_handler(done)

handler.open("E:\\Python\\marklar.mp4")handler.open("E:\\Python\\marklar.mp4")

appuifw.app.exit_key_handler = quit

app_lock = e32.Ao_lock()

app_lock.wait()

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 48

Összefoglalás� Graphics modul

� Grafikus primitívek

� Bitmapek használata

Billentyű kezelés� Billentyű kezelés

� Kamera használata

� Hangkeltés

� Külső tartalom-megjelenítés

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 49

Teszt� Mi a különbség a scancode és a keycode

között?

� Milyen rajzolási primitívek vannak PyS60 alatt?alatt?

� Mi a position paraméter szerepe fotó készítésénél?

© BME-AAIT 2008 Bevezetés a mobil szoftverfejlesztésbe – 5. előadás 50

top related