Está en la página 1de 111

I HC QUC GIA TP.

H CH MINH

TRNG I HC CNG NGH THNG TIN


KHOA CNG NGH PHN MM

KHA LUN TT NGHIP

NGHIN CU GOOGLE MAP API V


XY DNG NG DNG TRN ANDROID

Gio vin hng dn: PGS.TS. V THANH NGUYN


CH. TRN ANH DNG
Sinh vin thc hin:

Lp :
Kho:

CNPM02
02

NGUYN MINH TUN


TRNG DUY

TP. H Ch Minh, thng 1 nm 2012

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

LI M U
Ngy nay vi s pht trin khng ngng ca x hi th nhu cu ca con ngi
cng ngy cng tng, c bit l nhu cu v vic s dng cng ngh h tr cho cuc
sng hng ngy. Nm bt c nhu cu m cc cng ty khng ngng i mi, to ra
nhiu cng ngh hn. Trong ta thy ni bt nht hin nay l cng ngh di ng,
cc ng dng trn di ng.
T ngha trn nhm quyt nh nghin cu v xy dng mt ng dng p
dng cng ngh i ng n gin ha vic tm ng, tra cu thng tin trn bn .
Vi ng dng ny ngi s dng c th d dng bit c v tr ca mnh, cng nh
tm ng i v a im mt cch nhanh chng v chnh xc ti bt k ni no. ng
dng c bit thch hp vi khch du lch v ch cn ci t ng dng trn chic in
thoi ca mnh l c th s dng c.
Kha lun Nghin cu Google Map Api v xy dng ng dng trn
Android bao gm 6 chng:
Chng 1: Gii thiu khi qut v kha lun v mc ch ca kha lun.
Chng 2: Tng quan h iu hnh Android.
Chng 3: Kin trc v thnh phn h iu hnh Android.
Chng 4: Google Map API & cc dch vu Google Map trn Anroid.
Chng 5: Phn tch thit k h thng ng dng MapPro.
Chng 6: Thit k giao din.
Kt lun v hng pht trin.

LI CM N
Trong qu trnh thc hin bi kha lun ny, nhm may mn nhn c s
gip rt nhiu t qu thy c. Trc ht, nhm xin gi li tri n su sc nht n
qu thy c khoa Cng ngh phn mm, cng nh qu thy c ca cc khoa v b mn
trng i hc Cng ngh thng tin - HQG HCM nhit tnh truyn t kin thc
v cc kinh nghim thc t, c bit l Thy PGS.TS V Thanh Nguyn v Thy Trn
Anh Dng, ngi ht sc quan tm v nhit tnh hng dn nhm hon thnh bi
kha lun ny.
Cui cng, nhm xin gi li chc sc khe v thnh cng n qu thy c trng
i hc Cng ngh thng tin.
Mc d nhm rt c gng nhng trong qu trnh lm kha lun s khng trnh
khi nhng thiu st. Rt mong nhn c s gp qu bu ca qu thy c v bn b
kha lun c hon chnh hn.
Thnh ph H Ch Minh, ngy 31 thng 12 nm 2011
Nhm thc hin
Nguyn Minh Tun Trng Duy

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

NHN XT
(Ca ging vin hng dn)
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

NHN XT
(Ca ging vin phn bin)
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

MC LC
LI M U
LI CM N
NHN XT CA GING VIN HNG DN
NHN XT CA GING VIN PHN BIN
MC LC
DANH SCH BNG BIU
DANH MC HNH V
1
Chng 1: GII THIU..............................................................................................1
1.1. Gii thiu ti..................................................................................................1
1.2. Mc tiu ti....................................................................................................2
Chng 2: TNG QUAN H IU HNH ANDROID..........................................3
2.1. Khi nim............................................................................................................3
2.2. c im.............................................................................................................4
2.2.1. Tnh m......................................................................................................................4
2.2.2. Tnh ngang hng ca cc ng dng...........................................................................4
2.2.3. D dng v nhanh chng xy dng ng dng............................................................5

2.3. u v nhc im ca Android so vi cc h iu hnh khc.......................5


Chng 3: KIN TRC V THNH PHN ANDROID........................................7
3.1. Kin trc ca nn tng Android.......................................................................7
3.1.1. Kin trc tng qut.....................................................................................................7
3.1.2. H iu hnh..............................................................................................................7
3.1.3. Th vin v cc giao din lp trnh ng dng............................................................7

3.2. Cc thnh phn ca ng dng........................................................................12


3.2.1. Hot ng (Activity)................................................................................................13
3.2.2. Service......................................................................................................................16
3.2.3. B nhn qung b (Broadcast receivers).................................................................18

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

3.2.4. Content Provider......................................................................................................18


3.2.5. Cc thnh phn kch hot (cc Intent)......................................................................19
3.2.6. Ngt mt thnh phn................................................................................................20
3.2.7. Tp tin khai bo (manifest)......................................................................................20
3.2.8. B lc Intent.............................................................................................................22

3.3. Cng c h tr lp trnh Android...................................................................23


3.3.1. Tng quan................................................................................................................23
3.3.2. To my o trn android..........................................................................................25
3.3.3. Xut bn phn mm chy trn android....................................................................26

Chng 4: GOOGLE MAP API V CC DCH V GOOGLE MAP TRN


ANDROID 30
4.1. ng k API Key t Google Maps..................................................................31
4.1.1. Gii thiu.................................................................................................................31
4.1.2. Ly m MD5............................................................................................................32
4.1.3. Ly key Google Maps API......................................................................................33

4.2. Cc tham s truy cp trong Google Maps......................................................33


4.2.1. Cc tham s chung...................................................................................................33
4.2.2. Ch tm kim.......................................................................................................35
4.2.3. V tr.........................................................................................................................37
4.2.4. Hin th bn .........................................................................................................38
4.2.5. Dn ng................................................................................................................38
4.2.6. Qun l thng tin u ra...........................................................................................39

4.3. File thng tin KML..........................................................................................40


4.3.1. Placemark.................................................................................................................40
4.3.2. ng i (Path).......................................................................................................42
4.3.3. Truy xut thng tin d liu t file KML..................................................................43

4.4. Mt s API ph bin ca Google Maps trn Android...................................52


4.4.1. Lp GeoPoint...........................................................................................................52
4.4.2. OverlayItem & ItemizedOverlay.............................................................................53
4.4.3. Lp MapController..................................................................................................58
4.4.4. MapView & MapActivity........................................................................................62

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

4.4.5. Lp MyLocationOverlay.........................................................................................71

Chng 5: PHN TCH THIT K H THNG NG DNG MAPRRO.........72


5.1. Gii thiu ng dng MapPro..........................................................................72
5.2. Kin trc ng dng..........................................................................................73
5.2.1. Phn mm ci t trn in thoi.............................................................................73
5.2.2. H thng my ch....................................................................................................73

5.3. Phn tch thit k h thng ng dng.............................................................75


5.3.1. S Use-Case tng qut........................................................................................75
5.3.2. Danh sch cc Actor................................................................................................76
5.3.3. Danh sch cc use-case............................................................................................76
5.3.4. c t use-case.........................................................................................................76
5.3.5. Thit k h thng.....................................................................................................81
5.3.6. Biu lp chi tit...................................................................................................85

Chng 6: THIT K GIAO DIN.........................................................................87


6.1. Thit k giao din.............................................................................................87
6.1.1. Danh sch mn hnh.................................................................................................87
6.1.2. M t chi tit tng mn hnh....................................................................................87

KT LUN V HNG PHT TRIN................................................................97


nh gi lun vn..................................................................................................97
nh gi ng dng.................................................................................................97
Hng pht trin ...................................................................................................97
Kt lun...................................................................................................................97
TI LIU THAM KHO.........................................................................................99

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

DANH SCH BNG BIU


Bng 2.1: So snh cc h iu hnh............................................................................6
Bng 4.2: Danh sch keytool......................................................................................32
Bng 4.3: Cc tham s truy xut v tr......................................................................38
Bng 4.4: Cc phng thc trong lp GeoPoint......................................................53
Bng 4.5: Cc thnh phn lp OverlayItem.............................................................55
Bng 4.6: Cc phng thc lp OverlayItem...........................................................56
Bng 4.7: Phng thc khi to lp ItemizedOverlay............................................57
Bng 4.8: Cc phng thc to lp ItemizedOverlay..............................................58
Bng 4.9: Cc phng thc lp MapController......................................................61
Bng 4.10: Phng thc khi to lp MapView......................................................67
Bng 4.11: Cc phng thc lp MapView..............................................................69
Bng 4.12: Cc phng thc lp MapActivity.........................................................71
Bng 4.13 Cc phng thc lp MyLocationOverlay.............................................72
Bng 6.14: Danh sch actor.......................................................................................76
Bng 6.15: Danh sch use-case..................................................................................76
Bng 7.16: Danh sch cc mn hnh..........................................................................87

DANH MC HNH V

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

Hnh 1.1: Mt s cng ngh bn hin nay..............................................................1


Hnh 2.2: Mt s in thoi s dng Android............................................................3
Hnh 3.3: Nhn Linux trn Android...........................................................................7
Hnh 3.4: Th vin lp trnh ng dng trn Android................................................8
Hnh 3.5: Khung ng dng trn Android.................................................................11
Hnh 3.6: Cc ng dng trn Android......................................................................12
Hnh 3.7 Vng i ca mt hot ng.........................................................................15
Hnh 3.8: S chuyn trng thi ca Service........................................................17
Hnh 3.9: To my o.................................................................................................25
Hnh 3.10: Khi to my o.......................................................................................26
Hnh 3.11: Xut bn phn mm trn Android.........................................................27
Hnh 3.12: Nhp thng s cn thit...........................................................................27
Hnh 3.13: Thit lp tn cho file apk.........................................................................28
Hnh 3.14: Nhp password.........................................................................................29
Hnh 4.15: Hnh nh nhn t v tinh trn Google Maps..........................................30
Hnh 4.16: V d ch hin th trn bn ............................................................62
Hnh 5.17: Kin trc phn mm MapPro.................................................................74
Hnh 5.18: S use-case tng qut..........................................................................75
Hnh 5.19 Kin trc phn mm.................................................................................81
Hnh 5.20: Biu tun t cho chc nng tm kim a im................................82
Hnh 5.21: Biu tun t cho chc nng tm kim ng i...............................83
Hnh 5.22: Biu tun t cho chc nng tm kim................................................84
Hnh 5.23: Biu lp chi tit cho tm kim a im.............................................85
Hnh 5.24: Biu lp chi tit cho tm kim ng i............................................85
Hnh 5.25: Biu lp chi tit cho tm kim theo a ch v v tr hin ti............86
Hnh 6.26: Mn hnh chnh........................................................................................88
Hnh 6.27: Mn hnh bn ......................................................................................89
Hnh 6.28: Mn hnh menu a im........................................................................90
Hnh 6.29: Mn hnh nhp v tr................................................................................91
Hnh 6.30: Mn hnh hin th a im trn danh sch...........................................92

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

Hnh 6.31: Mn hnh hin th a im trn bn .................................................93


Hnh 6.32: Mn hnh nhp thng tin dn ng.....................................................94
Hnh 6.33: Mn hnh thng tin dn ng trn danh sch.....................................95
Hnh 6.34: Mn hnh thng tin dn ng trn bn ..........................................96

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

Chng 1: GII THIU


1.1. Gii thiu ti
Ngy nay vi s pht trin mnh m ca cng ngh bn th vic tm kim
thng tin cng nh nh v trn bn ngy cng d dng dng hn. Khng nhng th
vic ng dng cng ngh ny trn thit b di ng cng l mt xu hng tt yu. Trn
thc t c nhiu hng phn mm h tr cng ngh ny, chng ta khng kh nhn ra
l cc ng dng nh: Bing Maps ca hng phn mm Microsoft, Yahoo! Maps ca
hng phn mm Yahoo, Trendsmap ca mng x hi twitterTrong ng ch
nht l Google Maps ca hng phn mm tm kim hng u th gii l Google. Khng
nhng h tr y cc dng bn nh: Earth, Satellite, Traffic, Weather.m cn
h tr bn trn Android.

Hnh 1.1: Mt s cng ngh bn hin nay


Ging nh cng ngh bn , cng ngh di ng trn cc smartphone cng khng
km phn si ng vi s tham gia ca cc hng ln nh: RIM, Nokia, Samsung,
Apple, Google, Microsoft Khng ch l mt chic in thoi bnh thng, cc
smartphone cn c th hot ng ging nh mt chic my tnh mini vi nhiu cng
ngh hin i c tch hp nh: GPS, Web, E-mail, Office

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

Nhn thy xu hng pht trin nhm c tng kt hp hai cng ngh ny
vi nhau to ra mt ng dng tm kim v dn ng trn h iu hnh Android vi
tn MapPro.
MapPro l mt ng dng bn da trn Map APIs trn thit b Android ca
Google Maps.
1.2. Mc tiu ti
Tm hiu cc vn xung quanh Google Map APIs v cc dch v m Google
Maps h tr c bit l cc ng dng trn Android. Tm hiu h iu hnh v cch xy
dng trn h u hnh Android.
p dng kin thc tm hiu c xy dng h thng chy trn h iu hnh
Android gii quyt cc vn sau:
Tm kim thng tin xung quanh v tr hin ti nh: ATM, nh hng, khch sn,
trng hc, nh sch, tm kim theo a ch c cho sn.
Tm kim a im v a ch trn bn .
Hng dn ng i.
Tnh ton l trnh v thi gian ng i.
nh v ngi dng.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

Chng 2: TNG QUAN H IU HNH ANDROID


2.1. Khi nim

Hnh 2.2: Mt s in thoi s dng Android


Android c pht trin bi tp on Google, phin bn u tin ra i nm
2008. c xy dng trn mt nn tng m, v mt b th vin a nng, mnh m vi
nguyn l m, Android nhanh chng c cng ng lp trnh vin di ng hng
ng mnh m. Nn tng Android tch hp nhiu tnh nng ni bt:
Android l mt h iu hnh nhn Linux, m bo s tng tc vi cc phn
cng, qun l b nh, iu khin cc tin trnh ti u cho cc thit b di ng.
B ng dng khung cho php s dng li v thay th cc thnh phn ring l.
My o Dalvik c ti u cho cc thit b di ng, chy cc ng dng lp
trnh trn ngn ng Java.
Cc th vin cho pht trin ng dng m ngun m bao gm SQLite, WebKit,
OpenGL v trnh qun l a phng tin.
H tr cc chun a phng tin ph bin, thoi trn nn GSM, Bluetooth
EDGE, 3G v Wifi

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

H tr Camera, GPS, la bn, my o gia tc


B pht trin ng dng SDK y gm thit b gi lp, cng c sa li, tch
hp vi Eclipse SDK.
Android cung cp mt tp hp y cc phn mm cho thit b di ng bao
gm: h iu hnh, cc khung ng dng v cc ng dng c bn.
2.2. c im
2.2.1. Tnh m
Android c xy dng t di i ln cho php ngi pht trin to cc ng
dng di ng hp dn vi y cc im mnh ca cc thit b cm tay hin c.
Android hon ton m, mt ng dng c th gi ti bt k mt chc nng li ca in
thoi nh to cuc gi, gi tin nhn hay s dng my nh, cho php ngi pht trin
to phong ph hn, lin kt hn cc tnh nng cho ngi dng. Android c xy dng
trn nhn Linux m. Thm na, n s dng mt my o m c ti u ha b nh
v phn cng vi mi trng di ng. Android l mt m ngun m, n c th c
m rng kt hp t do gia cc cng ngh ni tri. Nn tng ny s tip tc pht
trin bi cng ng pht trin to ra cc ng dng di ng hon ho.
2.2.2. Tnh ngang hng ca cc ng dng
Vi Android, khng c s khc nhau gia cc ng dng in thoi c bn vi
ng dng ca bn th ba. Chng c xy dng truy cp nh nhau ti mt lot cc
ng dng v dch v ca in thoi. Vi cc thit b c xy dng trn nn tng
Android, ngi dng c th p ng y cc nhu cu m h thch. Chng ta c th
i mn hnh nn, kiu gi in thoi, hay bt k ng dng no. Chng ta thm ch c
th hng dn in thoi ch xem nhng nh mnh thch.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

2.2.3. D dng v nhanh chng xy dng ng dng


Android cung cp b th vin giao din lp trnh ng dng s v cc cng c
vit cc ng dng phc tp. V d, Android c th cho php ngi pht trin bit
c v tr ca thit b v cho php cc thit b giao tip vi nhau c th to nn
mng x hi chia s ngang hng rng khp. Thm na, Android cn bao gm mt b
cng c y gip cho vic pht trin tr nn d dng.
2.3. u v nhc im ca Android so vi cc h iu hnh khc
u im
Android

Nhc im

Google Android l nn tng m, cho H iu hnh phn mnh, khng


php ngi dng c th ty bin nn thng nht trn cc thit b, gii
tng theo thch, hn na li c mt hn v 'm' v nhiu l hng
Lin minh thit b cm tay m hu bo mt l nhng yu im ca
thun, Google Android ang l i th Android OS.
xng tm ca iPhone ca Apple.
Google ang tch cc m rng cng
ng pht trin cc ng dng cho
Android. B cng c pht trin phn
mm (SDK) y , h tr a nn
(Linux, Windows hay Mac OS) do chy
trn my o Java. Th vin ngy cng
hon thin, d dng cho ngi lp trnh.

Window C th vin API kh ging vi API trn S c mt ca iPhone v


s Mobile Win32, cc cng c h tr lp trnh y Android l hai tr ngi ln vi
vi Visual Studio, iu ny lm cho Windows Mobile. Hai nn tng
nhng ngi pht trin trn Win32 ny ang hon thin v c
khng mt cng tm hiu li cc API v ngi dng rt a chung.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

cc cng c lp trnh.
iPhone

Mn hnh cm ng a im: iPhone Khng gi c tin nhn a


s dng hon ton bng cm ng v phng tin (MMS) v IM
khng s dng cc nt. Vi iPhone ta (Instant Messaging), thiu b
c th iu khin trn mn hnh k c nh m rng. Vic lp trnh trn
vic trt ca cc ngn tay. Ta c th cho iPhone phi thc hin trn
phng to nh bng cch trt hai ngn h iu hnh Mac, do khng
tay ra xa v thu nh bng cch ngc phi ai cng c th lp trnh cho
li.

iPhone. Hn th, nu mun a

B cm nhn gia tc: Nhng phn ng chng trnh ra my tht ngi


nhanh chng ca b cm nhn gia tc lp trnh phi tr mt khon ph
thay i phn gii mn hnh t dc lp trnh, iu ny lm gim tnh
sang ngang t ng khi ta t in thoi cnh tranh so vi cc i th
nm ngang. iu ny lm sinh ng khc.
thm cho cc tr chi. m thanh, hnh
nh hon ho.
Bng 2.1: So snh cc h iu hnh

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

Chng 3: KIN TRC V THNH PHN ANDROID


3.1. Kin trc ca nn tng Android
3.1.1. Kin trc tng qut
Android bao gm bn thnh phn sau:
H iu hnh.
Th vin v cc giao din lp trnh ng dng.
Khung ng dng.
ng dng.
3.1.2. H iu hnh

Hnh 3.3: Nhn Linux trn Android


Android s dng nhn Linux 2.6 lm nhn cho cc dch v h thng nh bo mt,
qun l b nh, qun l tin trnh (x l tin trnh, a lung), ngn xp mng v trnh
iu khin thit b (giao tip USB, giao tip hng ngoi, khng y, v.v). Nhn
Linux ny cng c vai tr nh mt lp tru tng gia phn cng v phn mm.
3.1.3. Th vin v cc giao din lp trnh ng dng
Android c mt th vin kh phong ph cung cp sn ngi lp trnh c th s
dng. Hnh sau l s tm tt v h thng th vin ny.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

Hnh 3.4: Th vin lp trnh ng dng trn Android


3.1.3.1. Android runtime
Android c mt tp cc th vin nng ct cung cp hu ht cc chc nng sn
c trong th vin ct li ca ngn ng lp trnh Java. Android Runtime: Bao gm my
o Dalvik v cc th vin Android.
Cc th vin c bn: Cc ng dng Android c pht trin trn mi trng Java,
nhng Dalvik li khng phi l mt Java VM. Cc th vin c bn ca Android cung
cp hu ht cc chc nng c trong th vin c bn ca Java cng nh l th vin ring
ca Android.
My o Dalvik: Dalvik l my o chy cc ng dng trn Android, c ti
u m bo rng mt thit b c th chy c nhiu Instance mt cch hiu qu.
N da vo nhn Linux thc hin a lung v qun l b nh cp thp.
3.1.3.2. B th vin
Android cung cp mt s cc APIs cho pht trin ng dng. Danh sch cc API
c bn sau c cung cp bi tt c cc thit b trn nn Android:

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

android.util: Gi tin ch c bn bao gm nhiu lp mc thp nh l cc


lp qun l (List, Stack) lp x l chui, lp x l XML.
android.os: Gi h iu hnh cung cp truy cp n cc dch v c bn nh
l chuyn tin nhn, thng tin cho, ng h v g li.
android.graphics: Cung cp cc lp ha mc thp thc hin cc chc
nng ha, mu, v c bn.
android.text: Cng c hin th v x l vn bn.
android.database: Cung cp cc lp mc thp bt buc cho vic iu
khin cursor khi lm vic vi cc c s d liu.
android.content: Cc giao tip lp trnh ni dung c dng qun l
truy cp d liu v xut bn bng cch cung cp cc dch v thao tc vi ti
nguyn, Content Provider, v cc gi.
android.view: View l lp giao din ngi dng c bn nht. Tt c giao
din ngi dng c to ra u phi s dng mt tp cc View cung cp
cho cc thnh phn tng tc ngi dng.
android.widget: Xy dng da trn gi View. Nhng lp widget nhng
thnh phn giao din c to sn c s dng to nn giao din ngi
dng. Cc widget bao gm danh sch, nt bm, hp nhp, cc kiu trnh by
(layout).
com.google.android.maps: B API mc cao cung cp truy cp n iu
khin bn sn trong Android t ng dng c xy dng. Bao gm c lp
MapView cng nh Overlay v MapController tng tc vi bn bn

trong ng dng.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

10

android.app: Mt gi th vin bc cao, cung cp truy cp n d liu ca


ng dng. Gi ng dng cng bao gm lp Activity v Service l thnh phn
c bn ca mi ng dng Android.
android.provider: to thun li cho ngi pht trin truy cp n cc
Content Provider tiu chun (nh l d liu danh b), gi cung cp (Provider)
bao gm cc lp cho php truy cp n c s d liu chun trong tt c cc
bn phn phi Android.
android.telephony: Cc API in m cung cp kh nng tng tc trc
tip vi tng in thoi trong cc thit b, cho php to, nhn, theo di cc
cuc gi, tnh trng cc cuc gi v tin nhn SMS.
android.webkit: Gi WebKit cung cp cc API lm vic vi cc ni
dung Web-based bao gm mt lp WebView to ra giao din web, nhng
trong ng dng v mt trnh qun l cookie.
Cng vi cc API ca Android, cn c mt tp cc th vin C/C++ nh:
OpenGL: Th vin dng to ra cc ha 3D da vo chun OpenGLES
1.0 API.
FreeType: H tr x l bitmap v font vector.
GGL: Th vin c bn, dng cung cp cc engine ha 2D.
Libc: Th vin C chun, c ti u cho cc thit b Linux-based.
SQLite Engine: C s d liu quan h gn nh, dng lu tr d liu ca
ng dng.
SSL: H tr s dng giao thc m ha Secure Sockets Layer trong bo mt
truyn thng Internet.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

11

Ngoi cc th vin chun ca Android, p ng tiu ch ph hp vi nhiu


thit b khc nhau, Android cn c th c cc API ph thuc thit b nh
android.location,

android.media,

android.opengl,

android.hardware,

android.bluetooth, android.net.wifi, v android.telephony.

3.1.3.3. Khung ng dng trn Android

Hnh 3.5: Khung ng dng trn Android


Kin trc ca Android khuyn khch khi nim thnh phn s dng li, cho php
cng b v chia s cc Activity, Service, d liu, vi cc ng dng khc vi quyn truy
cp c qun l bi khai bo.
C ch cho php ngi lp trnh to ra mt trnh qun l danh b hoc trnh
quay s in thoi m c cc thnh phn ngi khc c th to mi giao din v m
rng chc nng thay v to li chng.
Nhng dch v sau l nhng dch v kin trc c bn nht ca tt c cc ng
dng, cung cp mt framework cho mi mi phn mm c xy dng:
Actitvity Manager: iu khin vng i ca cc Activity bao gm c qun l
cc tng Activity.
Views: c s dng to lp cc giao din ngi dng cho cc Activity.
Notification Mamager: Cung cp mt c ch c nh v quy c cho vic gi
cc thng bo n ngi dng.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

12

Content Provider: Cho php ng dng chia s d liu gia cc ng dng.


Resource Manager: H tr cc thnh phn khng thuc m ngun nh l
chui k t, ha c t bn ngoi.
3.1.3.4. ng dng

Hnh 3.6: Cc ng dng trn Android


y l lp trn cng ca kin trc nn tng Android. Android s hot ng vi
mt b cc ng dng bao gm ng dng th in t, gi tin nhn, lch, bn , trnh
duyt web, danh b v.v Tt c cc ng dng c vit bng ngn ng Java. Cc ng
dng ny c th c cung cp sn hoc c pht trin bi nhng lp trnh vin.
3.2. Cc thnh phn ca ng dng
Mt ng dng trn Android c cu thnh t bn thnh phn c bn sau:
Activities (hot ng).
Services.
Broadcast Receivers.
Content Provider.
Cc thnh phn ny khng nht thit phi c mt y trong ng dng. Chng
ta c th xem cc thnh phn no c s dng trong ng dng bng vic xem khai
bo trong file AndroidManifest.xml.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

13

3.2.1. Hot ng (Activity)


3.2.1.1. Khi nim
Mt hot ng l mt giao din ngi dng trc quan m ngi dng c th thc
hin trn mi khi c kch hot. Mt ng dng c th c nhiu hot ng v chng
c th gi qua li ln nhau. Mi Activity l mt dn xut ca lp
android.app.Activity.

Mi hot ng c mt ca s v ln. Thng thng ca s ny ph y mn


hnh, ngoi ra n cng c th c thm cc ca s con khc nh l hp thoiNi dung
ca ca s ca hot ng c cung cp bi mt h thng cp bc cc View (l i
tng ca lp Views).
3.2.1.2. Vng i ca hot ng
Cc hot ng trong h thng c qun l bi mt cu trc d liu ngn xp.
Khi c mt hot ng c khi to, n c y vo trong ngn xp, chuyn sang
trng thi thc thi v hot trng trc s chuyn sang trng thi ch. Hot ng ny
ch tr li trang thi kch hot khi m hot ng va khi to kt thc vic thc thi.
Mt Activity c 3 trng thi chnh:
Active hoc running khi n trn nht mn hnh v nhn tng tc ngi
dng.
Paused khi Activity khng cn l trng tm trn mn hnh nhng vn hin
th trc ngi dng.
Stopped khi mt Activity hon ton b che khut, n s ri vo trng thi
Stopped. Tuy nhin, n vn cn lu tr ton b thng tin trng thi. V n
thng b h thng ng li khi c tnh trng thiu b nh.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

14

Khi chuyn gia cc trng thi, ng dng s gi cc hm callback ng vi cc


bc chuyn:
void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
Biu sau m t trng thi trong vng i ca mt hot ng. Hnh ch nht th
hin cc phng thc Callback m chng ta c th khai bo gi thc thi mt s thao
tc khi hot ng chuyn sang trng thi khc (phng thc Callback l phng thc
c gi li bi mt phng thc khc khi c mt s kin xy ra). Cc trng thi chnh
ca mt hot ng c th hin bi cc hnh vin thuc.
Vng i ca mt hot ng c th c th hin trong nhng qu trnh sau:

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

15

Hnh 3.7 Vng i ca mt hot ng


Ton b thi gian sng ca mt hot ng bt u t li gi u tin ti phng
thc onCreate(Bundle) ti li gi phng thc onDestroy(). Trong qu trnh ny,
mt hot ng s khi to li tt c cc ti nguyn cn s dng trong phng thc
onCreate() v gii phng chng khi phng thc onDestroy() c thc thi.

Thi gian sng c th nhn thy ca mt hot ng bt u t li gi ti phng


thc onStart(), cho ti khi phng thc onStop() ca n c thc thi. Ton b cc
ti nguyn ang c s dng bi hot ng vn tip tc c lu gi, ngi dng c
th thy giao din nhng khng tng tc c vi hot ng do trong qua trnh ny
hot ng khng trng thi chy tin cnh.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

16

Thi gian sng tin cnh ca mt hot ng l qu trnh bt du t khi c li gi


ti phng thc onResume() v kt thc bng li gi ti phng thc onPause().
Trong thi gian ny, hot ng chy tin cnh v c th tng tc vi ngi dng.
3.2.2. Service
3.2.2.1. Khi nim
Mt dch v (service) l cc on m c thc thi ngm bi h thng m ngi
s dng khng thy c. Mi service u c m rng t lp c s l service trong
gi android.app. C th kt ni ti hoc kch hot mt Service thng qua interface
m Service a ra.V d nh mt chng trnh chi nhc, s c vi hot ng cho php
ngi dng duyt danh sch cc bi ht v la chn bi no pht. Tuy nhin, chc
nng chi nhc khng c thit k nh mt hot ng bi chng ta s mun chuyn
qua ca s khc, nh khi son tin nhn th bi nhc vn tip tc c chi. Trong
trng hp ny, ng dng chi nhc s khi to mt dch v bng cch s dng
phng thc Context.startService().
Mt ng dng c th d dng thc hin lin kt ti mt dch v ang chy (thm
ch khi ng nu n cha thc thi) bng phng thc Context.bindService(). Khi
dch v ny s cung cp cho ng dng c ch giao tip vi chng thng qua giao
din gi l IBinder (i vi dch v chi nhc c th cho php dng hoc chuyn qua
bi nhc k tip).
3.2.2.2. Vng i ca mt dch v
Vng i ca mt dch v c hiu l qu trnh hot ng t khi n c to ra
cho ti khi b loi khi h thng. C hai cch thc mt dch v c th c chy
trong h thng:

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

17

Khi h thng c li gi ti phng thc Context.startService(). Trong


trng hp ny, dch v s c thc hin lin tc cho ti khi h thng gi phng
thc Context.stopService().
Khi cc ng dng gi phng thc Context.bindService() to kt ni vi
dch v (dch v s c khi to nu ti thi im n ang khng hot ng). ng
dng s nhn c mt i tng IBinder do dch v tr li c th gi cc phng
thc Callback ph hp truy cp ti cc trng thi ca dch v. Nu do li gi
Context.bindService() m dch v c khi to th n s c thc thi cho ti khi

no kt ni trn (tc l i tng IBinder) vn cn tn ti.

Hnh 3.8: S chuyn trng thi ca Service

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

18

3.2.3. B nhn qung b (Broadcast receivers)


3.2.3.1. Khi nim
B nhn qung b l mt thnh phn khng lm g c nhng n nhn v phn hi
li cc thng bo qung b. Nhiu qung b c ngun gc t m h thng, v d thng
bo thay i mi gi, pin yu, nh chp hay thay i ngn ng. Cc ng dng c
th khi ng qung b, v d cc ng dng khc bit rng d liu c ti v
xong trn thit b v sn sng s dng.
Mt ng dng c th c bt k s lng b nhn qung b no nhn nhng
thng bo quan trng vi n. Tt c cc b nhn qung b c k tha t lp
BroadcastReceiver.

B nhn qung b khng c giao din. Tuy nhin, chng c th khi ng mt


hot ng p li thng tin m n nhn c, hay chng c th s dng
NotificationManager thng bo ngi dng bit. Cc thng bo c th c s ch
ca ngi dng theo cc cch cc nhau nh l sng mn hnh, rung thit b, bt m
thanh no y Thng thng, chng t thng bo trn thanh trng thi, ni ngi
dng c th nhn c thng bo.
3.2.4. Content Provider
3.2.4.1. Khi nim
Cc ng dng c th lu tr d liu ca mnh trong cc tp tin hoc s dng c
s d liu SQLite sn c v.v Content Provider c chc nng cung cp mt tp hp
cc phng thc cho php mt ng dng c th lu tr v ly d liu c qun l bi
content provider .
Content Provider l mt c trng ring ca Android, nh m cc ng dng c
th chia s d liu vi nhau mt cch d dng.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

19

3.2.5. Cc thnh phn kch hot (cc Intent)


Content provider c kch hot khi chng c gi t mt ContentResolver. Ba
thnh phn khc (hot ng, dch v v b nhn qung b) c kch hot bi thng
ip khng ng b t cc intent. Mt intent l mt i tng c kiu Intent cha ni
dung ca thng ip. Vi cc hot ng v dch v, n gi tn hnh ng c yu cu
v xc nh URI ca d liu tc ng ti gia. V d, n c th truyn ti mt yu
cu cho mt hot ng hin th mt nh cho ngi dng hay cho php ngi dng sa
vn bn. Vi b nhn qung b, i tng Intent gi tn ca hnh ng c thng
bo. V d, b nhn qung b c th thng bo cc phn n quan tm l nt chp nh
c bm.
C vi phng thc cho vic kch hot mi thnh phn:
Mt hot ng c khi chy thng qua mt i tng Intent
Context.startActivity()

hay Activity.startActivityForResult(). Hot

ng p li c th theo di intent c to ra bng phng thc getIntent() v


cp nht thng qua phng thc setIntent(Intent). Android gi phng thc
onNewIntent() b qua cc intent n trc n.

Mt hot ng thng bt u hot ng khc. Nu n mun tr li kt qu hot


ng n khi chy, n s gi phng thc startActivityForResult() thay cho
phng thc startActivity(). V d, nu n khi chy mt hot ng m cho php
ngi dng ly mt nh, n c th mun ly kt qu ca nh c chn. Kt qu c
tr v trong mt i tng Intent thng qua phng thc onActivityResult().
Mt dch v c bt u thng qua mt i tng Intent l
Context.startService(). Android gi phng thc onStart() ca dch v v

thng qua i tng Intent ca n.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

20

Tng t, mt intent c th thng qua Context.bindService() thit lp mt


kt ni lin tc gia cc thnh phn v dch v ch. Dch v nhn i tng Intent qua
li gi onBind() (nu dch v cha c chy, bindService() c th chn bt u
n). Cho v d, mt hot ng c th thit lp kt ni vi dch v chi nhc cp
phn trc n c th cung cp cho ngi dng giao din s dng iu khin chi
li. Hot ng s gi bindService thit lp kt ni v sau gi phng thc
nh ngha bi dch v p dng chi li ca khc.
Mt ng dng c th khi to mt qung b thng qua i tng Intent bng
phng thc nh Context.setBroadcast(), Context.setOrderedBroadcast() v
Context.sendStickyBroadcast(). Android chuyn nhng intent ti tt c cc b

nhn qung b no quan tm bng vic gi phng thc onReceive() ca n.


3.2.6. Ngt mt thnh phn
Mt hot ng c th b ngt thng qua vic gi phng thc finish(). Mt
hot ng c th tt mt hot ng khc (hot ng c khi ng vi li gi
startActivityForResult() bng vic gi finishActivity().

ngt mt dch v chng ta c th s dng phng thc stopSelf(), hoc


bng cch gi Context.stopService().
Content provider c kch hot ch khi n p li yu cu t mt
ContentResolver. B nhn qung b c kch hot ch khi n p li mt thng ip
qung b. Chng ta khng cn thit phi tt cc thnh phn ny.
3.2.7. Tp tin khai bo (manifest)
Trc khi c th khi chy mt ng dng thnh phn, n phi xem ng dng bao
gm nhng thnh phn no. Thm na, cc ng dng khai bo cc thnh phn ca n

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

21

trong mt tp tin khai bo ng gi li vo trong gi Android (tp tin .apk cha cc


m ngun, tp tin v ti nguyn).
Tp tin ny c cu trc ca tp tin XML v lun c tn l AndroidManifest.xml
trong mi ng dng. Tp tin ny thc hin mt s chc nng nh thm v khai bo cc
thnh phn ca ng dng, tn cc th vin ng dng cn lin kt ti (ngoi th vin
chun ca Android) v xc nh cc quyn cho ng dng.
Tuy nhin, nhim v chnh ca tp tin khai bo l khai bo cc thnh phn ca
ng dng. Mt hot ng c th c khai bo nh sau:
<?xml version="1.0" encoding="utf-8"?>
<manifest . . . >
<application . . . >
<activity android:name="com.example.project.FreneticActivity"
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
. . . >
</activity>
. . .
</application>
</manifest>

Thuc tnh name ca phn t <activity> l tn cc lp con lp Activity


c ci t, thuc tnh icon v label tr n tp tin ti nguyn cha biu tng
v nhn c hin th cho ngi dng.
Cc thnh phn khc c khai bo theo cch tng t: < service> dch v,
<receiver> b nhn qung b v <provider> content provider. Cc hot ng, dch
v v content provider c th cng c khai bo trong tp tin khai bo hoc c th
c to t ng trong m (nh i tng BroadcastReceiver) v c ng k vi h
thng bng cch gi Context.registerReceiver().

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

22

3.2.8. B lc Intent
Mt i tng Intent c th c tn r rng trong thnh phn ch. Nu c,
Android s tm thnh phn (da trn khai bo trong tp tin khai bo) v kch hot
n. Nhng nu ch c tn khng r rng, Android phi xc nh thnh phn no thch
hp nht p li intent. N thc hin so snh i tng Intent vi b lc intent trong
cc ch c kh nng. Mt thnh phn ca b lc intent cho Android bit loi intent
thnh phn no cn x l. Ging cc thng tin c bn, chng c khai trong tp tin
khai bo. y l mt v d thm hai b lc intent cho mt hot ng.
<?xml version="1.0" encoding="utf-8"?>
<manifest . . . >
<application . . . >
<activity android:name=
"com.example.project.FreneticActivity"
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
. . . >
<intent-filter . . . >
<action android:name=
"android.intent.action.MAIN" />
<category android:name=
"android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter . . . >
<action android:name=
"com.example.project.BOUNCE" />
<data android:mimeType="image/jpeg" />
<category android:name=
"android.intent.category.DEFAULT" />
</intent-filter>
</activity>

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

23

. . .
</application>
</manifest>

B lc u tin l s kt hp ca hnh ng android.intent.action.Main v


danh mc android.intent.category.LAUNCHER l mt v d ph bin. N nh
du li mt Intent v m t li cho b khi chy ng dng, t vo trong danh mc cc
ng dng trn in thoi. Ni theo cch khc, hot ng lm li vo cho ng dng s
c khi chy, ngi dng s thy khi chn khi chy ng dng.
B lc th hai c khai bo hot ng c th thc thi trn mt kiu d liu
c bit.
Mt thnh phn c th c bao nhiu s b lc intent ty thch, mi mt ci li
c khai bo khc nhau cho cc kh nng. Nu n khng c mt b lc no, n c th
c c kch hot bi cc intent khc gi n.
to v ng k mt b nhn qung b trong m ngun, b lc intent to thng
mt i tng ging i tng IntentFilter. Tt c cc b lc khc u c ci t
trong tp tin khai bo.
3.3. Cng c h tr lp trnh Android
3.3.1. Tng quan
B cng c pht trin phn mm Android SDK gm nhiu cng c tr gip cho
vic pht trin ng dng di ng trn nn tng Android. Thnh phn quan trng nht
ca b cng c ny l trnh gi lp Android v b plug-in pht trin ng dng Android
trn Eclipse ADT, bn cnh b SDK cng bao gm cc cng c khc cho vic g
ri, ng gi v ci t ng dng trn trnh gi lp v trn thit b.
Trnh gi lp Android: Thc cht y l mt chng trnh m phng mt thit
b di ng o trn my tnh. Chng ta c th s dng b gi lp ny thit k g ri

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

24

v kim tra ng dng ca mnh nh trn thit b trc khi a chng trnh vo thit b
tht.
Android Development Tools Plugin (cho Eclipse): vit tt l ADT, Plugin ny
h tr cho vic to v g ri cc ng dng v s dng mi trng pht trin tch hp
Eclipse tr nn d dng hn.
Trnh g ri Dalvik Debug Monitor Service (DDMS): gip qun l cc tin
trnh trong b gi lp hoc thit b v tr gip vic g ri ng dng. C th s dng
cng c ny hy cc tin trnh, chn mt tin trnh c th g ri, sinh cc d liu
truy vt, xem b nh heap v thng tin v cc lung, chp nh mn hnh ca trnh gi
lp.
Android Debug Bridge (adb): Cng c ny cho php ci t cc tp tin .apk trn
b gi lp hoc thit b, ng thi h tr truy cp hai i tng ny t ca s dng
lnh.
Android Asset Packaging Tool (aapt): Cng c to tp tin .apk cha cc m
nh phn v ti nguyn ca mt ng dng Android.
Sqlite3: y l cng c truy cp cc tp tin d liu SQLite c to ra v s
dng bi mt ng dng Android.
Dx: y l cng c bin dch cc tp tin .class thnh m bytecode chy trn my
o Dalvik (lu tr di dng tp tin .dex).
Mksdcard: Gip to mt tp tin nh lu tr d liu m ta c th s dng trn b
gi lp, m phng s c mt ca mt th nh ngoi (nh th SD).
Android Virtual Devices (AVD): Cho php chng ta c th to cu hnh thit b
o, m phng cc c im ca b gi lp Android. Vi mi cu hnh, ta c th xc
nh nn tng cho n chy, ty chnh phn cng hay giao din s dng. Mi ty chnh
ca AVD s nh mt thit b c lp vi d liu lu tr ca n, th nh SD, v.v

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

25

3.3.2. To my o trn android


Bc 1: Chn Project, Android SDK and AVD Manager

Hnh 3.9: To my o
Virtual Devices: dng thit lp my o, ty theo nhu cu v chng trnh m
chng ta thit lp cc my o khc nhau. Trong phn bit lm hai nhm l my o
chy Android v my o chy Google APIs.
Installed packages: cc gi packages h tr my o m chng ta ci t.
Available packages: ty chn cc gi packages m bn mun s dng thit
lp my o chng hn android 2.2 hoc googleAPIs API level 8. Chng ta phi ci cc
gi packages mi khi to c my o.
Bc 2: Chn New khi to my o

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

26

Hnh 3.10: Khi to my o


Ty theo nhu cu ca ngi lp trnh m to cc my o cu hnh khc nhau.
y chng ta thit lp mt my o chy trn nn Android 2.2 vi ng dng Google
APIs - API level 8.
Chn Create AVD sau nhp vo my o va mi to v chn Start. Nh vy
chng ta c mt my o phc v cho vic lp trnh.
3.3.3. Xut bn phn mm chy trn android
Bc 1: Nhp phi chut vo project mun to file, chn Android Tools > Export
Signed Application Package. Trn mn hnh s xut hin Export Android
Application, khung ny chng ta chn project export ra file apk. Nu project
khng c li no chng ta chn Next sang mn hnh k tip.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

27

Hnh 3.11: Xut bn phn mm trn Android


y l ln u, nn chng ta chn Create new keystore vi cc thng tin chnh:
Location: th mc lu keystore mi, lu khi save tn keystore tn file
phai c dng [tn file].keystore.
Password v Confirm: to password v xc nhn li n.
Sau chn Next sang mn hnh k tip.
Bc 2:

Hnh 3.12: Nhp thng s cn thit


GVHD: PGS.TS. V Thanh Nguyn
SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

28

mn hnh ny chng ta thit lp cc thng s cn thit cho vic ly m MD5


ng k trn trang ch Google Maps Api, sau khi nhp 5 u tin chng ta nhn Next
hon tt vic to mt keystore ring chy trn my tht.
Bc 3:

Hnh 3.13: Thit lp tn cho file apk


y chng ta thit lp tn v th mc cho file apk cn xut ra, sau khi chn
xong nhn Finish kt thc.
Bc 4: Chng ta tin hnh ly m MD5 v ng k trn trang Google Map vi
file mappro.keystore v nhng thng tin va mi to, sau khi ly Key mi, chng ta
thay th Key c ang dng trn trong chng trnh.
Bc 5: Mt ln na chng ta li tin hnh bc 1 nhng khi ti mn hnh
keystore selection, chng ta la chn Use Existing keytore, chn li mappro.keytore
to bc 1 v nhp password vo.
Bc 6: Tip tc in password ng k khi khi to bc 2.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

29

Hnh 3.14: Nhp password


Sau khi nhp xong chng ta chn Next.
Bc 7: Nh bc 3, vy chng ta c mt file apk hon chnh. Chp file apk
va mi to ra vo my o v tin hnh chy trn n.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

30

Chng 4: GOOGLE MAP API V CC DCH V GOOGLE MAP TRN


ANDROID

Trong th gii web ngy nay, cc gii php bn l mt thnh phn khng th
thiu. Chng ta s dng chng thy v tr ca mi vt, tm v tr ca mt a ch,
ly v thng tin dn ng, v lm nhiu th khc. Hu ht thng tin c mt v tr,
v nu vt no c mt v tr th n c th hin th trn mt bn .
C mt s cng ty cung cp cc gii php v bn nh Yahoo! Maps v Bing
Maps, nhng ph bin nht vn l Google Maps. Thc t theo trang
programmableweb.com, google maps l API ph bin nht trn internet. Theo thng k
ca trang ny thng 5/2010, 43% l s dng Google Maps API.

Hnh 4.15: Hnh nh nhn t v tinh trn Google Maps


Phn ny s trnh by chi tit v API ca Google Maps cng nh s dng v ng
k dch v ny trn di ng c th l trn android.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

31

4.1. ng k API Key t Google Maps


s dng c cc dch v v API ca Google Maps bn cn phi ng k vi
dch v Google Maps v ng vi cc iu khon dch v p dng trc khi bn ly
d liu t Google Maps. iu ny s c p dng khi bn ang pht trin ng dng
ca bn trn my gi lp hoc chun b a ng dng ca bn trin khai n cc thit
b di ng. Vic ng k mt Maps API key rt n gin, min ph, bao gm hai phn:
ng k m MD5 m bn s s dng trong ng dng ca mnh. Service sau
s cung cp cho bn mt Maps API Key.
Thm mt on tham chiu n Maps API trong mi MapView. Bn c th s
dng Maps API Key cho bt k MapView trong bt k ng dng Android,
cung cp ng dng c k kt vi giy chng nhn m MD5 m bn ng
k vi service.
4.1.1. Gii thiu
m bo rng cc ng dng s dng d liu bn mt cch ph hp, Google
Maps Service yu cu ngi pht trin ng dng ng k vi service, ng vi iu
khon v cung cp mt m MD5. i vi m ng k, service cung cp cho chng ta
mt Maps API Key - mt chui ch s xc nh duy nht.
Google Maps Service cng i hi mi MapView xc nh ti service bng cc
s dng Maps Api Key. Trc khi cung cp map cho MapView, Service kim tra Maps
API Key c cung cp bi MapView.
ng k mt Maps API Key, bn cn phi cung cp du MD5 fingerprint m
bn s s dng k vo n xin ca bn.
Chy Keytool vi tham s -list. Bng di y lit k danh sch m bn c th s
dng:

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

32

Keytool
-list
-keystore <keystorename>.keystore
-storepass <password>
-alias <alias_name>
-keypass <password>

M t
In ra m MD5
Tn ca keystore cha key ch
Mt khu cho keystore
Cc b danh cho key to ra cc m MD5.
Cc mt khu cho key.
Bng 4.2: Danh sch keytool

4.1.2. Ly m MD5
Trc tin cn phi xc nh v tr ca file debug.keystore, ng dn thng
c s dng l:
Windows Vista & Windows 7: C:\Users\<user>\.android\debug.keystore.
Windows XP: C:\Documents and Settings\<user>\.android\debug.keystore.
OS X v Linux: ~/.android/debug.keystore.
Nu s dng Eclipse th c th vo Windows->Prefs->Android->Build ly
ng dn.
Sau khi ly c ng dn ca debug.keystore. Bt cmd v chy lnh sau
ly m MD5 fingerprint:
keytool -list -alias androiddebugkey -keystore
<path_to_debug_keystore>.keystore -storepass android -keypass
android

Kt qu ca dng lnh trn nh sau:


46:2C:DD:3F:5A:4E:97:6E:6E:7F:DD:A3:AD:90:FB:73

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

33

4.1.3. Ly key Google Maps API


Chng ta truy cp vo ng dn sau http://code.google.com/android/maps-apisignup.html v lm theo cc bc:
Nu cha c ti khon ca google th cn to mt ti khon mi.
ng cc iu khon t Android Maps API.
Chp m MD5 to trn vo khung v chn Generate API Key, trang
web ny s to cho bn mt key.
Sau khi ng k vi dch v Google Maps v c c mt Maps API Key,
bn phi b sung thm cho cc i tng MapView trong ng dng ca bn.
i vi cc yu t <MapView> khai bo trong cc tp tin b tr XML, thm
Maps API chnh l gi tr ca mt thuc tnh c bit - Android:apiKey.
<com.google.android.maps.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="example_Maps_ApiKey_String"/>

4.2. Cc tham s truy cp trong Google Maps


truy cp thng tin d liu t Google Maps chng ta cn bit c tham s truy
cp ca url cng nh cc quy lut truy cp. Di y l danh sch mt s tham s c
th truyn vo maps.google.com. Chng ta c th truyn nhiu tham s nu mun
Google Maps hin th thng tin ch ng.
4.2.1. Cc tham s chung
Tham s q=
Query bt c nhng g truyn trong tham s ny s c i x nh nhng g
c nhp vo khung truy vn trn trang maps.google.com. C th:

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

34

Mt a ch chnh xc c tm thy s c nh du v mt hp thoi thng


tin c hin th ti im c th .
Tn mt thnh ph, hay phn na ch s u tin ca mt m th tn c
truyn vo th khu vc ny s c nh du v mt hp thoi thng tin.

Mt v tr chnh xc c th c ch nh bng kinh , v dng thp phn


(52.123N, 2.456W hay 52.123, -2.456), , pht, giy (52722.8N,227
21.6W hay 52722.8, -22721.6) hay v pht (527.38N, 227.36W hay
527.38,-227.36).

Tham s truyn vo to v from th tnh nng ch ng s c kch hot.

Tham s truyn vo near hay loc th tnh nng tm kim local s c kch
hot. Mt v tr cng c th c ch nh sau ch @ dng thp phn (@52.123,
-2.456). dng ny kt qu tr v s c mc phng to/thu nh thp hn so
vi dng truy vn bnh thng khng c @. S dng dng ny s gy kh khn
vi cc la chn khc ca tham s truy vn. K hiu @ thay v near hay
loc th s dn n ch mt kt qu c hin th. Hy so snh cu truy vn:
Church near Hallows Road Blackpool, Lancashire s tr v hn 1000 kt qu
trong khi vi cu truy vn Church @ Hallows Road Blackpool, Lancashire ch
tr v 1 kt qu.

mt

hnh

nh

du

chn

ti

mt

tr

bt

k,

q=10+Downing+Str+is+not+here@51.50335,-0.227721.

y khng c l tn mt quc gia, nu khng th khng c maker no c


hin th, nhng n c th rng khi ta c s dng trong cu truy vn.
Vic thm mt nhn () rt hu ch gi cho Google Maps ta cung cp
c s dng. Hy xem xt mt s cu truy vn di y:

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

35

http://maps.google.com/maps?q=24.197611,120.780512: Rt khng

may l v tr ca chng ta s xut hin nm gn mt vi v tr khc


Misleading Distracting Known Point.
http://maps.google.com/maps?q=Dan@24.197611,120.780512: Nhn

c m rng n mt vi tn sn bay khc (Mc du v tr khng vn


khng thay i)
http://maps.google.com/maps?q=24.197611,120.780512+(Dan):

Dng ny c v an ton cho trong vic loi b cc kt qu m rng.


http://maps.google.com/maps?q=loc:24.197611,120.780512:

Mt

dng truy vn khc nhng cng lm vic hiu qu.


Tham s near=
C th c dng nh mt phn ca mt cu truy vn thay v t mi th vo q=
Tham s g=
Mt a ch/v tr, cung cp thm ng cnh ph cho tham s q. Google Maps
chnh n lu thng tin tm kim ti tham s ny. Lu rng: nu ln u tin tm
kim n c th cha v tr bt u.
4.2.2. Ch tm kim
mrt = ch r loi tm kim:

mrt= all: yu cu mi th

mrt=loc: tm kim v tr. Cn c tham s q=

mrt=yp: tm kim vic kinh doanh. S cn tham s q=

mrt=websearch: cc trang web lin quan.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

36

mrt= realestate: tm kim bt ng sn

mrt =ds: cc bn lin quan ch s Google ca GeoRSS

start= B qua thng tin u tin c tm thy.


num= Hin th s lng kt qu c tm thy. Dy hp l t 0-20.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

37

4.2.3. V tr
Kinh , v trung tm bn . Ch chp nhn ta thp phn. Nu s
ll=

dng tham s ny m khng c cu truy vn, th bn c tr n v tr


trung tm ti im c cho nhng khng hin th maker hay ca s thng
tin.
Kinh , v ca im t vic tm kim kinh doanh c thc hin. Bn

sll=

c th s dng tham s ny thc hin mt tm kim kinh doanh ngoi


mt phng dc tm.
Tnh xp x lat/long. Mc phng to/thu nh s c iu chnh cho va

spn

nu khng c tham s z=. C th s dng cng c Mapki tm kinh v


v .
y l mt iu huyn b. N nhn vo 3 s c cch bi du phy. Hai
s u tin (biu din v v kinh c nhn ln gp 1000000 ln)

latlng=

c b qua. S th ba xem nh l s ni b Google Company ID cho


doanh nghip c bit.
V d: latlng=latlng=0,0,14944637421527611642 biu din cho

cid=

Blackpool Community Church.


Ging nh kinh v v , nhng to ra mt kch thc bn khc. N
nhn vo 3 s cch nhau bi du phy.
Dy cc gi tr geocode c m ha cho cc im ng i c s
dng trong dn ng. Xut hin khi cc im dn ng trong from: A
to: B khng r rng.
V d:

geocode=

&saddr=Were+St&daddr=Kings+Hwy+to:Princes+Hwy+to:Princes+Hw
y+to:Monaro+Hwy+to:35.43483,149.112175&hl=en&geocode=FbBP4_0dSEXjCA
%3BFWIj4_0dpMDtCA%3BFe4g3_0dunvzCA%3BFfBf0P0dEGzuCA
%3BFSoL1_0dtorjCA%3B l kt qu cui cng t vic ghp cc gi tr cho

ca mi im ng i vi %3B.
GVHD: PGS.TS. V Thanh Nguyn
SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

38

Gii hn kt qu vi bn knh xc nh. Cn c tham s sll hay im trung

Radius

tm c th thc hin.
Bng 4.3: Cc tham s truy xut v tr

4.2.4. Hin th bn
t= loi bn . Cc la chn gm c: m (bn -map), k (v tinh), h (hn

tp), p (a hnh vt cht), e (GoogleEarth).


z= thit lp ch phng to thu nh (phm vi t 1 n 20).
Layer = kch hot overlay. Cc la chn sn c t (traffic giao thng), c

(street view).
lci = kch hot cc lp vt b mt, cch nhau du phy:

com.panoramio.all: Hnh nh

com.youtube.all: Video (t YouTube)

org.wiikipedia.en: Wikipedia (ting Anh)

com.google.ugc.c752d13e87c4fbd7 : Webcam

bike: tuyn ng xe p

view= c th c s dng chn xem kiu ch ( view=text) hay xem kiu

bn (view=map).
4.2.5. Dn ng
saddr= a ch ngun. S dng tham s ny khi yu cu dn ng li xe. Khi

pht trin trn nn tng di ng, s dng MyLocation (ta GPS) ta thit
lp saddr trng i vi Android, i vi iPhone, thit lp saddr l Current
%20Location.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

39

daddr= cc a ch ch. S dng khi yu cu thng tin dn ng.


dirflg= loi ng

dirflg=h: chuyn sang ch tm kim Trnh ng cao tc (Avoid

Highway).

dirflg=t: Chuyn sang ch tm kim Trnh trm thu ph (Avoid

Tolls)

dirflg=r: chuyn sang ch tm kim Vn ti cng cng (Public

Transit), ch lm thc hin c ti mt s khu vc.

dirflg=w: dn ng cho ngi i b

dirflg=b: dn ng cho xe p ch mt s khi vc.

Doflg = n v khong cch. (mc nh n v ang lu hnh ca nc hin

ti)

doflg=ptk: kilomet

doflg=ptm: dm (mile)

4.2.6. Qun l thng tin u ra


hl = ngn ng ca host. Ch mt s ngn ng c h tr. V d: s dng

ting vit ta chn hl=vi.


ie= c th c s dng ch nh r tp hp m ha k t u vo. V d:
ie=UTF8.

ie = c th c s dng ch nh r tp hp m ha k t u vo.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

40

output = nh dng d liu xut.

output=html: s dng nh dng trang Google Local phong cch c

trc khi c hp nht vi Google Maps.

output =kml: xut ra mt file KML cha thng tin biu din bn

hin ti.

output=embed: xut ra file HTML ph hp cho vic tch hp vo cc

site cung cp th ba.

output = dragdir tr v mt i tng JSON cha geocode c

chuyn i v mt tp nhiu ng thng s dng trong tham s saddr


(a ch bt u ca tuyn ng) v daddr (im cui ca tuyn ng).
v = khi ouput=kml c chn th tham s ny ch r phin bn ca file kml.

Mc nh t phin bn 2.0 n 2.2.


4.3. File thng tin KML
KML l mt nh dng file hin th d liu a l trong mt trnh duyt Earth
nh Google Earth, Google Maps, Google Maps cho di ng. KML s dng mt cu
trc da trn tag vi cc thnh phn lng nhau v cc thuc tnh v c da trn
chun XML. ly c d liu t google map tr v chng ta c th phn tch v c
ra cc thng tin cn thit.
4.3.1. Placemark
Mt Placemark l mt trong nhng tnh nng c s dng ph bin trong
Google Earth. N nh du mt v tr trn b mt ca Earth, s dng mt icon hnh ci
inh mu vng. Mt Placemark n gin nht ch gm mt thnh phn < Point>, ch
r v tr ca Placemark. Chng ta c th ch r tn v mt icon ty cho Placemark,

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

41

v cng c th thm cc thnh phn hnh hc vo n. Di y l mt file code


Placemark n gin:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Placemark>
<name>Simple placemark</name>
<Point>
<description>Attached to the ground. Intelligently places
itself at the height of the underlying terrain.</description>
<coordinates>
-122.0822035425683,37.42228990140251,0
</coordinates>
</Point>
</Placemark>
</kml>

Cu trc file c chia nh sau:


Phn u l thng tin ca file XML. y l phn nm dng th nht ca

mi file kml. Khng c khong trng hay k t no xut hin trc dng ny.
Mt phn khai bo v namespace KML. y l dng th 2 trong mi file

KML 2.2.
Mt i tng Placemark cha cc thnh phn sau:

Mt tag name c s dng nh mt tn cho Placemark.

Mt tag description xut hin trong balloon nh km vo


Placemark.

Mt tag Point ch ra v tr ca mt Placemark trn b mt ca Earth


(longitude, latitude, v mt thuc tnh ty chn altitude).

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

42

4.3.2. ng i (Path)
Nhiu loi ng i khc nhau c th c to ra trong Google Earth. Trong
KML, mt ng i c to ra bi thnh phn <LineString>. Hy xem mt on
code trong trong file KML i y chng ta s thy ng i c to ra nh th no:
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document><name>Paths</name>
<description>Examples of paths. Note that the tessellate tag
is by default
set to 0. If you want to create tessellated lines, they must
be authored
(or edited) directly in KML.</description>
<Style id="yellowLineGreenPoly">

<LineStyle>
<color>7f00ffff</color>
<width>4</width></LineStyle>
<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>
</Style>
<Placemark>
<name>Absolute Extruded</name>
<description>Transparent green wall with yellow
outlines</description>
<styleUrl>#yellowLineGreenPoly</styleUrl>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>
<altitudeMode>absolute</altitudeMode>
<coordinates> -112.2550785337791,36.07954952145647,2357
-112.2549277039738,36.08117083492122,2357

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

43

-112.2552505069063,36.08260761307279,2357
-112.2564540158376,36.08395660588506,2357
-112.2580238976449,36.08511401044813,2357
-112.2595218489022,36.08584355239394,2357
-112.2608216347552,36.08612634548589,2357
-112.262073428656,36.08626019085147,2357
-112.2633204928495,36.08621519860091,2357
-112.2644963846444,36.08627897945274,2357
-112.2656969554589,36.08649599090644,2357
</coordinates>
</LineString>
</Placemark>
</Document>
</kml>

4.3.3. Truy xut thng tin d liu t file KML


truy xut thng tin t file KML m google map tr v ta s dng XML DOM.
y l m hnh i tng v giao din lp trnh chun cho vn bn XML. XML DOM
nh ngha cc i tng v thuc tnh ca tt c thnh phn XML, v cc phng thc
(interface) truy cp chng.
Truy xut thng tin a im (Places)
Ta hy xem xt on code di ly v thng tin a im
ArrayList<PlaceModel> lstPlaceMode = new
ArrayList<PlaceModel>();
//Build url
StringBuilder urlString = new StringBuilder();
urlString.append("http://maps.google.com/maps?q=");
urlString.append(keyword); //ni dung tm kim
urlString.append(Double.toString(lat));
urlString.append(",");

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

44

urlString.append(Double.toString(lng));
urlString.append("&num=");
urlString.append(Integer.toString(num));
urlString.append("&ie=UTF8&output=kml");
//Ly v file kml (xml). V c thng tin
Document doc = null;
HttpURLConnection urlConnection= null;
URL url = null;
try {
//Khai bo kt ni
url = new URL(urlString.toString());
urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);

urlConnection.connect();
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(urlConnection.getInputStream());
if(doc.getElementsByTagName("Placemark").getLength()>0)
{
for(int i=0;
i<doc.getElementsByTagName("Placemark").getLength(); i++)
{
PlaceModel placeModel = new PlaceModel();
//Ly thng tin tn ATM
String name = doc.getElementsByTagName("Placemark")
.item(i).getChildNodes().item(0)
.getFirstChild().getNodeValue();
//Get the address of ATM

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

45

String address =
doc.getElementsByTagName("Placemark")
.item(i).getChildNodes().item(2)
.getFirstChild().getNodeValue();
placeModel.setName(name);
placeModel.setAddress(address);
lstPlaceMode.add(placeModel);
}
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
catch (SAXException e)
{
e.printStackTrace();
}

u tin chng ta n i tng PlaceModel y l i tng cha cc


thng tin tr v gm: tn a im (name), a ch ca a im (addresss) v ta
trn bn (lat & lng).
on code:
StringBuilder urlString = new StringBuilder();

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

46

urlString.append("http://maps.google.com/maps?q=");
urlString.append(keyword); //ni dung tm kim
urlString.append(Double.toString(lat));
urlString.append(",");
urlString.append(Double.toString(lng));
urlString.append("&num=");
urlString.append(Integer.toString(num));
urlString.append("&ie=UTF8&output=kml");

y l ni chng ta s xy dng url cho vic ly thng tin t Google Map trong
q=keyword l a im chng ta s tm kim, num= s lng a im ti a c
tr v, output=kml nh dng file tr v ( y chng ta s ly v file KML x l).
Chng ta c th thm nhiu tham s khc vo nu mun.
Tip theo:
String name =
doc.getElementsByTagName("Placemark").item(i).getChildNodes().i
tem.getFirstChild().getNodeValue();

on code ny s c thng tin t tag <name> trong file, v tng t:


//Get the address of ATM
String address = doc.getElementsByTagName("Placemark")
.item(i).getChildNodes().item(2)
.getFirstChild().getNodeValue();

S c thng tin t <address> trong file KML.


Di y l node thng tin trch ra t file KML tr v:
<Placemark>
<name>HSBC</name>
</Snippet>
<Snippet><![CDATA[No. 6 Nh Th, Hoan Kiem, Hanoi,
Vietnam<br/>]]>

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

47

<address>No. 6 Nh Th, Hoan Kiem&lt;br/&gt;Hanoi, Vietnam


</address>
<StyleMap>
<Pair>
<key>normal</key>
<Style>
<IconStyle>
<Icon>
<href>http://maps.gstatic.com/intl/en_ALL/mapfiles/kml/paddle/A
.png</href>
</Icon>
<hotSpot x="0.500000" y="0.000000"
xunits="fraction" yunits="fraction" />
</IconStyle>
<ListStyle>
<ItemIcon>
<href>http://maps.gstatic.com/intl/en_ALL/mapfiles/kml/paddle/A
-lv.png</href>
</ItemIcon>
</ListStyle>
</Style>
</Pair>
<Pair>
<key>highlight</key>
<Style>
<IconStyle>
<scale>1.300000</scale>
<Icon>

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

48

<href>http://maps.gstatic.com/intl/en_ALL/mapfiles/kml/paddle/A
.png</href>
</Icon>
<hotSpot x="0.500000" y="0.000000"
xunits="fraction" yunits="fraction" />
</IconStyle>
<ListStyle>
<ItemIcon>
<href>http://maps.gstatic.com/intl/en_ALL/mapfiles/kml/paddle/A
-lv.png</href>
</ItemIcon>
</ListStyle>
</Style>
</Pair>
</StyleMap>
<Point>
<coordinates>105.850385,21.029302,0</coordinates>
</Point>
</Placemark>

Truy xut thng tin ng i (driving direction)


Tng t on code di y s c thng tin tp hp cc im ca mt ng i
t file KML m google map tr v. Trong ta thy ta s dng t kha saddr v
daddr l a im ngun v a im ch ca on ng.
// Khai bo thng tin url n google map
StringBuilder urlString = new StringBuilder();
urlString.append("http://maps.google.com/maps?f=d&hl=en");
urlString.append("&saddr=");//from

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

49

urlString.append(Double.toString((double)src.getLatitudeE6()/1.
0E6 ));
urlString.append(",");
urlString.append(

Double.toString((double)src.getLongitudeE6()

/1.0E6 ));
urlString.append("&daddr=");//to
urlString.append( Double.toString((double)dest.getLatitudeE6()/
1.0E6 ));
urlString.append(",");
urlString.append( Double.toString((double)dest.getLongitudeE6()
/1.0E6 ));
urlString.append("&ie=UTF8&0&om=0&output=kml");
Log.d("xxx","URL="+urlString.toString());
//Ly v file kml v c thng tin ta
Document doc = null;
HttpURLConnection urlConnection= null;
URL url = null;
try
{
url = new URL(urlString.toString());
urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(urlConnection.getInputStream());

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

50

if(doc.getElementsByTagName("GeometryCollection").getLengt
h()>0)
{
String path =
doc.getElementsByTagName("GeometryCollection").item(0).getFirst
Child().getFirstChild().getFirstChild().getNodeValue() ;
String [] pairs = path.split(" ");
String[] lngLat = pairs[0].split(",");
// lngLat[0]=longitude lngLat[1]=latitude lngLat[2]=height
// src
GeoPoint startGP = new GeoPoint((int)
(Double.parseDouble(lngLat[1])*1E6),(int)
(Double.parseDouble(lngLat[0])*1E6));
mMapView01.getOverlays().add(new MyOverLay(startGP,startGP,1));
GeoPoint gp1;
GeoPoint gp2 = startGP;
for(int i=1;i<pairs.length;i++)
{
lngLat = pairs[i].split(",");
gp1 = gp2;
gp2 = new GeoPoint((int)(Double.parseDouble(lngLat[1])*1E6),
(int)(Double.parseDouble(lngLat[0])*1E6));
mMapView01.getOverlays().add(new MyOverLay(gp1,gp2,2,color));
}
mMapView01.getOverlays().add(new
MyOverLay(dest,dest, 3));
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

51

catch (IOException e)
{
e.printStackTrace();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
catch (SAXException e)
{
e.printStackTrace();
}

Di y l thng tin cc ta ca mt tuyn ng m ta phi lc ra v li


trn bn :
<GeometryCollection>
<LineString>
<coordinates>
106.702430,10.771050,0.000000
106.701460,10.773190,0.000000
106.700420,10.775660,0.000000
106.699900,10.776730,0.000000
106.695820,10.780500,0.000000
106.695820,10.780500,0.000000
106.698820,10.783700,0.000000
106.701610,10.786540,0.000000
106.705650,10.790870,0.000000
106.705650,10.790870,0.000000
106.707400,10.792750,0.000000
106.707400,10.792750,0.000000
106.709900,10.795390,0.000000
106.710040,10.795630,0.000000

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

52

106.710710,10.797360,0.000000
106.710930,10.798130,0.000000
106.711030,10.798640,0.000000
106.711270,10.801140,0.000000
106.711270,10.801140,0.000000
106.711470,10.801160,0.000000
106.711620,10.801270,0.000000
106.712340,10.801300,0.000000
106.713260,10.801220,0.000000
106.714010,10.801050,0.000000
106.716180,10.800350,0.000000
106.717940,10.799420,0.000000
106.717940,10.799420,0.000000
106.717860,10.799750,0.000000
106.716830,10.800260,0.000000
</coordinates>
</LineString>
</GeometryCollection>

4.4. Mt s API ph bin ca Google Maps trn Android


4.4.1. Lp GeoPoint
y l mt lp khng thay i tng trng cho mt cp kinh v v , c
lu kiu s nguyn. v c cc im trn bn ta cn phi s dng lp ny
chuyn i cc ta im.
Constructor
public GeoPoint(int latitudeE6, int longitudeE6): Khi to mt i

tng GeoPoint vi kinh v v c cho, n v microdegree


(degrees*1E6)
Cc phng thc
Tn phng thc

M t

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

53

public int getLatitudeE6()

Tr v v ca i tng GeoPoint n v

public int getLongitudeE6()

microdegrees
Tr v kinh ca i tng GeoPoint n

public java.lang.String

v microdegrees
Overrides phng thc toString() ca

toString()

lp java.lang.Object
Overrides phng thc

public boolean
equals(java.lang.Object object)
public int hashCode()

equals() ca

lp java.lang.Object
Override phng thc hashCode() ca lp
java.lang.Object

Bng 4.4: Cc phng thc trong lp GeoPoint


V d:
float lat = -23.4456f;
float lng = 45.44334f;
GeoPoint gp = new GeoPoint((int)(lat * 1E6), (int)(lng * 1E6));

on code trn s chuyn ta lat, lng thnh ta i tng GeoPoint c


th v c trn bn .
4.4.2. OverlayItem & ItemizedOverlay
OverlayItems c s dng cung cp tnh nng nh du bng hnh nh vo

MapViews thng qua lp ItemizedOverlay.


ItemizedOverlays cung cp phng thc tin li cho vic thm cc hnh nh

nh du vo mt bn , n cho php gn mt hnh nh nh u v thng tin lin


quan (kiu text) vo mt v tr a l c th. Thc th ItemizedOverlay iu khin
cng vic v, sp xp, s kin click, v ti u ha vic sp xp mi hnh OverlayItem.
thm mt hnh nh nh du ItemizedOverlay vo bn ta to mt lp
mi k tha tha lp ItemizedOverlay<OverlayItem>.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

54

Cn phi gi hm populate() rng buc vic to mi OverlayItem, phng


thc populate() phi c gi bt c ni no m d liu ca OverlayItem thay i.
V d:
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;
public class MyItemizedOverlay extends
ItemizedOverlay<OverlayItem> {
public MyItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
populate();
}
@Override
protected OverlayItem createItem(int index) {
switch (index) {
case 1:
Double lat = 37.422006*1E6;
Double lng = -122.084095*1E6;
GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());
OverlayItem oi;
oi = new OverlayItem(point, "Marker", "Marker Text");
return oi;}
return null;
}
@Override
public int size() {
// Return the number of markers in the collection
return 1;

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

55

thm mt ItemizedOverlay vo bn , to mt thc th mi (truyn hnh


nh nh u Drawable s dng cho mi v tr dnh du) v thm vo danh sch
Overlay ca bn .

List<Overlay> overlays = mapView.getOverlays();


MyItemizedOverlay markers = new
MyItemizedOverlay(r.getDrawable(R.drawable.marker));
overlays.add(markers);

Lp OverlayItem
Cc thnh phn:
Tn bin
Static int
ITEM_STATE_FOCUSED_MASK
Static int
ITEM_STATE_PRESSED_MASK
Static int
ITEM_STATE_SELECTED_MASK
protected

M t
Ch ra trng thi focus ca overlayitem
Ch ra overlayitem trong trng thi c
nhn
Ch ra overlayitem trong trng thi c
chn

android.graphics.drawable.Drawa
ble mMaker
protected GeoPoint mPoint
Protected java.lang.String
mSnippet
protected java.lang.String
mTitle

V tr ca item
Thng tin trch gn ca item
Tiu item

Bng 4.5: Cc thnh phn lp OverlayItem


Cc phng thc:
Tn phng thc
public void setMarker
(android.graphics.drawable.Drawable
marker)

M t
Thit lp marker c s dng khi v mt
item trn bn . Nu maker thit lp null
th maker mc nh s c v. Maker c

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

56

th c v bng cc kt hp gi tr null,
cc thuc tnh R.attr.state_pressed,
R.attr.state_seleted v
R.attr.state_focused.
public

Tr v maker c s dng khi v item ny

android.graphics.drawable.Drawable
getMarker(int stateBitset)

trn bn . Khi gi tr tr v l null iu


ny c ngha l maker mc nh c s
dng. Cc maker khc nhau c tr v ty
thuc vo cc tnh trng khc nhau ca

public static void setState


(android.graphics.drawable.Drawable
drawable, int stateBitset)
public java.lang.String getTitle()
public java.lang.String

maker.
Thit lp mt drawable tng ng trng
thi c cho.
Tr v tiu ca overlay
Tr v thng tin m t ca overlay

getSnippet()
public GeoPoint getPoint()
public java.lang.String
routableAddress()

Tr v i tng GeoPoint ca overlay


Tr v v tr ca item nh dng maproutable

Bng 4.6: Cc phng thc lp OverlayItem


Lp ItemizedOverlay<Item extends OverlayItem>
L mt lp c s cho mt Overlay m cha mt danh sch OverlayItems. iu
khin vic sp xp Bc-n-Nam cho vic v trn bn , to ra mt span, v mt
marker cho mi im.
Constructor
public
ItemizedOverlay(Drawable
defaultMarker)

To mt ItemizedOverlay mi
Parameters:
defaultMarker - Mt Drawable c v trn bn

cho mi item trong overlay

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

57

Bng 4.7: Phng thc khi to lp ItemizedOverlay


Cc phng thc
Phng thc
protected static Drawable
boundCenterBottom(Drawable balloon)

protected static Drawable


boundCenter(Drawable balloon)

protected abstract Item


createItem(int i)

public abstract int size()

M t
iu chnh phm vi ca mt drawable theo
(0,0) l pixel v tr trung tm ca hng
cui ca drawable.
iu chnh phm vi ca mt drawable theo
(0,0) l pixel v tr trung tm ca
drawable.
Phng thc ny c nh ngha bi lp
con to cc item thc s. Hm ny ch
c gi t populate()
S lng item trong overlay.

public GeoPoint getCenter()


protected int
getIndexToDraw(int drawingOrder)

Tr v bc ca item vi index c cho


sn. Mc nh, cc item c xp loi bi
v . Lp k tha c th override phng
thc ny thay i th t v ra.

public void draw(Canvas canvas,


MapView mapView, boolean shadow)

V mt maker trn mi item. Phng thc


populate() phi c hy b trc.

protected final void populate()

Phng thc ny dng thc hin tt c x


l trn mt ItemizedOverlay mi. Cc
lp k tha cung cp cc item thng qua
phng thc createItem(int). Lp k
tha cn gi phng thc ny khi n c d
liu.
public Item getFocus()

Tr v item hin ti c focus, hay gi tr

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

58

null nu khng c item no c focus


public final Item
getItem(int position)
public boolean onTap(GeoPoint p,

Tr v item t index

iu khin mt s kin tap.


Bng 4.8: Cc phng thc to lp ItemizedOverlay

MapView mapView)

4.4.3. Lp MapController
MapController c s dng iu khin bn , cho php thit lp v tr gia
ca bn v cc mc phng to/thu nh. C mt s phng thc c nh ngha cho
vic phng to, thu nh thng quan lp ny. Android nh ngha 21 mc phng to/thu
nh cho bn . mc 1, xch o ca tri t di 256 pixels. Mi ln phng to th con
s ny tng gp 2 ln.
C th tham chiu n controller ca MapView bng cch s dng phng thc
getController().
MapController mapController = myMapView.getController();

Cc v tr cc im bn ca cc lp mapping trn Android biu din bng cc


i tng GeoPoint, cha kinh v v c o n v microdegree. chuyn
thnh microdegree ta nhn s ny vi 1E6 (1.000.000).
Trc khi c th s dng ta lu trong i tng Location, cn chuyn ta
ny thnh microdegree v lu li thnh i tng GeoPoint.
Double lat = 37.422006*1E6;
Double lng = -122.084095*1E6;
GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());

nh v v tr gia v iu chnh kch thc bn chng ta s dng phng


thc setCenter v setZoom c trong i tng MapController ca MapView.
mapController.setCenter(point);
mapController.setZoom(1);

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

59

Phng thc setCenter() s nhy n mt v tr mi. chuyn ng ny mt


cch mt m chng ta s dng thm phng thc animateTo().
mapController.animateTo(point);

Di y l on code m t cch s dng lp ny MapController


u tin chng ta thit k giao din cho ng dng nh sau:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk
/res/android"
android:orientation="vertical"
android:layout_height="fill_parent">
<TextView android:id="@+id/myLocationText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"/>
<com.google.android.maps.MapView
android:id="@+id/myMapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="myMapKey"/>
</LinearLayout>

Cu hnh MapView v lu mt tham chiu n MapController ca n.


MapController mapController;

@Override
public void onCreate(Bundle savedInstance State) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Ly mt tham chiu n MapView

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

60

MapView myMapView = (MapView)findViewById(R.id.myMapView);


// Ly v Controller ca MapView
mapController = myMapView.getController();
// Cu hnh cc la chn hin th ca bn
myMapView.setSatellite(true);
myMapView.setStreetView(true);
myMapView.displayZoomControls(false);
// Phng to
mapController.setZoom(17);

Cc phng thc trong lp MapController


Phng thc
public void stopPanning()

M t
t li tnh trng ca pan bn ng yn
mt ch. iu ny cn thit nu chng ta nhn
mt s kin keydown nhng khng nhn s kin

public boolean
onKey(android.view.View v,
int keyCode,
android.view.KeyEvent event

key-up tng ng
X l cc s kin nhn phm v chuyn cc s
kin ny thnh pan ph hp vi map. c
nh ngha trong lp View.OnKeyListener.

)
public void

Chuyn bn v pha im c chn

animateTo(GeoPoint point)
public void

Chuyn bn v im c chn. Nu khi s

animateTo(GeoPoint point,an
droid.os.Message message)

chuyn ng n im cui cng, mt thng ip


s c gi i (nu khng phi null).

public void
animateTo(GeoPoint point,
java.lang.Runnable runnable
)
public void scrollBy(int x,
int y)

Cun bn theo lng pixel c cho sn.


Parameters
x- cun theo chiu ngang

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

61

y cun theo chiu dc


t gc nhn bn n im c cho. S

public void
setCenter(GeoPoint point)

khng c bt k chuyn ng no c thc


hin.
Dng bt k mt chuyn ng no ang c

public void
stopAnimation(boolean jumpT
oFinish)
public int

thc hin.
Thit lp mc phng to, thu nh ca bn .

setZoom(int zoomLevel)

Tt c gi tr s c nm gia 1 v 21, mc du
khng phi tt c khu vc u c cc khi vt
mc cao hn cc mc zoom. Hm ny ch thit
lp mc zoom mt cch trc tip.
S dng zoomIn() hay ZoomOut() thay i
mc zoom ca bn .
iu chnh phng to thu nh ca bn v

public void
zoomToSpan(int latSpanE6,
int lonSpanE6)

vy khong cch c trao ca kinh v v


s c hin th. Bi v zoom ch c th ly v
cc mc ring l, v bi v t l kch c mn hnh
ca bn c th khng khp vi t l c cho,

public boolean zoomIn()


public boolean zoomOut()
public boolean

nn cht lng khp s c th bin i.


Phng to mt n v.
Thu nh n v.
Phng to 1 mc.

zoomInFixing(int xPixel,
int yPixel)
public boolean

Thu nh mt mc.

zoomOutFixing(int xPixel,
int yPixel)

Bng 4.9: Cc phng thc lp MapController

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

62

4.4.4. MapView & MapActivity


Nhiu cng ngh bn trong Android da trn control MapView v phn m
rng android.app.Activity c gi l MapActivity. Lp MapView v
MapActivity l thnh phn ct li ca bn trn Android n cho php hin th v thao
tc mt bn trn Android. Mt trong nhng iu phi nh v 2 lp ny l chng lm
vic cng nhau. c bit s dng MapView, bn cn khai bo bn trong mt
MapActivity. Thm vo s dng c MapView bn cn cung cp api-key, vic
ly api-key c cp phn trn. Ngoi ra ng dng ca bn cn truy cp c
internet.

Hnh 4.16: V d ch hin th trn bn


Hnh trn cho thy mt ng dng hin th mt bn ch street-view. ng
dng cng cho thy r phng to, thu nh v thay i ch nhn ca bn nh th
no. Layout ca ng dng c thit k nh bn di:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

63

android:layout_height="fill_parent">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:id="@+id/zoomin"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="+"/>
<Button android:id="@+id/zoomout"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="-"/>
<Button android:id="@+id/sat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Satellite"/>
<Button android:id="@+id/street"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Street"/>
<Button android:id="@+id/traffic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Traffic"/>
</LinearLayout>
<com.google.android.maps.MapView android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:apiKey="07vhL0usFXryRakmo2A4t8aKViWwKyGJGEDqpdg"
/>
</LinearLayout>

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

64

Di y l mt on code mu cho ng dng bn trn


import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
public class MapViewDemoActivity extends MapActivity
{
private MapView mapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);
mapView = (MapView)findViewById(R.id.mapview);
Button zoominBtn = (Button)findViewById(R.id.zoomin);
Button zoomoutBtn = (Button)findViewById(R.id.zoomout);
Button satBtn = (Button)findViewById(R.id.sat);
Button streetBtn = (Button)findViewById(R.id.street);
Button trafficBtn = (Button)findViewById(R.id.traffic);
// Phng to
zoominBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view)
{
mapView.getController().zoomIn();
}});
// Thu nh
zoomoutBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view)
{

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

65

mapView.getController().zoomOut();
}});
// satellite
satBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view)
{
mapView.setStreetView(false);
mapView.setTraffic(false);
mapView.setSatellite(true);
}});
// kiu hin th street
streetBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view)
{
mapView.setTraffic(false);
mapView.setSatellite(false);
mapView.setStreetView(true);
}});
// kiu hin th traffic
trafficBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view)
{
mapView.setSatellite(false);
mapView.setStreetView(false);
mapView.setTraffic(true);
}});
}
@Override
protected boolean isRouteDisplayed() {

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

66

return false;
}
}

Nh hin th trn, hin th MapView cng s dng onCreate() khng khc so


vi hin th cc control khc. phng to, thu nh bn s dng lp MapController
ca MapView. lm c iu ny bng cch mapView.getController v sau
gi phng thc thch hp zoomIn() hay zoomOut().
MapView h tr mt s ch hin th: map, street, satellite v traffic.
Map l ch mc nh. Cht hin th Street cha thng tin ng i nh tn

ng. Ch Satellite hin th bn ch v tinh. Ch Traffic hin th


thng tin giao thng trn bn . Lu rng ch Traffic ch c h tr trn mt
s tuyn ng cao tc chnh. thay i ch hin th, bn phi gi cc phng
thc thch hp c thit lp l true v cc ch khc l false.
Lp MapView
Mt View hin th mt bn (d liu c ly v t dch v Google Maps). Khi
c focus, n s bt ly cc hnh ng nhn phm v chm vo mn hnh dch
chuyn v thay i kch tht bn . N c th c iu khin mt cch theo cch
lp trnh (getController()) v c th v mt cc Overlay trn bn
(getOverlays()).
MapView cng l mt ViewGroup vi LayoutParameters cho php gn cc ch
hin th, ti cc offset pixel xc nh hay cc ta xc nh.
Mt MapView c th c khi to bng mt MapActivity do n ph thuc vo cc
tin trnh truy cp vo mng v cc file h thng bn di; nhng tin trnh ny phi
tun theo lifecycle trong MapActivity. Di y l thng tin chi tit v lp MapView:
Constructor
MapView(android.content.Context context,android.util.AttributeSet attrs):

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

67

Khi to mt i tng MapView


MapView(android.content.Context context, android.util.AttributeSet attrs,
int defStyle)
MapView(android.content.Context context, java.lang.String apiKey)

Bng 4.10: Phng thc khi to lp MapView

Phng thc
Phng thc
protected void
onSizeChanged(int w, int h,
int oldw,int oldh)
public void computeScroll()
Protected final void
onDraw(android.graphics.Can
vas canvas)
public boolean
onKeyDown(int keyCode,
android.view.KeyEvent event
)

M t
iu chnh li kch tht ca i tng map v
chuyn li v tr cc ng k.
Bt ly cc s kin cun mn hnh v iu
chnh li camera bn .
y l phng thc v chnh. V nn ca bn
, cc vt ph trn bn (overlay), cc ng
li v logo ca Google.
Truyn cc phm nhn n cc i tng
overlay trc. Nu cc overlay ny khng x l
th s c chuyn qua s kin dch chuyn bn
.

public boolean
onKeyUp(int keyCode,
android.view.KeyEvent event

Ging nh onKeyDown

)
public void
displayZoomControls(boolean

Hin th cc control phng to/thu nh

takeFocus)
public int getZoomLevel()
public void

Tr v mc phng to/thu nh ca bn .

setSatellite(boolean on)
public boolean

Thit lp bn ch v tinh.
Kim tra xem bn c ch hin th v

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

68

isSatellite()
public void

tinh hay khng.

setStreetView(boolean on)
public boolean
isStreetView()
public GeoPoint
getMapCenter()
public MapController
getController()

Tr v v tr trung tm hin ti ca bn .
Tr v i tng MapController cho bn , c
th s dng i tng ny iu khin bn .

public final
java.util.List<Overlay>

Truy cp danh sch cc overlay.

getOverlays()
public int

Ly v hin ti ca span (t cnh trn cng

getLatitudeSpan()

public int
getLongitudeSpan()

public void
setReticleDrawMode
(MapView.ReticleDrawMode mo
de)

n cnh cui cng ca bn ) thp phn


c nhn ln mt triu ln.
Ly kinh hin ti ca span (t cnh trn cng
n cnh cui cng ca bn ) thp phn
c nhn ln mt triu ln.
Ch r cc ng k c v nh th no khi
thit b khng ch cm ng.
Tham s:
Mode ch li c v. Cc gi tr hp l:
MapView.ReticleDrawMode.DRAW_RETICLE_O
VER y l ch mc nh v ch ny

cc ng li s c v ln cc overlay v
vy

lun

thy

c.

MapView.ReticleDrawMode.DRAW_RETICLE_U
NDER cc ng li s c v trc khi tt c

cc

overlay

v.

MapView.ReticleDrawMode.DRAW_RETICLE_N
EVER cc ng li khng c v.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

69

public int
getMaxZoomLevel()
public void
onSaveInstanceState(android
.os.Bundle state)
public void
onRestoreInstanceState(andr
oid.os.Bundle state)
public android.view.View
getZoomControls()
public void
setBuiltInZoomControls(bool
ean on)
public Projection
getProjection()

Tr v ch zoom ti a.

Lu tnh trng hin ti ca MapView vo


mt

Bundle

bao gm mc zoom, v tnh

trng ca hp thoi zoom.


Phc hi li tnh trng ca MapView vo mt
Bundle.

Tr

mt

View

cha

mt

widget

ZoomControls (v d nt +/- ).
Bt cc controls phng to/thu nh c dng
sn. Nu c bt, MapView s hin th cc
controls zoom mt cc t ng.
Ly v mt php chiu cho vic chuyn ta

pixel v ta theo kinh v .


Bng 4.11: Cc phng thc lp MapView

Lp MapActivity
MapActivity l lp c s m bn k tha to cc Activity mi c th bao gm
mt MapView. Lp MapActivity iu khin vng i ng dng v qun l cc dch v
bn di cn cho vic hin th bn .
Mt lp k tha phi to mt MapView ring ca mnh trong hm
onCreate(android.os.Bundle), hoc vi constructor MapView (sau thm n vo

mt layout View vi ViewGroup.addView(View)) hay khi to t layout XML.


y khng phi l gi chun trong th vin Android. s dng n, cn phi
thm mt tag sau trong file XML trong file AndroidManifest.xml:
<uses-library android:name="com.google.android.maps" />

Cc phng thc

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

70

Phng thc
protected void
onCreate(android.os.Bundle icic
le)

M t
Trong phng thc ny chng ta khi to
cc thnh phn tnh, to i tng map v
dch v traffic, nhng khng nn bt u
bt k tin trnh no ti y. Lp tha k
nn to mt i tng MapView sau khi
gi n super.onCreate()

public void
onNewIntent(android.content.Int
ent newIntent)
protected void onResume()
protected void onPause()

Hm ny cho bit map c v li.


Tm dng cc tin trnh nh dch v
traffic bi v chng ta s khng mun

protected void onDestroy()

chng chy mi mi bn di.


Dng tt c tin trnh v gii phng tt c

protected abstract boolean

ti nguyn.
Hm ny s dng cho mc ch tnh ton,

isRouteDisplayed()

my ch cn bit liu bn c ang hin th


bt k thng tin ng i no khng, nh
hng dn li xe. Lp k tha phi hin
thc phng thc ny bo co thng tin

protected boolean
isLocationDisplayed()

hay s b vi phm iu kin s dng.


Phng thc ny c s dng cho mc
ch tnh ton, my ch cn bit liu l
bn c ang s dng thit b nh v no
khng. Mc nh phng thc ny tr v
true

nu

mt

lp

MyLocationOverlay

tha

ca

thm

vo

thng qua MapView.getOverlays() v


GVHD: PGS.TS. V Thanh Nguyn
SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

71

s nh v c bt.
Bng 4.12: Cc phng thc lp MapActivity
4.4.5. Lp MyLocationOverlay
Lp MyLocationOverlay l mt Overlay c bit c thit k hin th v tr
hin ti v hng trn bn .
s dng c lp ny chng ta cn to mt thc th mi, truyn vo trong
ng dng Context, MapView ch v thm thc th ny vo danh sch Overlay ca
MapView nh on code di y:
List<Overlay> overlays =
mapView.getOverlays();
MyLocationOverlay myLocationOverlay = new
MyLocationOverlay(this, mapView);
overlays.add(myLocationOverlay);

Chng ta c th s dng MyLocationOverlay hin th c v tr hin ti v


hng i hin ti ca chng ta.
on code mu di y ch cch bt tnh nng la bn v nh u, trong thc
th ny MapController ca MapView cng c truyn vo, cho php Overlay t ng
cun bn nu marker duy chuyn ra mn hnh.
myLocationOverlay.enableCompass();
myLocationOverlay.enableMyLocation(mapView.getMapController());

Tn phng thc

M t

public MyLocationOverlay
(Context context,MapView mapView

Khi dng mt MyLocationOverlay mi

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

72

public boolean enableCompass()

Bt ch cp nht t thit b cm ng la

public void disableCompass()

bn.
Bt ch cp nht t thit b cm ng la

public boolean

bn.
Kim tra la bn c c hin th hay

isCompassEnabled()
public void disableMyLocation()
public void onSensorChanged
(int sensor,float[] values)
public void
onLocationChanged(Location locat
ion)
protected void
drawCompass(Canvas canvas,
float bearing)
public GeoPoint getMyLocation()

khng.
Dng cp nht v tr.
c gi bi SensorManager khi gi tr la
bn thay i
B lng nghe ly v tr cp nht t
LocationManagerService.

V la bn. Mc nh, v mt la bn v mt
mi tn gc trn bn tri
Tr v mt GeoPoint tng ng vi v tr

hin ti ca ngi dung.


Bng 4.13 Cc phng thc lp MyLocationOverlay

Chng 5: PHN TCH THIT K H THNG NG DNG MAPRRO


5.1. Gii thiu ng dng MapPro
MapPro l phn mm c xy dng chy trn h iu hnh Android da trn cc
API ca Google Maps. y l phn mm rt hu ch cho khch du lch vi nhiu tnh
nng khc nhau nh: tm kim nhiu loi a im khc nhau (tm theo khu vc xung

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

73

quanh v tr hin ti hay tm theo mt a ch c th), hng dn ng i (hng dn


bng bn v vn bn), tnh ton l trnh v thi gian ng i, nh v ngi dng,
theo di v tr. Ngoi ra cn nhiu tnh nng h tr khc.
5.2. Kin trc ng dng
5.2.1. Phn mm ci t trn in thoi
Chng trnh hin th cc thnh phn ca phn mm bn MapPro bao gm bn
, thng tin a im, thng tin dn ng, v tr hin ti y l phn giao tip gia
ngi dng v phn mm. Chng trnh s dng ti nguyn ca in thoi thc hin
chc nng ca phn mm:
GPS: s dng GPS xc nh v tr chnh xc ca ngi dng, nh phn
mm c th hin th chnh xc a im ngi dng qua bn a ra cc kt
qu chnh xc v a im xung quanh ngi dng.
Wifi / 3G/ GPRS: s dng a thng tin c ngi dng ln server x l v
nhn v kt qu hin th ln mn hnh nh thng tin a im, thng tin ngi
dng v bn a im.
5.2.2. H thng my ch
My ch (Google Map Server) tip nhn thng tin nhn c t ngi dng
thng qua kt ni internet v tr v cho ngi dng nhng thng tin cn c mt cch
nhanh chng v chnh xc.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

74

Hnh 5.17: Kin trc phn mm MapPro

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

75

5.3. Phn tch thit k h thng ng dng


5.3.1. S Use-Case tng qut

Hnh 5.18: S use-case tng qut

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

76

5.3.2. Danh sch cc Actor


STT
1
2

Actor

ngha
User
Ngi s dng phn mm
ng dng tin nhn
ng dng gi tin nhn
Bng 6.14: Danh sch actor

5.3.3. Danh sch cc use-case


STT

Tn use-case

Tm a im

Xem TT a im

3
4
5
6
7
8
9

ngha
Tm kim cc a im xung quanh (ATM,
Bus,..)
Xem thng tin chi tit ca a im trn bn

hay vn bn
Nhp TT tm kim
Tm a im xung quanh v tr ny
Xem bn
Hin th bn
Tm kim bn
Tm kim thng tin trn bn
Theo di v tr
Cp nhp lin tc v tr hin ti ngi dng
Xem TT dn ng
Hin th thng tin ng i
Nhp TT dn ng
Nhp vo a im ngun v ch
Gi tin nhn v tr hin ti
Gi tin nhn v tr hin ti ca ngi dng
Bng 6.15: Danh sch use-case

5.3.4. c t use-case
c t use-case Tm a im
Tm tt:
Cho php la chn cc loi a im cn tm.
Dng s kin chnh:
1. Ngi dng chn cha nng a im trn menu chnh
2. Hin th mn hnh chn loi a im.
3. H thng cp nht v tr hin ti ca ngi dng.
4. Ngi dng chn loi a im cn tm.
5. Hin th mn hnh nhp a ch tm kim xung quanh.
Dng s kin ph:
(Khng c)

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

77

Yu cu c bit:
(Khng c)
Tin iu kin:
GPS phi c bt
Hu iu kin:
(Khng c)
im m rng:
Use case Nhp TT tm kim
c t use-case Xem TT a im
Tm tt:
Cho php ngi dng xem cc a im xung quanh tm c. V hin th thng tin
ny theo kiu danh sch chi tit hay trn bn .
Dng s kin chnh:
1. Ngi dng click nt Xem trn mn hnh nhp thng tin tm kim
2. Hin th mn hnh thng tin a im:
Mn hnh danh sch nu kiu hin th danh sch c chn
o Ngi dng click vo mt a im trn danhh sch.
o Phn mm hin th a im c click trn bn .
Mn hnh bn hin th cc a im tm thy c kch hot nu
kiu hin th trn bn c chn.
Dng s kin ph:
(Khng c)
Yu cu c bit:
(Khng c)
Tin iu kin:
GPS phi c bt
Hu iu kin:
Thng tin a im c tm thy

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

78

im m rng:
(Khng c)
c t use-case Nhp TT tm kim
Tm tt:
Cho php ngi dng nhp cc thng tin tm kim v la chn ch hin th thng
tin a im.
Dng s kin chnh:
1. Ngi dng chn loi a im mun tm kim trn mn hnh menu a im.
2. Hin th mn hnh nhp thng tin tm kim.
3. Ngi dng nhp vo a ch hay chn a ch hin ti.
4. Ngi dng chn ch hin th: hin th trn bn hay hin th trn danh
sch.
5. Ngi dng click vo nt Xem.
6. Hin th mn hnh bn nu ch hin th l bn , ngc li hin th
mn hnh danh sch.
Dng s kin ph:
1. Ngi dng khng nhp thng tin tm kim, phn mm hin th thng bo li.
Yu cu c bit:
(Khng c)
Tin iu kin:
GPS phi c bt
Hu iu kin:
(Khng c)
im m rng:
Use-case Xem TT a im
c t use-case Xem bn
Tm tt:

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

79

Hin th bn v chc nng tm kim trn bn .


Dng s kin chnh:
1. Chn menu chc nng bn trn menu chnh.
2. M mn hnh bn hin th bn .
3. Ngi dng chn ch hin th ca bn (v tinh hay bn )
4. Ngi dng nhp thng tin tm kim.
5. Ngi dng nhn nt Tm.
6. Phn mm hin th trn bn b v tr c tm thy.
7. Ngi dng chn nt V tr hin ti.
8. Phn mm hin th v tr hin ti ca dng dng trn bn .
Dng s kin ph:
1. Ngi dng click vo mt im trn bn sau mt khong thi gian.
2. Phn mm hin th a ch ca im c click.
Yu cu c bit:
(Khng c)
Tin iu kin:
GPS phi c bt
Hu iu kin:
(Khng c)
im m rng:
(Khng c)
c t use-case Xem TT dn ng
Tm tt: Hin th thng tin dn ng
Dng s kin chnh:
1. Ngi dng click nt Xem trn mn hnh nhp thng tin im ngun v
im ch.
2. Hin th mn hnh thng tin dn ng:
Mn hnh danh sch nu kiu hin th danh sch c chn

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

80

Mn hnh bn hin th mt ng mu ni t im u ng v
cui ng.
Dng s kin ph:
(Khng c)
Yu cu c bit:
(Khng c)
Tin iu kin:
GPS phi c bt
Hu iu kin:
Thng tin dn ng c hin th trn mn hnh.
im m rng:
(Khng c)
c t use-case Nhp TT dn ng
Tm tt: Cho php ngi dng nhp thng tin im u v im cui ca ng i.
Dng s kin chnh:
1. Ngi dng chn thng tin im u ca ng i
Nu nhn vo checkbox a im hin ti, a im hin ti s c t
ng chn vo.
Ngc li ngi dng t nhp a im.
2. Ngi dng nhp vo thng tin a im im cui
3. Ngi dng chn ch hin th
Hin th kiu danh sch
Hin th trn ban
4. Ngi dng click vo nt Xem
5. Mn hnh dn ng bng kiu danh sch c hin th nu kiu danh sch
c chn, ngc li mn hnh dn ng trn bn c hin th.
Dng s kin ph:
(Khng c)
GVHD: PGS.TS. V Thanh Nguyn
SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

81

Yu cu c bit:
(Khng c)
Tin iu kin:
GPS phi c bt
Hu iu kin:
(Khng c)
im m rng:
(Khng c)
5.3.5. Thit k h thng
sms.xml

mainmap.xml

mapme.xml

main.xml

mainplaces.xml

LocationListDetail
SMSMessagingActivity

locationdetail.xml

maindirection.xml

drivingdetail.xml

LocationMapDetail

Mapme
DrivingDirectionMapDetail
MapPlaces

MapDetail

MapDirection

MapProActivity

com.mappro.locationlistview
-DrivingAdapter
-FileCache
-ImageLoader
-LazyAdapter
-MemoryCache
-Utils

com.mappro.model
-CPoint
-DrivingDirectionModel
-PlaceModel

com.mappro.supportedclass
-CustomPinpoint
-DisplayOverlay
-DrawingOverlayPath
-GoogleDataReader
-MyMyLocationOverlay
-SearchMap
-Prefs

Hnh 5.19 Kin trc phn mm

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

DrivingDirectionListDetail

82

5.3.5.1. Biu tun t cho chc nng tm kim a im

Ngi dng

MapPlaces

InputAddress

Google map server

LocationMapDetail

Chn loi a im cn tm
hin th v tr hin ti
nhp thng tin tm kim
Chn hnh thc hin th

Yu cu tm kim

X l tm kim
Tr kt qu tm kim

Hin th kt qu tm kim di dng bn

Hin th kt qu tm kim

Hin th kt qu di dng danh sch


hiin th kt qu tm kim

Hnh 5.20: Biu tun t cho chc nng tm kim a im

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

LocationListDetail

83

5.3.5.2. Biu tun t cho chc nng tm kim ng i

Ngi dng

MapDirection

Google map data

DrivingDirectionMapDetail DrivingDirectionListDetail

Nhp thng tin tm kim


Yu cu tm kim

X l tm kim
Tr v kt qu

Hin th kt qu tm kim di dng bn

Hin th kt qu tm kim
Hin th kt qu di dng danh sch
hiin th kt qu tm kim

Hnh 5.21: Biu tun t cho chc nng tm kim ng i

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

84

5.3.5.3. Biu tun t cho chc nng tm kim theo a ch v hin th v tr hin
ti

Ngi dng

MapDetail

Nhp thng tin tm kim

Google map Data

Yu cu tm kim

thc hin tm kim

Tr v kt qu tm kim

Hin th kt qu
Chn hin th v tr hin ti
Gi thng tin Gps ln Server
Tr v kt qu v tr hin ti

Hin th v tr hin ti

Hin th kt qu

Hnh 5.22: Biu tun t cho chc nng tm kim

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

Mapme

85

5.3.6. Biu lp chi tit


5.3.6.1. Biu lp chi tit cho chc nng tm kim a im
LocationMapDetail

MapPlaces

InputAddress

+ lat
: double
+ lng
: double
+ provider : String
+
+
+
+

+
+
+
+
+

+
+
+
+

onCreate ()
ImageAdapter ()
GPSLocationListener ()
getKeywork ()
...

address
keywork
lat
lng

:
:
:
:

String
String
double
double

lat1
lon
lat
lng
keywork

:
:
:
:
:

double
double
double
double
String

+ onCreate ()
+ showToast ()
...

+ onCreate ()
+ setPlaceNow ()
...
LocationListDetail
+ lat : double
+ lng : double
+ onItemClick ()
+ onDestroy ()
+ OnClickListener ()
...

GoogleDataReader
+
+
+
+
+
+

PlacesInfoReader ()
PlacesCoordinateReader ()
GetAddressFromLatLng ()
GetLatLngFromAddress ()
DrivingDirectionReader ()
DrawPath ()
...

:
:
:
:
:

ArrayList<PlaceModel>
ArrayList<GeoPoint>
String
CPoint
ArrayList<DrivingDirectionModel>

Hnh 5.23: Biu lp chi tit cho tm kim a im


5.3.6.2. Biu lp chi tit cho tm kim ng i
MapDirection

DrivingDirectionListDetail

+ Address : String
+
+
+
+

+ src : String
+ dest : String

onCreate ()
GPSLocationListener ()
onLocationChanged ()
onClick ()
...

+ onCreate ()
+ onDestroy ()
+ OnClickListener ()
...
DrivingDirectionMapDetail
+ src : String
+ dest : String
+ onCreate ()
+ isRouteDisplayed ()
...

Hnh 5.24: Biu lp chi tit cho tm kim ng i

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

86

5.3.6.3. Biu lp chi tit cho tm kim theo a ch v v tr hin ti


MapDetail
+
+
+
+
+
+
+
+

start
stop
latE6
lonE6
lat1
lon1
x
y

:
:
:
:
:
:
:
:

long
long
int
int
long
long
int
int

+
+
+
+
+
+

onCreate ()
Touchy ()
onClick ()
finishUp ()
onCreateOptionsMenu () : boolean
onOptionsItemSelected () : boolean
...

Mapme
+
+
+
+
+
+
+
+
+
+

provider
TAG
lat
lon
numberSats
satAccuracy
bearing
altitude
speed
currentProvider

:
:
:
:
:
:
:
:
:
:

String
String
double
double
int
float
float
double
float
String

+
+
+
+
+
+
+
+
+
+

onCreate ()
onGpsStatusChanged ()
onKeyDown ()
: boolean
onLocationChanged ()
onProviderDisabled ()
centerOnLocation ()
getSatelliteData ()
onPause ()
onResume ()
updateGPSprefs ()
...

Hnh 5.25: Biu lp chi tit cho tm kim theo a ch v v tr hin ti

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

87

Chng 6: THIT K GIAO DIN


6.1. Thit k giao din
6.1.1. Danh sch mn hnh
STT

Tn mn hnh

Mn hnh chnh

Mn hnh bn

Mn hnh a im

4
5
6
7
8
9

Mn hnh nhp thng tin tm a


im
Mn hnh hin th a im (kiu

ngha/ghi ch
Hin th v cho php chn la cc chc
nng chnh ca chng trnh.
Hin th bn v cc chc nng lin quan
Hin th v cho php la chn cc loi a
im.
Nhp a ch v chn ch hin th
Hin th thng tin chi tit ca a im

danh sch)
Mn hnh hin th a im (kiu

c tm thy trn danh sch.


Hin th v tr ca a im c tm thy

bn )
Mn hnh nhp thng tin dn

trn bn .
Nhp im u v cui ca ng i v

ng
Mn hnh hin th thng tin dn

la chn ch hin th.


Hin th thng tin dn ng v thng tin

ng (kiu danh sch)


Mn hnh hin th thng tin dn

l trnh trn danh sch.

Hin th ng i trn bn .
ng (kiu bn )
Bng 7.16: Danh sch cc mn hnh

6.1.2. M t chi tit tng mn hnh


Mn hnh chnh
nh mn hnh

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

88

Hnh 6.26: Mn hnh chnh


Chi tit mn hnh
STT
Tn
Loi
1
gridview
GridView
2
Currentlocation ImageView
3
main_text_place TextView

ngha
Menu chnh chng trnh
Icon v tr hin ti
Hin th v tr hin ti

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

89

Mn hnh bn
nh mn hnh

Hnh 6.27: Mn hnh bn


M t mn hnh
STT Tn
1
mv

Loi
MapView

ngha
Hin th bn v thng tin trn

2
3
4

EditText
Button
Button

bn
Nhp thng tin tm kim
Tm a im
Ly v v tr hin ti

geocode_input
geocode_button
Presentlocation_button

Mn hnh a im

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

90

nh mn hnh

Hnh 6.28: Mn hnh menu a im


Chi tit mn hnh
STT
1
2
3

Tn
gvPlaces
Currentlocation
txtPositionPlaces

Loi
GridView
ImageView
TextView

ngha
Hin th menu mn hnh a im
Icon v tr hin ti
Hin th v tr hin ti

Mn hnh nhp thng tin tm a im


Hnh mn hnh

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

91

Hnh 6.29: Mn hnh nhp v tr


M t chi tit mn hnh
STT
1
2
3
4
5
6
7

Tn
edittext_placenow
edittext_placechose
checkbox_placenow
checkbox_placechose
radiob_map
radiob_list
button_view

Loi
EditText
EditText
CheckBox
CheckBox
RadioButton
RadioButton
Button

ngha
Hin th thng a im hin ti
Nhp vo thng tin a im
Chn v tr hin ti
Chn a ch t nhp
Chn hin th trn bn
Chn hin th kiu danh sch
Xem kt qu tm kim

Mn hnh hin th a im (kiu danh sch)


nh mn hnh

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

92

Hnh 6.30: Mn hnh hin th a im trn danh sch


M t chi tit
STT
Tn
1
List

Loi
ListView

ngha
Hin th chi tit thng tin a im

Mn hnh (Mn hnh hin th a im trn bn )


nh mn hnh

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

93

Hnh 6.31: Mn hnh hin th a im trn bn


M t chi tit
STT
Tn
1
mv2

Loi
MapView

ngha
Hin th v tr ca a im trn bn

Mn hnh nhp thng tin dn ng


nh mn hnh

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

94

Hnh 6.32: Mn hnh nhp thng tin dn ng


M t chi tit
STT
1
2
3
4
5
6
7
8
9

Tn
Loi
ngha
chkPlaceNow
CheckBox
S dng v tr hin ti
editTextPlaceA EditText
Nhp vo v tr A
editTextPlaceB EditText
Nhp vo v tr B
radiob_map
RadioButton Chn hin th trn bn
radiob_list
RadioButton Chn hin th kiu danh sch
btnCar
Button
Xem ng dnh cho phng tin xe hi
btnBus
Button
Xem ng dnh cho phng tin cng cng
btnWalk
Button
Xem ng dnh cho ngi i b
btnBicycle
Button
Xem ng dnh cho ngi i xe p
Mn hnh hin th thng tin dn ng (kiu danh sch)
nh mn hnh

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

95

Hnh 6.33: Mn hnh thng tin dn ng trn danh sch


M t chi tit
STT
Tn
1
txtRoute
2

drivinglist

Loi
TextView

ngha
Hin th khong cch qung ng v thi gian i

ListView

d kin.
Hin th thng tin dn ng

Mn hnh (mn hnh hin th l trnh trn bn )


nh mn hnh

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

96

Hnh 6.34: Mn hnh thng tin dn ng trn bn


M t chi tit mn hnh
STT Tn
1
mv2

Loi
MapView

ngha
Hin th bn dn ng

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

97

KT LUN V HNG PHT TRIN


nh gi lun vn
V l thuyt, kha lun ny trnh by mt s nghin cu v cc nn tng
Android, so snh thy c nhng im mnh im yu ca nn tng ny so vi cc
nn tng di ng khc cng nh tng lai ca nn tng Android. Kha lun cng
gii thiu v Google Maps Api v cc dch v ca Google Map trn nn tng Android,
cc ng dng ca Google Maps Api.
Kha lun cng i nghin cu su v nn tng di ng hin nay, so snh, nh gi
c tim nng ca mi nn tng. V nn tng Android, kha lun c thc nghim
trn trnh gi lp cng nh trn my tht, tip tc nghin cu s thay i ca nn tng
Android, thin v kin trc l ch yu.
nh gi ng dng
V thc nghim, kha lun ng dng cng ngh, c kh nng p s dng trong
thc t ca cuc sng, mang li li ch cho ngi s dng.
Hng pht trin
Ngoi ra, thu ht nhiu ngi s dng, trong tng lai s pht trin h tr
thm nhiu tin ch nh h tr ng k ngi dng v h tr ghi li hnh trnh ca ca
ngi dng, hoc h tr lp nhm ngi dng, ngi dng c th chia s v tr hin
ti ca mnh cng nh bit c a ch ca ngi dng khc trong nhm.
M rng thm tnh nng hin th bn b offline thay v phi ti bn t internet
v tnh nng chia s hnh trnh nhm.
Kt lun
Kha lun xy dng thnh cng ng dng bn - tm kim v ch ng trn
h iu hnh Android, h iu hnh di ng ang c s dng rng ri hin nay. Tm

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

98

hiu thnh cng cng ngh bn ca Google Maps, cc API v cc dch v dnh cho
nh pht trin trn thit b di ng s dng h iu hnh Android, cng nh tm hiu
c cng ngh Android, cch pht trin mt ng dng trn Android.

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

99

TI LIU THAM KHO


Ting Anh:

1. Gabriel Svennerberg (2010), Beginning Google Maps API 3, Nxb Apress.


2. Mark L. Murphy (2010), Beginning Android 2, Nxb Apress.
3. Reto Meier (2010), Professional Android 2 Application Development, Nxb Wrox.
4. Sayed Y. Hashimi and Satya Komatineni, Pro Android (2009), Nxb Apress.
5. Mike Guidry, Programming for the Android Platform.
<URL:http://eagle.phys.utk.edu/guidry/android/>
6. Lars Vogel, Android Programming Tutotials.
<URL:http://www.vogella.de/code/code.html>

GVHD: PGS.TS. V Thanh Nguyn


SVTH: Nguyn Minh Tun
CH. Trn Anh Dng
Trng Duy

También podría gustarte