Mobil alkalmazások fejlesztése Vonalkód leolvasó Symbian alapú mobiltelefonra Készítette: Tóth Balázs Viktor
2 Miről lesz szó? A feladat leírása, elképzelések A kezdetek A megoldás A végeredmény A cél
3 A feladat leírása, elképzelések (1.) Feladat volt: mobilon két dimenziós DataMatrix vonalkódot feldolgozni, az eredeti információt abból visszanyerni Az eredeti elképzelés: a telefon fényképezőjén keresztül történt volna a beolvasás De:
4 A feladat leírása, elképzelések (2.) Így az újabb elképzelés szerint a vonalkód Bluetooth-on, infrán, vagy akár MMS-ben érkezik meg a telefonra, így az algoritmus is sokkal biztosabb végeredményt ad Ha viszont a vonalkódot nem kijelzőről fényképezzük le… De erről majd a végén…
5 A feladat leírása, elképzelések (3.) A végső séma tehát : 1)A mobiltelefonunkra megérkezik a vonalkódot tartalmazó kép a fentebb említett módok egyikében 2)A programot lefuttatjuk a képre 3)A kijelzőn a vonalkódba kódolt információt látjuk
6 A kezdetek Why use C++ you're masochistic you need full access to the phone's APIs you want to develop middleware libraries need the speed Can't do it in Java Can't do it in Python You like really bizarre naming conventions Why not use C++ Can do it in Java or Python
7 A megoldás (1.) Python for S60 előnyei: Symbian C++ fejlesztés lassú és nehéz Java-nak csak korlátozott erőforrás hozzáférése van Könnyen tanulható, egyszerű szintaxis Elterjedt programozási nyelv Jó standard library-k
8 A megoldás (2.) A program működésre bírásához szükség van: A megfelelő verziójú SDK (Software Development Kit). A Nokia 6680-as telefonhoz a 2nd Edition FP2-t kellett letöltenem A Python for S60 telefonunkkal kompatibilis változata (nekem a 2nd Editon FP2-re volt szükségem)
9 A megoldás (3.) import e32 from graphics import * import appuifw img = Image.new((10, 8)) img.load('E:\\Images\\bc- s\\feketekorbeH.jpg') meret_x = 10 meret_y = 8 pixelek = appuifw.Text() pixelek.set(u"") for j in range(0, meret_y): for i in range(0, meret_x): value = img.getpixel((i, j)) if i == meret_x-1: if value == [(255, 255, 255)]: pixelek.add(u"0\n") elif value == [(0, 0, 0)]: pixelek.add(u"1\n") else: if value == [(255, 255, 255)]: pixelek.add(u"0 ") elif value == [(0, 0, 0)]: pixelek.add(u"1 ") appuifw.app.body = pixelek A programkód:
10 A végeredmény Az elért eredmények a telefon kijelzőjéről: De ki is lehet próbálni (Menü → Önlab → Vonalkód)
11 A cél Ha ezen a nyomvonalon haladunk tovább: Egy környezet kialakítása a programnak (fájl böngésző szerű, csak egy bizonyos mappát látunk, opcionális kódolás) A dekódoló algoritmus hibátlan működésre bírása Ha viszont nem: A kamerával lefényképezett vonalkód rengeteg lehetőséget ad… (link, szöveg, SMS, telefonszám hívása, stb.) A program megírása, körülbelül már sejthető módon… (Pythonban valószínűleg)
12 Itt a vége… Köszönöm a figyelmet!