Vonalkódok és jegyzetek egy Android appban

írta: hcl, 4 éve

Ez volt az egyik probléma, amire úgy 2010 óta akartam megoldást találni. Akkoriban kaptunk Symbian Nokia telefonokat melóhelyen (C5-00-t), amikben már volt kamera, és elég sokszor kellett vonalkód alapon leltároznunk. Adta volna magát, hogy a telefonnal olvasgatja az ember a cuccokat, aztán átzavarja gépre, nem kell laptopot cipelni a vezetékes Symbol olvasóval. na persze a C5 kamerája max. a méteres vonalkódokat tudta értelmezni, olyan rossz volt az optika :D Később lettek Windows Phone, Android céges telefonjaim, de hasonló alkalmazást ezekre sem találtam. (Spoiler, azóta van, vagy kettő (és még több), ezen kívül itt a bejegyzésben.)

Ilyenkor az a megoldás, ha ír egyet magának az ember :D Már évek óta akartam, és mostanra lett annyi Android programozás "gyakorlat" (meg szabadidő), hogy neki is láttam. Hatalmas feladat ám, máshol ez egy tutorial, vagy első féléves beadandó témája lenne :D

A végeredmény a BarcodeNote nevű izé lett, ami Zxing alapon olvassa a vonalkódokat - ez nem olyan triviális, mert a másik publikus/ingyenes megoldás Firebase alapú, ami helyből internet-kapcsolatot igényel, és küldi a cuccot a felhőbe. Na, ilyet nem akartam. A Zxing egy ingyenes library vonalkódokhoz, van C, Java, mindenféle nyelvhez, és jól is működik, már csak a supportja kérdéses.

Kamerás programom már volt, bár jól át kellett alakítani (emez Camera2-re épül). Itt egy kamera előnézetre volt szükség, aminek minden frame-ét el kellene küldeni a Zxing library-nek, hogy az feldolgozza. Igazából itt készen is volt a lényeg, mert ha a Zxing egy vonalkódot le tud olvasni, folyamatosan elkezdi hányni magából visszatérési értékként, amíg látja. Nincs más teendő, mint hozzáfűzni a szövegmező tartalmához (és várni egy kicsit, hogy ne nyomja tele a jegyzetet azzal egy egy számsorral :D ).

A szövegmezőn van egy eseménykezelő, ami a tartalom változása esetén file-ba írja a cuccot. Ez lustasági okokból a /sdcard0 -ba került, mert az legalább minden Android verzión ott van, és írható (10-es Android-on pl. vissza kell kapcsolni legacy-ba a tárhelykezelést). :D Mivel a jegyzetterület egy normál szövegmező, bármikor szerkeszthető is, és az app bezárása után sem veszik el semmi, induláskor visszatölti a file-t - ez ugyan plaintext tárolás, de így kb. mindennel olvasható marad az adat.


Ennyi ám az egész :)

Ezen kívül már csak feature-k kellettek : kapcsolható "bup" hang, kapcsolható megvilágítás (a vonalkódolvasás érzékeny a kontrasztos képre), megosztás gomb, hogy könnyen el lehessen küldeni a jegyzetet valamilyen formában más eszközre, és egy "Use Links" gomb, ami a szövegben található linkeket linkké teszi, azaz kattinthatóvá (és ki is lehet őket kapcsolni vele). Ezek azért QR kódokban előfordulnak, de jegyzetként is beír néha az ember egy-egy címet..
A felület minimál lett, de elsőre örülök, hogy működik, később majd változtatok rajta (ha tudok) . Pl. muszáj lesz olyan gomb, ami kikapcsolja a kamerát, stb.

Az app ingyenes, reklámmentes, és a forráskódot is odaadom bárkinek, aki kéri (inkább nem másolom be ide, mert komoly mentális problémákat okoznának a borzalmas megoldások :D ) Egyenlőre független áruházakba tettem fel, de előbb-utóbb felszenvedem a Play-re is :) Tesztelve jelenleg pár Samsung, Huawei és LG telefonon van, de igyekszem még pár típuson kipróbálni.

Update 2020.09.20 :
A 2.0 verzióban lett
- sötét mód (ki/be/rendszerhez igazodó, a menüből kapcsolható)
- app ikon
A 3.0-ban pedig :
- a pittyenést a menüből lehet kapcsolni
- a kamera kikapcsolható lett, azaz megfagyasztható; ez került a "Sound" gomb helyére, így kevesebb akkut fogyaszt, illetve a gépelés is könnyebb, ha nem megy a kamera
- ezeket meg is jegyzi kilépéskor
A 2.0 már töltődik fel az APKpure-ra, a 3.0 meg majd utána - sajnos az APKpure átfutása 1-2 hét, és ha elindult felfele egy verzió, azt nem lehet visszavonni :D Ha valakinek kell, privátban odaadom addig is :)


Sötét mód a 2.0 verziótól

Update : Google Play-en is kint van már :)