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.) A cél egy olyan alkalmazás kifejlesztése Symbian alapú mobiltelefonra, amely képes egy két dimenziós DataMatrix vonalkódot feldolgozni, az eredeti információt abból visszanyerni. Az eredeti elképzelés alapján egy másik mobil kijelzőjéről készült volna fénykép a telefon fényképezőjével és az lett volna feldolgozva. De:
4 A feladat leírása, elképzelések (2.) Ahogy az előbbi képből is látszik, nem lehetne sok információt kinyerni belőle. Í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 az algoritmus jó megoldást adhat, sőt erre már léteznek megvalósítások is. Későbbi terveim egyike között szerepel ez utóbbi megvalósítása. 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 (e.g. computer vision algorithms) 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++ development is slow and hard Java has limited access to platform capabilities Easy to learn, clear syntax High productivity Extending and embedding easy and efficient Popular Good standard library
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.) A programkód: 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
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 Kérdések Kérdés?
13 Itt a vége… Köszönöm a figyelmet!