You are on page 1of 27

I HC BCH KHOA H NI Vin in t - Vin thng

BO CO PROJECT 1
TI: NHN DIN CARDVISIT TRN IN THOI THNG MINH ANDROID
Gio vin hng dn : Nhm sinh vin thc hin: 1.Nguyn Thnh 2.Nguyn Th Mai Trang 3.Cao Minh T 4.L Thnh Tun 5.ng Minh Tuyn TS.Nguyn c Minh SHSV: 20090748 SHSV : 20092812 SHSV : 20093179 SHSV: 20092941 SHSV: 20093045

H Ni,July 16, 2012


1

PH LC
Gii thiu chung v cng c s dng v ni dung ti 1. Kin thc chung v ngn ng lp trnh JAVA v ANDROID 2. Tm hiu vphn mm CamCard 3. Yu cu ca phn mm Phn tch tnh kh thi v t chc cng vic Phn tch cc khi c bn ca phn mm S chc nng ca c h thng phn mm Phn tch tng phn ca phn mm Thit k tng khi 1. Khi x l hnh nh 2. Khi giao din 3. Khi kt ni Server- Client

I. Gii thiu chung v cng c s dng v ni dung ti


1. Kin thc chung v ngn ng lp trnh JAVA v ANDROID a. Ngn ng lp trnh JAVA Java l ngn ng lp trnh hng i tng c lp thit b, khng ph thuc vo h iu hnh(HH) nn n c kh nng lm vic trn nhiu HH khc nhau. y l u im mnh m cc ngn ng khc khng c. Cc c trng ca Java: n gin Hng i tng c lp vi phn cng v h iu hnh Mnh Bo mt Phn tn a lung ng

Java lm vic vi my o Java v s dng b cng c pht trin JDK( Java Development Kit) b. H iu hnh ANDROID Android l h iu hnh trn in thoi di ng (v hin nay l c trn mt s u pht HD, HD Player, TV) pht trin bi Google v da trn nn tng Linux.Cc nh pht trin vit ng dng cho AndRoid trn ngn ng Java. T khi Android ra i, km theo l hng ngn tin ch trn in thoi di ng c a ra, bin chic in thoi cm tay ngy cng tr ln thng minh hn. C th ni C th gii trong tm tay.

Kin trc AndRoid bao gm 4 lp thnh phn:

to nn mt ng dng trong Android, cn hiu v 6 thnh phn( component) c bn khi lp trnh:

Vng i ca mt ng dng tri t OnCreate n onDesTroy Vi nhng kin thc tm hiu c v JAVA v hh ANDROID, chng em mun tm hiu, hc tp v ti lin quan n nhng kin thc ny. ti Nhn din Cardvisit trn in thoi thng minh AndRoid l ti kh mi m v th v. Chng em cm n Thy Nguyn c Minh cng cc bn trong phng lab nghin cu EDK gip chng em hon thnh ti ny. Chng em xin chn thnh cm n! Tm hiu vphn mm CamCard
5

C th ni y l phn mm nhn din tt nht hin nay, c ng dng rt hiu qu trong cng vic. Gip con ngi gim thiu c cng sc trong cng vic qun l, hay tip nhn thng tin c nhn, ph hp cho nhng ngi giao tip nhiu vi cc i tc, thng xuyn nhn cc CardVisit lin lc, hay trong cc khu vc qun l nhn s. Vi cc tnh nng thng minh ca phn mm ny, c tch hp trn cc thit b hin i trn nn AndRoid trn cc dng in thoi cao ca LG, SAMSUNG, NOKIA hay cc loi notebook khc. CamCard chp nh th kinh doanh bng cch s dng Camera trn chnh in thoi ca bn nh l mt my qut. N c kh nng nhn din cc thng tin trn Card nh: First-name, Last-name, Phone, e-mail, v thng tin b sung khc, cc thng tin ny c hin th ngay trn giao din rt thun tin cho ngi s dng. Bng cch ny bn s c th chuyn nhng thng tin c trn mt th kinh doanh lu cc thng tin vo ti khon Gmail ca bn hoc chia s cc thng tin trn mt trang mng m bn mun. Trnh qut ca phn mm kh chnh xc v n lm tt vi tt c cc loi th vi cc ngn ng khc nhau.CamCard c tch hp vi LinkedIn, gip bn c th tm kim hoc mi cc ch th trc tip truy cp thng tin t ng dng. ng dng ny c bit hu ch cho nhng ngi thng xuyn nhn c th kinh doanh t a ch lin lc v mun lu tr cc thng tin mt cch an ton trong thit b c nhn. vo th nh in thoi ca mnh mt cch nhanh chng v thun tin.Bn s c th

Cc chc nng chnh ca phn mm ny: 1. Chng rung hnh nh chp. 2. Hin th hnh nh tng ng khi chnh sa thng tin th kinh doanh. 3. T ng pht hin nh hng vn bn. 4. T ng xoay hnh nh th. 5. T ng ct th hnh nh t pha sau. 6. T ng lm p hnh nh th kinh doanh. 7. Vi cc thng tin v ch th c th gip thc hin cuc gi in thoi, gi tin nhn SMS, gi email, duyt trang web v nh v a ch trn bn Google. 8. Thm thng tin lin h ca cc nhm nhm lin lc ca bn.

Qut th kinh doanh trong vi giy ngay trn in thoi ca bn trong 4 bc d dng: 1. Chp hoc nhp mt bc nh 2. Scan (nh hng vn bn c t ng pht hin) 3. Xem xt v chnh sa cc kt qu nhn dng t th 4. Thm vo danh sch a ch lin lc

Nh vy, phn mm thc t c a chung c rt nhiu c tnh tt. Vi ti ny, chng em hi vng lm ra mt sn phm n gin, nhng hu dng hn khi s dng trong phm vi nh, v c bit c u im l nhn din c c k t ting vit m cc phm mm hin nay cha c. 3 .Yu cu phn mm Yu cu t ra : + p ng c ng dng t ra cho phn mm + Mi trng giao din v lm vic n gin, nhanh + C th nng cp, bo tr d dng

II. Phn tch tnh kh thi v phn chia t chc


Phn tch tnh kh thi Kh thi v k thut + S thn thin vi ng dng: Vic ci t v s dng kh d dng v thun tin,c bit l i vi cc dng in thoi cm ng chy trn nn Android ca LG v Samsung. + S thn thin vi k thut: Cc thao tc nh chp nh,x l nh nhn din cng khng qu phc tp nn d s dng. D dng sa cha v nng cp cng nh a thm cc chc nng. + Quy m phn mm: Nh,ch yu phc v cho nhim v hc tp v nghin cu trn trng v c th ng dng vo thc t theo nhng nhu cu c nhn. + Tnh tng thch: Tng thch vi tt c h iu hnh Android. Kh thi v mt t chc + ti c quy m tng i nh nn trong vn t chc cng vic khng kh khn. Kh thi v mt kinh t + Chi phi cho ti khng tn km

+ ti thnh cng c th em li tnh kinh t cho nhm thit k vi tnh thc t thit thc ca n

Lp bng k hoch K hoch v nhn s v cng c lm vic 5 thnh vin trong nhm hot ng tch cc trong cng vic chung Tp trung y trong mi bui lm vic nhm , c th chiu 1h, th 3 hng tun. C my tnh c nhn, mail lin lc. Ci t cc phn mm phc v cho vic lp trnh bng ngn ng Java, word, excel,phn mm Enterprise Architecture. K hoch chun b kin thc cho bi tp Cng vic chung Tm hiu v nghin cu v hai phn mm c ng dng trong thc t hin nay : ScanCard v CamCard lite ca cc nh phn phi trn cc thit b in thoi, notebook Tm hiu v nn Android v cc ng dng trn nn Android Hc v ngn ng Java + Hc v Java c bn/ 5 ngy ( 4 ting) c km theo lm cc bi tp ng dng nh. + Hc v Java hng i tng/ 5 ngy ( 3-4 ting) c km theo cc bi tp + Hc v Java nng cao / 1 tun (3-4 ting) c km theo bi tp Trong qu trnh hc Java cc bn trong nhm tho lun v trao i hiu r hn v ngn ng ny Tm hiu v giao din Server- Client v cc ng dng ca giao din trong bi tp Cng vic ring
9

Sau khi chun b cc kin thc c bn cho bi tp trong vng 2 tun, cc bn tin hnh lm bi tp Project qua mt s cng vic c th sau: Thit k cc khi c bn( code Debug) cho trng trnh: 1.Khi x l hnh nh ( bn Trang, , T) 2.Khi Giao din( bn Tun, Tuyn) 3.Khi Giao tip Server-Client (Tm hiu chung, khng lm)

Cng vic trn kt thc trong 2 tun tip theo ( t ngy 3/2 n ngy 16/3) Tin hnh lp trnh c th tng khi c bn theo chun Enterprise Architecture.Mi khi do tng bn c phn cng m nhn. (Tin hnh t ngy 30/3 n ngy 13/4) Xut kt qu ca tng Module Tng hp li, tin hnh ghp ni cc khi ( bn Trang) (Tin hnh t ngy 13/4 n ngy 17/4) Bt u Test chng trnh vi nhiu input khc nhau. + Kim tra cho tha mn FD, nu cha ch tin hnh ci thin v chnh sa. + Tin hnh nng cp chc nng nn ti u nht nu c th + Cng vic lm chung ca c nhm. (Tin hnh t ngy 17/4 n ngy 27/4) ng gi chng trnh v bt u vit bo co tng th cho bi Project (Tin hnh trong thi gian cn li n ngy 25/5) Ch : Trong mi mt khong thi gian, phi np bo cc tin trnh cng vic cho thy hng dn, Trang s nhn vit bo co.Cc bn lm mi phn tng hp li.

10

III. Phn tch cc khi c bn ca phn mm


S chc nng ca h thng phn mm

Phn tch tng phn ca phn mm Qun l khi x l hnh nh Qun l camera S dng camera chp nh,ng thi lu vo th mc ring ca mnh v hin th kt qu ca mnh ln i tng View. Qun l x l hnh nh Ly nh ra t th mc: Chng ta c th ly nh t trong th mc c lu trong SD Card hoc t Gallery ca in thoi Android c cha nhng bc nh chp hnh nh ca Cardvisit. +Lc nhiu: Hnh nh va chp c thng c nt khng cao, hay b nhiu nn chng ta phi tin hnh lc nhiu thng qua bin i Fourier bng hm fft trn Matlab. + Chuyn k t v dng text : S dng b th vin nhn dng k t bng quang Hc tesseract-OCR.Vi b th vin ca phn mm ny c th gip chng ta chuyn tfide nh va chp xang dng text, fide text ny c hin th trn cc textbox giao din ca mn hnh in thoi.

11

Phn tch thnh cc trng d liu c th d dng trong vic theo di cc thng tin v ch nhn ca cardvisit, phn mm cn h tr mt chc nng l phn tch cc d liu text thnh cc trng c th nh sau: + Trng Tn: c nhn din bng du hiu cc k t u l ch hoa v d TRAN DINH PHONG + Trng ST : c nhn din bng du hiu l mt dy cc con s, c th gii hn bng s cc con s + Trng email: c nhn dng bng dng c xut hin k t @,. + Trng a ch: c nhn dng bng du hiu c kt hp c s v ch, ..S dng cch vit Reguler Expression Qun l khi giao din To dng nn nh sng To cc textbox hin th + To cc textbox sau: hnh nh chp c, hin th tn, hin th st, hin th a ch + 2 button : lu lu d liu, v mt nt thot ra khi ng dng Qun l khi kt ni Server-Client Thit k tng khi Khi x l hnh nh Qun l camera

12

Khi ny bao gm 2 class chnh:

Khi qun l camara

Class Camara

ClassHelloActivity

+ Ban u chng ta cn to ra 1 lp publicclassCamaraView extends t Activity, chnh l giao din chnh ca chng ta ng thi implements t cc Interface SurfaceHolder.Callback v OnTouchListener s dng cc phng thc ny khi chp nh. + Cng nh cc Activity thng thng th phng thc onCreate( ) mc nh s c to ra trong lp CamaraView vic thc hin kt ni file giao din( .xml) v file code(.java) thng qua cu lnh
setContentView(R.layout.main);

trong capture l file xml cha layout camera ca chng ta. + i tng SurfaceView: To i tng SurfaceView tn l mSurfaceView, v kt ni bn phn giao din qua cu lnh

mSurfaceView = (SurfaceView)indViewById(R.id.surface_camera); mSurfaceView.setOnClickListener(this); mSurfaceHolder = mSurfaceView.getHolder()

13

To i tng SurfaceHolder gip cho Activity ny qun l SurfaceView thng qua interface Callback, mc ch thng bo SurfaceView c to,hy hay thay i qua cc phng thc l
publicvoid surfaceCreated, surfaceChanged(), surfaceDestroyed() surface. Bn cnh ,ta thit lp Surface ny l loi

push ph hp vi Camera Preview:


mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

Tip theo l
mCamera = Camera.open();

Hm ny c gi u tin khi surface c to ra. V vy hm ny mnh s open camera s dng cho sau ny. Bc tip, chng ta s thit lp cc thng s
params.height = (int)h; params.width = (int)w;

cho Camera thng qua phng thc surfaceChanged( ), v khi ng ci camera preview tc l v hnh ln ci surface m mnh s nhn thy trn mn hnh in thoi.
Camera.Parameters p = mCamera.getParameters(); p.setPreviewSize(w, h); mCamera.setParameters(p); try { mCamera.setPreviewDisplay(holder); }

Khi kt thc Application th hm surfaceDestroyed( ) s c gi nhm stopPreview v release b nh ca Camera:


{ mCamera.stopPreview(); mPreviewRunning = false;
14

mCamera.release(); }

Lp th hai to ra l: publicclass HelloActivity extends Activity {} Nhim v chnh ca class ny to lin kt vi layout.main to mt giao din bao gm hai i tng l 2 button: choosePictureButton ,chooseCameraBtn + ChoosePictureButton: Chn cch ly nh t mt fide lu trong my. + ChooseCamaraBtn: Chn cch ly nh t Camara

Sau khi chp hnh cardvisit bng camera ca thit b, hnh nh chp c s c lu vo mt th mc trong thit b. i tng hin th nh

15

Qun l x l hnh nh Hnh nh sau khi chp v c hin th ln mt textview trn mn hnh, s c x l cc k t trong fide nh thnh fide dng text. h tr cho cng vic ny chng ta dng b th vin nhn dng k t quang hc VietOCR( Optical Character Recognition). y l cng ngh c p dng nhn dng k t trn mt nh dng file hnh v chuyn n thnh nh dng file text. Phm vi ng dng OCR thng c ng dng nh mt phn mm ci t trn my tnh hoc tch hp i km vi phn cng (c th l my Scanner) hoc c thit lp nh mt ng dng trc tuyn. Kh khn v hn ch ca OCR + Cc chng trnh h tr OCR c th nhn dng k t vi t l trn 90% i vi cht lng hnh nh r nt v font ch thng thng. i vi hnh cht lng km, font ch c bit hoc ch vit tay th kt qu cho ra khng my kh quan.
16

+ i vi vn bn Ting Vit th t l phn trm chnh xc khng cao so vi cc vn bn ngn ng khc. + S khi cc bc:

Bc 1: X l ban u: Chuyn nh mu---> en trng ( Binary)

Bc 2: Lc nh: Chia ct loi b cc thnh phn ph, lc nhiu.

Bc 3:Nhn dng thng tin trn nh ---> dng text

Bc 1: X l ban u + Chuyn nh t Mu sang en trng (Binary), tc ch cn hai mc 0 v 255 d x l, dng hm Pix ca TeserractOCV tr v dng matric. To i tng pic_bin sau khi x l xong, tip chng ta s lm vic vi i tng ny. + on code
File f = newFile(getRealPathFromURI1(imageFileUri)); Pix pic = ReadFile.readFile(f); // traveanh gray dang matrix

Log.v("chieu rong", Integer.toString(pic.getWidth()));///////////////// Pix pic_bin = Binarize.otsuAdaptiveThreshold(pic); ArrayList<Pix> hozArray = new ArrayList<Pix>(); int i = 0;

Bc 2:Lc nh
17

+ Ct ngang v ct dc bc nh nhm phn on thnh cc bc nh nh s dng cc hm splitHoz v splitVer (t vit) trong lp Algorithm.java. Thut ton l: do c im ca cc bc nh gia cc k t (nh l nn trng, k t en) c khong trng. Da vo c im ny ta xy dng ln hm splitHoz v splitVer bng cch kim tra tng dng (ct), kim tra gi tr tng ca hng(ct) . Nu hng(ct) c mt pixcel en (tc c gi tr l 0) th -> tng s nh hn s hng(ct) * 255. Da vo ta c th ct bc nh ban u thnh nhiu bc nh nh hn gip bc sau x l nhanh hn v lc ta loi b c cc hnh nh khng lin quan n thng tin ca ch th, gim c nhiu do cc phn t ny gy ra trong qu trnh nhn dng + Code vit
publicstaticint sum (Pix m, int rowStart, int rowEnd, int colStart, int colEnd) { int result=0; Pix sub = submat(m, rowStart, rowEnd, colStart, colEnd); result = sumElems(sub); return result; } // Lay ra matrix con. // Vi Du: submat(img,2,10,5,8) -> lay ra matrix con voi column:5-7 & row:2-9 publicstatic Pix submat(Pix img,int rowStart, int rowEnd, int colStart, int colEnd) { Pix subImg = newPix(colEnd-colStart,rowEnd-rowStart,0); // Viet code o day return subImg; } //Tinh tong cua mot matrix publicstaticint sumElems(Pix img)
18

{ int sum = 0; for(int i=0; i<img.getHeight();i++) { for(int j=0;j<img.getWidth();j++) { sum+=img.getPixel(i, j); } } }

Bc 3: Nhn dng thng tin trn nh + Trong th vin ca Tesseract h tr hm TessBaseAPI trc tip chuyn hnh nh thnh dng Text vi on Code sau:
TessBaseAPI baseApi = new TessBaseAPI (); baseApi.init("/mnt/sdcard/tesseract/", "vie"); //File f1 = new File(getRealPathFromURI(imageFileUri)); baseApi.setImage(img); //baseApi.setImage(f1); String result = baseApi.getUTF8Text(); baseApi.end(); txt.setText(result);

+ Kt qu a ra hai i tng sau khi x l: String path="mnt/sdcard/tesseract/tessdata/"; String file ="vie.traineddata";

Cc thnh phn code


19

+ Code phn thut ton c vit trong 3 Class chnh l Algorithm.java, Math.java , Xulyanh.java Math.java :

Lp ny cha cc php ton phc v cho cc tnh ton trong cc lp khc, ch yu l lp thut ton.Tnh tng cc pixcel mt hng hoc ct ca matrix sum.Tnh tng tt c cc pixcel ca matrix sumMatrix.Ly gi tr hoc thit lp gi tr cho mt vector con thuc ma trn getValue, setValue.Xa trng mt vng no y ca nh setWhite.Tm v tr ca thnh phn c gi tr ln nht trong mng maxLocation. Algorithm.java:

Lp ny cha phng thc chnh dng cho vic x l, nhn dinnh. Hm ct dc, ct ngang bc nh splitHoz, splitVer.Hm trch xut k t extractPiece Xulyanh.java :

+ Hm ny l hm chnh lin kt vi hai hm trn, ch yu lm vic ly nh ra t trong fide nh, chuyn d liu n cho cc hm sau x l.

Kt qu x l: Hnh nh ban u:

20

Sau khi x l:

21

Phn tch cc trng d liu + Phn tch da trn JavaScript Regular Expression nhm nhn ra cc thng tin v ch th nh email, tn , a ch, phone da trn mt bn mu quy nh sn. + Ta t vit hm ny ri a vo nhn dng. + V d: - Mt s c vit di dng mt chui vi cc ch s, c th c cha ti a 1 du phy gia. - D liu kiu ngy thng: Thng c vit theu mu: dd/mm/yyyy: Hai ch s u tin xc nh ngy, tip theo l du gch cho, tip n l 2 ch s xc nh thng, tip theo l du gch cho v kt thc bi bn ch s xc nh nm. - a ch email: xxx@yyy.zz.g: Bao gm 1 chui vn bn c chia thnh 2 phn: Phn user name v phn domain, 2 phn ny cch nhau bi du @. Phn domain c lut ring theo cch t tn ca domain... - Cc php ton tm kim theo v tr ^:Tr v chui kt qu trong trng hp chui ny nm v tr u ca chui gc $:Tr v chui kt qu trong trng hp chui ny nm v tr cui ca chui gc \b:Tr v chui kt qu trong trng hp chui ny nm v tr u ca mt t trong chui gc. Nu cn so snh v tr cui t, hy t biu thc \b v tr cui t. \B:Tr v chui kt qu trong trng hp chui ny khng nm v tr u ca mt t trong chui gc. (tu thuc vo v tr t \B u hoc cui mt t) ?=:Tr v chui kt qu nu theo sau chui l mt chui no c ch nh trc ?!:Tr v chui kt qu nu sau chui khng phi l mt chui no c ch nh trc

22

-Cc lp k t trong regex [xyz]:Tm mt k t bt k nm trong tp k t gia cp du ngoc vung [x-z]:Tm mt k t bt k nm trong tp k t t x n z [^xyz]:Tm mt k t bt k khng thuc tp k t gia cp du ngoc vung. .:Tm bt k mt k t no khng phi l k t xung dng mi (new line) hoc k t kt thc dng (line terminator). \w:Tm mt k t dng a-Z, 0-9 v du gch di. \W:Ngc li vi \w \d:Tm mt k t thuc tp k t t 0 n 9 \D:Ngc li vi \d: Tm mt k t khng nm trong tp k t t 0 n 9 \s:Tm k t cch (du cch) \S:Tm mt k t khng phi l du cch -Gp nhm cc biu thc Chng ta c th s dng cc du ngoc trn () gp nhm nh trong cc biu thc ton hc thng thng. ():Tm kim mt nhm cc k t bn trong cp du ngoc v lu vo chui kt qu. (?: ):Tm kim chui kt qu khng cha tp k t nm trong cp du ngoc. |:Php ton hoc, c s dng kt hp cc mnh vi nhau vo chung mt biu thc T nhng quy nh ny ta c th lp nn mt quy tc phn tch cc dng text ra cc trng nh sau: + trng a ch email: document.write (str.match(/([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zAZ0-9]{2,4})+/gi)) + trng s in thoi: document.write (str.match(/[0-9]+/g));
23

// hoac document.write(str.match(/\d+/g)); + trng ngy, thng, nm sinh : Pattern.compile("(([012][0-9])||([3][01]))[/](([0][0-9])||[1][02])[/](19||20)[0-9][0-9]") + trng a ch: s c nhn dng sau cm t office + trng tn : l on k t cn li kim tra m regex ny dng Notepad++ vit bng ngn ng JavaScrip

24

Kt qu test c:

Nhn din tng i chnh xc, nhng vi nhng trng hp dng k t khc th phn bit kh hn. Khi giao din Khi cc trng d liu c phn tch, kt ni hin th ln giao din sau:

25

Giao din c thit k theo kiu sau:

Chng em xin chn thnh cm n cc thy c ph trch v cc anh trn lab gip chng em hon thnh Project 1!

26

DANH MC TI LIU THAM KHO

Pro AndRoid Media - Shawn Van Every Lp trnh Java c bn Lp trnh hng i tng vi Java - on Vn Ban Lp trnh Java nng cao

27

You might also like