Professional Documents
Culture Documents
C S TI THNH PH H CH MINH
---------------------------------------------
N TT NGHIP H I HC
Ngnh : Cng Ngh Thng Tin H : Chnh quy
Nin kha : 2005-2010
ti :
Nm 2009
C S THNH PH H CH MINH c Lp T Do Hnh Phc
Sinh vin
V c Mnh
Mc Lc
Phn I : L thuyt
Chng I : Gii Thiu v nn tng Android ca Google2
1.1 Android l g ? 2
1.2 S ra i ca lin minh thit b cm tay m OHA.2
1.3 S pht trin ca Android...3
1.3.1 iu kin pht trin......3
1.3.2 Xu hng pht trin..5
Chng II : Tng quan cc thnh phn ca Android...7
1.1 Nhng c trng ca v kin trc ca Android......7
1.1.1 Nhng c trng ca Android.......7
T vit tt
3G Third-generation technology Cng ngh truyn thng th
h th ba
ADT Android Development Tools Mt cng c pht trin
android
AIDL Android Interface Description Mt cng c ca android sdk
Language
ARM Acorn RISC Machine Cu trc vi x l 32-bit
AVD Android Virtual Devices Thit b o cu hnh cho
nhng ng dng android
BSD BerKeley Software Distribution Tn ca mt h iu hnh dn
xut t UNIX
DNS Domain Name System H thng phn gii tn min
DPI Dot Per Inch n v ch s lng im trn
mt inch vung
EDGE Enhanced Data Rates for GSM Mt cng ngh di ng c
Evolution nng cp t GPRS
EGPRS Enhanced GPRS Mt cng ngh di ng c
nng cp t GPRS
GPRS General Packet Radio Service Dch v v tuyn gi tng hp
c pht trin trn nn tng
cng ngh thng tin di ng
ton cu (GSM)
GPS Global Positioning System H thng nh v ton cu
GSM Global System for Mobile H thng thng tin di ng
Communication ton cu th h th 2 (2G)
ICMP Internetwork Control Message Giao thc hot ng trn layer
Protocol 2 - Internetwork trong m
hnh TCP/IP
IDL Interactive Data Language Ngn ng tng tc d liu
IGMP Internet group management Giao thc qun l nhm
protocol Internet
J2ME Java 2 platform Micro Edition Nn tng java ,phin bn thu
nh ca Sun Microsystems
LBS Location Based Service Dch v da trn v tr
MIDlet Mobile Information Device Cc ng dng ca J2ME
Applet
Modem Modulator and Demodulator Thit b iu ch sng tn hiu
NAT Network Address Translation C ch dch i a ch mng
NDK Native Development Kit Gi pht trin cho Android h
tr ngn ng c/c++
NMEA National Marine Electronics nh ngha tng hp in t
Association v d liu
OHA Open Handset Alliance Lin minh thit b cm tay m
OSX Mac OS X Dng h iu hnh ha c
quyn ca Apple
Ping Packet Internet Grouper Cng c cho mng my tnh
s dng trn cc mng
TCP/IP
RPC Remote Procedure Call Mt m rng ca li gi hm
SDK Software development kit Gi phn mm pht trin
Tcp Transmission Control Protocol Giao thc iu khin truyn
vn
Udp User Datagram Protocol Mt giao thc truyn ti ct
li bn cnh TCP trong b
giao thc TCP/IP
UMTS Universal Mobile Mng di ng th h th 3
Telecommunications System
Li M u
Vi tc pht trin rt nhanh hin nay ca th trng di ng v mi mt nh
thng tin , thit b , ng dng v cc dch v dng nh vn cha tha mn ngi
s dng chnh v vy s ra i lin tc ca cc nn tng pht trin di ng l cn thit v
hp l , c bit l cc nn tng m ngun m s gip cho gim gi thnh cc thit b ,
ng dng thn thin hn vi ngi dng d pht trin v pht trin rt nhanh.Trong ti
ny s tm hiu v nn tng Android , mt nn tng m ang pht trin rt nhanh v n
mang y yu t thun li nh mnh m, thn thin, d pht trin v hon ton min
ph.
Chng I : Gii Thiu v nn tng Android ca google
1.1 Android l g ?
<manifest . . . >
<application . . . >
<activity android:name="com.example.project.FreneticActivity"
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
... >
</activity>
...
</application>
</manifest>
Gi lp supperclass
Mt trin khai bt k phng thc lifecycle activity no lun lun ln u
tin gi kiu superclass. V d:
protected void onPause() {
super.onPause();
...
}
7 phng thc di y nh ngha ton b lifecycle ca mt activity. C ba
vng lp lng nhau m bn c th gim st thc hin chung :
Ton b thi gian sng ca mt activity s xy ra gia ln gi u tin gi
n onCreate () cho n mt ln gi kt thc gi n onDestroy (). Mt hot
ng thc hin tt c cc thit lp ban u ca trng thi "Global" trong
onCreate (), v gii thot tt c cc ti nguyn trong onDestroy (). V d,
nu n c mt thread chy pha sau ti d liu t mng, n c th to ra
thread trong onCreate () v sau ngng trong onDestroy ().
Thi gian sng thy c ca mt activity s xy ra gia mt cuc gi n
onStart () tng ng cho n khi mt cuc gi n onStop (). Trong thi
gian ny, ngi s dng c th xem cc hot ng trn mn hnh, tuy nhin
n c th khng c trong foreground v tng tc vi ngi s dng.
Gia hai phng php ny, bn c th duy tr c cc ti nguyn cn thit
hin th cc hot ng cho ngi dng. V d, bn c th ng k mt
BroadcastReceiver trong onStart () gim st cc thay i m tc ng ca
UI, v unregister n trong onStop () khi ngi s dng c th khng cn
nhn thy nhng g bn ang hin th. Cc phng thc onStart() v onStop
() c th c gi nhiu ln, nh l hot ng lun phin gia hin v n
vi ngi s dng.
Cc foreground lifetime ca mt activity s xy ra gia mt cuc gi n
onResume () tng ng cho n khi mt cuc gi n onPause (). Trong
thi gian ny, hot ng ny l pha trc ca tt c cc hot ng khc
trn mn hnh v c tng tc vi ngi s dng. Mt hot ng thng
xuyn c th chuyn i gia resume v pause - v d, onPause () c gi
l khi thit b i vo trng thi ng hoc khi mt activity mi c bt u,
onResume () khi activity result hoc mt intent mi c sinh ra. V vy,
code trong hai phng thc ny kh nh.
Di y l nhng biu minh ha cc lp vng v cc ng dn mt
activity c th mt gia cc trng thi. Cc hnh ovals ln l trng thi chnh m
activity c th xy ra, hnh ch nht vung gc i din cho gi cc phng
thc phn hi c th trin khai thc hin khi cc activity chuyn gia cc
trng thi.
Hnh 2.3 : Biu minh ha vng i ca activity
Bng sau m t chi tit cc phng thc v v tr ca n trong ton b lifecycle ca
activity:
Phng Thc M T Tt? K Tip
onCreate() c gi khi lp activity u tin No onStart()
c to ra. Dng thit lp giao
Phng Thc M T Tt? K Tip
tc c bn to views,kt ni d
liu ti danh sch.Phng thc ny
c chuyn qua cho gi i
tng ca trng thi activity trc
, nu trng thi c nm bt
th (xem Saving Activity State, ).
Lun c onStart theo sau.
c gi khi ng dng chuyn
sang onStop(), nhng mun
onRestart() No onStart()
khi ng li bng onStart.
Lun c theo sau bi onStart()
onResume()
hm ny c gi khi lp ng
onStart() No or
dng xut hin trn mn hnh.
onStop()
c gi sau khi onStart() hoc
onResume() No onPause()
ngi dng focus ng dng.
hm c gi khi h thng ang
focus n 1 activity trc .
onResume()
c onResume() theo sau nu
onPause() Yes or
activity tr v quay tr v trc,
onStop()
hoc onStop() nu n n vi ngi
dng.
hm c gi khi mt activity
khc c khi ng v focus.
c onRestart() theo nu activity onRestart()
onStop() ny tng tc tr li vi ngi Yes or
dng. onDestroy()
c theo bi onDestroy() nu
activity ny b i.
hm c gi trc khi ng dng
thot bng vic gi hm
Activity.Finish().
c gi trc khi activity no
b hy . y l li gi cui cng
m activity nhn c . N c th
onDestroy() Yes nothing
c gi c hai khi activity kt
thc hoc v h thng tm thi b
hy b ,trng hp ny activity ct
gi khng gian.Bn c th phn
bit gia hai kch bn vi phng
thc isFinishing()
Lu ct Tt? trong bng trn. N cho bit c hay khng h thng c th tt tin
trnh lu tr cc activity bt c lc no sau khi phng thc tr v, m khng cn thc
hin nhng dng khc ca code activity . Ba phng thc (onPause (), onStop (), v
onDestroy ()) c nh du "Yes". Bi v onPause () l u tin ca ba phng thc,
ch l mt bo m c gi khi tin trnh ny b tt - onStop () v onDestroy () c th
khng . V th, nn s dng onPause () vit d liu (chng hn nh ngi s dng sa
i) lu tr.
Phng thc c nh du "NO" trong ct Tt? bo v qu trnh lu tr cc
activity khng b tt k t thi im chng c gi.
Mt activity m khng dng k thut "tt" theo nh ngha ny c th vn c tt
bi h thng - nhng c th s ch xy ra trong hon cnh kh khn khi khng c ti
nguyn khc.
Saving activity state(Ct gi trng thi activity)
Khi h thng ch khng phi l ngi s dng shut down mt activity bo tn
b nh, ngi s dng mong i tr v activity v tm thy n trong cc trng thi trc.
nm bt trng thi trc khi activity ny b tt, bn c th thc hin mt
phng thc onSaveInstanceState () cho cc hot ng. Android gi phng thc ny
trc khi thc hin cc activity d b tn thng do b tiu hu - c ngha l, trc khi
onPause() c gi. N chuyn qua phng thc i tng Bundle m bn c th
ghi li trng thi chc nng ca hot ng nh l nhng cp gi tr tn. Khi bt u hot
ng li mt ln na, Bundle chuyn qua c hai n onCreate () v ti mt phng thc
c gi sau onStart (), onRestoreInstanceState (), cho mt hoc c hai trong s chng
c th ti to li trng thi.
Khng ging nh onPause () v cc phng thc tho lun trc,
onSaveInstanceState () v onRestoreInstanceState () khng phi l phng thc lifecycle.
N khng phi lun lun c gi . V d, cc cuc gi Android onSaveInstanceState ()
trc khi hot ng tr nn d b tn thng do b tiu dit bi h thng, nhng khng
c gi khi thc s b tiu dit bi hnh ng ngi s dng (nh l nhn phm BACK).
Trong trng hp , ngi s dng s khng mong i tr li hot ng, do ,
khng c l do chnh ng lu cc trng thi.
Bi v onSaveInstanceState () khng phi lc no cng c gi, bn nn s dng
n ch ghi li cc trng thi tm thi ca cc hot ng, khng phi lu d liu. S
dng onPause () cho mc ch thay th.
Coordinating activities(Phi hp cc activity)
Khi mt activity bt u mt trong nhng activity khc. Mt ci tm ngng v c
th dng li, trong khi mt ci khc khi ng. Thnh thong, bn c th cn phi phi
hp cc activity ny, vi activity khc
Th t ca lifecycle :
1. Cc activity hin ti ca phng thc onPause () c gi
Service lifecycle
Mt dch v c th c s dng trong hai cch sau:
C th bt u v c cho php chy cho n khi mt ai dng n li
hoc t n dng li. Trong ch ny, n bt u bng cch gi
Context.startService () v dng li bng cch gi Context.stopService (). N c
th dng li chnh n bng cch gi Service.stopSelf() hoc
Service.stopSelfResult (). Ch c gi stopService() l ngn chn dch v
ny, bt k c bao nhiu ln startService () c gi.
N c th c lp trnh vn hnh bng cch s dng mt interface m n nh
ngha. Client thit lp mt kt ni cho cc i tng Dch v v s dng kt
ni cuc gi vo cc dch v. Kt ni c thit lp bng cch gi
Context.bindService(), v c ng li bng cch gi Context.unbindService
(). Nhiu client c th rng buc vo cng mt dch v. Nu cc dch v cha
c a ra, bindService() c th ty chn khi chy n.
Hai ch khng hon ton ring bit. Bn c th kt ni vo mt dch v
c bt u vi startService(). V d, mt dch v m nhc c th c bt u
bng cch gi startService() vi mt i tng nhn dng m nhc chi. Ch sau
ny, c th l khi ngi dng mun thc hin mt s kim sot i vi my nghe
nhc hoc nhn c thng tin v cc bi ht hin nay, mt hot ng thit lp mt
kt ni vo dch v bng cch gi bindService(). Trong trng hp nh th ny,
stopService() s khng thc s ngng cc dch v cho n khi cc rng buc cui
cng c ng li.
Ging nh mt activity, mt service c phng thc lifecycle c th trin khai
vic gim st cc thay i cc trng thi. Nhng n ang c t hn cc phng thc
hot ng - ch c ba - v chng l public, khng c bo v:
void onCreate()
void onStart(Intent intent)
void onDestroy()
Bng cch trin khai cc phng thc ny, ban c th gim st 2 vng lp lng
nhau ca lifetime h thng:
Entire lifetime(ton b thi gian sng) ca mt dch v s xy ra gia thi
gian onCreate () c gi v thi gian onDestroy() tr v. Ging nh mt
activity, mt dch v thit lp ban u trong onCreate (), v pht hnh tt c
ti nguyn cn li trong onDestroy (). V d, mt dch v nghe nhc c th
to ra cc thread, ni m nhc s c pht trong onCreate (), v sau
ngng bi trong onDestroy ().
Active lifetime(thi gian hot ng thc s) ca mt dch v bt u vi gi
n onStart (). Phng thc ny l t chc nh cc i tng c
thng qua n startService (). Cc dch v m nhc s m nh khm
ph m nhc chi, v bt u pht.
Khng c gi tr tng ng khi gi cc dch v ngng - khng c phng
thc onStop ().Phng thc onCreate () v onDestroy () c gi cho tt c cc
dch v, cho d n ang bt u bi Context.startService () hoc
Context.bindService (). Tuy nhin, onStart () c gi l ch cho cc dch v
bt u ca startService ().Nu mt dch v cho php nhng ngi khc rng
buc vo n, c thm cc phng thc gi cho n, thc hin:
IBinder onBind (Intent Intent)
boolean onUnbind (Intent Intent)
void onRebind (Intent Intent)
Di y l nhng biu minh ho vic gi cc phng thc cho mt dch
v. Mc d, n tng t dch v c to ra thng qua startService t nhng dch
v c to ra bi bindService (), hy ghi nh rng bt c dch v, khng c vn
nh n bt u, c th cho php khch hng c tim nng rng buc vo n,
do , bt c dch v no u c th nhn c onBind () v onUnbind () gi.
Trn hp thoi Environment Variables, dch thanh cun trong mc System variables
tm bin Path. La chn vo Path, sau nhp chut vo nt Edit. Xut hin hp thoi
Edit System Variables.
C th kim tra cc gi tr PATH bng cch thc hin lnh PATH trn ca s lnh ca
Windows.
1. Khi Eclipse, sau chn Help > 1. Khi ng Eclipse, sau chn Help >
Software Updates > Find and Software Updates.
Install. 2. Trong hp thoi xut hin chn tab
2. Trong hp thoi va hin ra , chn Available Software .
Search for new features to install v 3. Click Add Site
click Next.
4. Nhp ng dn:
3. Click New Remote Site.
https://dl-
4. Trong hp thoi , nhp mt ci tn ssl.google.com/android/eclipse/
(v d Android Plugin) v nhp c
dn : Click OK.
https://dl- 5. Sau s hin ra danh sch plugin ,bn
ssl.google.com/android/eclipse/ chn Developer Tools v click
Install
Click OK.
6. Chuyn qua tab Installed Software bn
5. Click Finish. cnh . Chn Android DDMS v
6. Trong hp thoi k tip , chn Android Development Tools. Click
checkbox cho Android Plugin. Chn Next.
cng c t vo l : Android 7. c v chp nhn cc tha thun,sau
DDMS v Android Development click Finish.
Tools. Click Next.
8. Khi ng li Eclipse.
7. c v chp nhn cc tha thun,sau
click Next.
8. Trong ca s ci t pha di, click
Finish.
9. clicking Install All.
10. Khi ng li Eclipse.
Plugin ny thm nhiu m rng mnh m cho Eclipse ,lm cho vic to vo kim
li cc ng dng ca bn d dng v nhanh hn.
Android Emulator
Hierarchy Viewer
Draw 9-patch
Cng c ny cho php bn qun l nhng tin trnh trong emulator hoc
thit b v gip vic kim li . Bn c th s dng n tt cc tin trnh , chn
mt tin trnh kim li , xem heap v thng tin ca cc thread ,
DDMS hot ng nh mt trung gian , n kt ni ti IDE ,ti cc ng dng
v chy trn thit b . Trn android mi ng dng chy trn mt tin trnh ca
chnh n,mi host c mt my o ca chnh n ,mi tin trnh th lng nghe t mt
trnh g li trn mt ci port khc nhau.
Cng c adb ny cho php bn ci t file .apk (ng dng) trn emulator hoc thit
b v truy cp emulator v thit b t nhng dng lnh. Bn cng c th dn ti
mt trnh kim li tiu chun cho cc code ng dng ang chy trn emulator hoc
thit b.
Cng c aapt cho php ban to file .apk cha cc tp nh phn v ti nguyn ca
ng dng android.Ngoi ra n cn cho php bn xem , to v cp nht nhng ti
liu (zip,jar,apk) n cng c th bin dch cc ti nguyn thnh ti nguyn nh
phn.
sqlite3
Cho php bn truy cp file d liu SQLite c to v s dng bi ng dng,
Traceview
mksdcard
dx
L chng trnh chy trn emulator ca bn hoc thit b v sinh ra nhng lung
gi ngu nhin ca s kin ngi dng nh click, va chm, nhn din c ch, bn
c th s dng chng trnh ny kim nghim hiu sut ng dng m bn pht
trin , vo mt hnh ng ngu nhin c nhc li.
android
Emulator s dng 3 loi file nh: file nh mc nh, file nh thc thi v file nh
tm. cc phn di y miu t lm th no ghi vng/tn ca mi loi file.
Cc nh mc nh :
khi Emulator chy nhng khng tm mt nh d liu ngi dng trn khng gian
lu tr AVD hot ng, n to ra mt ci t mt phin bn mc nh bao gm trong SDK.
nh d liu ngi dng mc nh l ch c. cc file nh l ch c.
Tn M t Cc nhn xt
Override using -initdata <file>. Also see
userdata.img The initial user-data disk image
-data <file>, below.
Ti thi gian chy, Emulator c v ghi d liu trn 2 nh a: nh d liu ngi dng v
(ty chn) mt nh card SD. Ci ny Emulator phn vng d liu ngi dng v mi
trng lu tr t xa trn thit b thc.
Emulator cung cp mt disk image d liu ngi dng. Ti lc khi ng, Emulator to
ra nh mc nh nh mt bn sao ca nh d liu ngi dng h thng(user-data.img),
miu t trn. Emulator lu nh mi vi file ca AVD hot ng.
Tn M t Cc nhn xt
Ghi s dng -data <filepath>, ni
<filepath> l ng dn nh, lin quan n
th mc hot ng.nu bn cung cp ch mt
Mt file nh m Emulator vit d filename,Emulator tm kim trong th mc
userdata-
liu ngi dng thi gian thc thi hin ti. nu file ti <filepath> khng c,
qemu.img
cho mt ngi dng duy nht Emulator to ra mt nh t userdata.img
mc nh, lu n di tn bn ch r, v tip
tc d liu ngi dng vi n ti lc
shutdown
Ghi s dng -sdcard <filepath>, ni
<filepath> l ng dn nh, lin quan ti
Mt nh biu din mt SD card
sdcard.img th mc hin chy. nu bn cung cp ch
c chn vo thit b Emulator
mt filename Emulator tm kim trong th
mc hin ti ang hot ng
SD card:
Cc nh tm:
a ch mng M t
10.0.2.1 Router/gateway address
B danh c bit ca host loopback interface (v d , 127.0.0.1 trn
10.0.2.2
thit b pht trin ca bn)
10.0.2.3 DNS server u tin
10.0.2.4 / 10.0.2.5 /
Chn DNS server th 2 , th 3 , th 4 (nu cn)
10.0.2.6
10.0.2.15 M phng mng ring ca thit b/ethernet interface
127.0.0.1 M phng loopback interface ring ca thit b
Cc gii hn mng cc b:
S dng cc ch dn mng:
add<protocol>:<host-port>:<guest-port>
Cng c ADB(Android Debug Bridge) cung cp chuyn port, mt cch lun phin
cho bn thit lp redirection mng.
A l my pht trin
B l th hin u tin ca bn A
C l th hin th hai ca bn chy trn A
B nghe 10.0.2.15:80
trn console B, s dng redir tcp: 8080:80
C kt ni vo 10.0.2.2:8080
Port redirection:
redir <list|add|del>
Lnh M t Cc nhn xt
<guest-port> l s port nh
tuyn d liu n emulator/ thit b
geo <fix|nmea>
Lnh M t Cc nhn xt
Gi mt NMEA 0183 n
<sentence> bt u vi '$GP'.
thit b Emulator, nu nh n
nmea <sentence> '$GPGGA' v '$GPRCM' hin
c gi t mt modem GPS
c h tr.
Emulator.
Bn c th s dng cc lnh geo ch v tr vng GPS ngay sau khi mt th hin
emulator chy. Cc emulator gi to ra mt a im nh cung cp dch v s gi n cho
cc ng dng GPS-bit ngay sau khi h bt u v a im ng k nghe. Bt k ng
dng c th truy vn nhng ngi qun l c c v tr hin ti v tr GPS cho cc
thit b bng cch gi:
LocationManager.getLastKnownLocation ( "gps")
Gi cc s kin:
Bn c th s dng lnh gi cho s kin khc nhau cho cc s kin emulator. cch s
dng lnh l:
event <send|types|codes|text>
Lnh M t Cc nhn xt
power <display|ac|status|present|health|capactiy>
network status
M phng tr mng:
Gi tr M t Nhn xt
M phng tr chnh xc n
<num>
(milliseconds).
M phng tr c ch nh
<min>:<max> trong phm vi (min, max
milliseconds).
M phng tc mng:
Gi tr M t Nhn xt
Gsm GSM/CSD (Up: 14.4, down: 14.4)
Hscsd HSCSD (Up: 14.4, down: 43.2)
Gprs GPRS (Up: 40.0, down: 80.0)
Edge EDGE/EGPRS (Up: 118.4, down: 236.8)
Umts UMTS/3G (Up: 128.0, down: 1920.0)
Hsdpa HSDPA (Up: 348.0, down: 14400.0)
Full Khng gii hn (Up: 0.0, down: 0.0)
Thit lp mt tc chnh xc
<num>
cho c download v upload
Thit lp nhng tc ring
<up>:<down>
cho upload v upload
M phng in thoi:
Cc Android emulator bao gm GSM Emulator modem cho php bn m phng
cc chc nng thoi trong emulator. V d, bn c th m phng cuc gi ti v (thit
lp /kt thc) kt ni d liu.h thng Android x l cuc gi m phng chnh xc nh
cc cuc gi thc. Cc emulator khng h tr cuc gi audio .Bn c th s dng console
truy cp vo cc chc nng thoi ca emulator. Sau khi kt ni vi console, bn c th
s dng :
Lnh M t Cc nhn xt
M phng mt cuc gi
call
n t in thoi c s l
<phonenumber>
<phonenumber>.
Nhn cuc gi n t
Bn c th thay i 1 trng thi cuc gi
accept s<phonenumber> v thay
sang active ch khi nu trng thi hin
<phonenumber> i trng thi ca cuc gi
ti ca n l waiting hoc help
sang active
Kt thc 1 cuc gi n
cancel
hoc gi i n/t
<phonenumber>
<phonenumber>.
<state> c h tr cc gi tr l :
denied ch cc cuc gi gp
on Ging nh 'home'
denied -- ch cc cuc gi gp
vm <start|stop|status>
Lnh M t Cc ch
Khi ng VM ti 1 thi
Start
im.
Ca s Emulator:
Window <scale>
Lnh vm h tr cc lnh con sau:
Lnh M t Cc nhn xt
skinID M t Skin
HVGA- 480x320,
L landscape
HVGA- 320x480, portrait
P (default)
QVGA- 320x240,
L landscape
QVGA-
P 240x320, portrait
1.2.2.i Chy nhiu Emulator mt lc
v d:
import android.app.Activity;
import android.os.Bundle;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
1.1 Dch v v tr
Thnh phn trung tm ca c cu t chc location l lp LocationManager n cung
cp mt api xc nh v tr v phng hng.
Nh cc dch v h thng khc , bn khng khi to LocationManager trc tip ,
m ta yu cu mt trng hp LocationManager t h thng bng cch gi
getSystemService(Context.LOCATION_SERVICE) , khi ng dng ca bn c th :
Truy vn vo tt c danh sch LocationProviders c bit trong
LocationManager
ng k/khng ng k cho cp nht tun hon ca v tr hin ti t mt
LocationProvider
ng k/khng ng k cho mt intent c pht ra
Tuy nhin trong thi gian u pht trin trn emulator , bn c th khng truy cp
c d liu thc t mt v tr thc (v d GPS). Trong trng hp ny s cn mt vi d
liu gi thay th trong ng dng ca bn bng cch s dng Mock location provider. C 2
cch s dng d liu mock location , dng cng c DDMS hoc truy vn geo trong
emulator console :
Vi DDMS bn c th m phng d liu v tr bng mt s cch nh gi bng tay
cc ta c nhn thit b hoc c th s dng file GPX m t tuyn ng n thit
b hoc c th s dng file KML m t v tr c nh du theo mt trnh t ti thit b.
Vi geo trn emulator console , bn khi ng android emulator v m mt
terminal/console , bn c th gi mt a ch c nh gm kinh , v v cao ca v
tr .
v d : geo fix -121.45356 46.51119 4392 .
Hoc lnh geo nmea gi mt cu NMEA 0183
v d : geo nmea $GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62
1.1 Th vin h tr ca google maps
Google cung cp th vin v map trong gi com.google.android.maps bn c th
s dng cc phng thc trong cc lp ca gi ny thc thi vi d liu map ca google
maps, cho php ng dng hin th v iu khin mt interface google map.
Tm tt cc Interface
MapView.ReticleDrawMod
Cho php ngi dng ch ra kiu c v.
e
Google maps c th c file .kml hoc kmz . Tuy nhin google maps c th ch hin th
mt s d liu t file kml.Google maps h tr cc tp con ca phn t kml nh:
Placemarks vi tag l <name>
Points
Icons
Folders
HTML trong tag <description>
KMZ (dng nn ca KML)
LineStrings and Polygons
Cc kiu thuc tnh ca polylines and polygons,bao gm mu sc , dy ,
trong sut.
Chng II: Chi tit cch ly d liu ca google maps
1.1 ng k mt api key v hin map n gin vi mt MapActivity
V ng dng ny s s dng c s d liu bn ca google nn ta phi ng k
mt api key c th kt ni n c s d liu ca google v s dng .
Vy trc ht l ng k mt api key , mun ng k api key ta phi ly m chng
nhn MD5 ca ng dng .
ly m ny trc ht ta copy file debug.keystore (file ny c to ra khi
ln u tin ta chy ng dng android t Eclipse) th mc "C:\Documents
and Settings\<username>\.Android" t vo th mc C:\Android(th mc
ny l th mc cha android sdk).
Sau dng cng c keytool.exe ca java ( th mc C:\Program
Files\Java\<JDK_version_number>\bin) ly m MD5 trong file debug.keystore . Ta
khi ng command prompt , ch dn n th mc bin cha keytool.exe v nh lnh :
keytool.exe -list -alias androiddebugkey -keystore "C:\android\debug.keystore"
-storepass android -keypass android .
ta s thu c m MD5 nh hnh di y :
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="Your Maps API Key"
/>
</RelativeLayout>
Thuc tnh clickable thit lp gi tr true cho ngi dng tng tc
vi bn .
Gi tr apiKey l key bn ng k vi google.
5. M file AppMapView.java ,ta import thm 2 gi l
com.google.android.maps.MapActivity;
com.google.android.maps.MapView;
Chnh cho lp AppMapView k tha lp MapActivity thay v Activity
mc nh.Thm mt phng thc isRouteDisplayed() c yu cu ca lp
MapView vo lp chung v cho tr v gi tr false.Sau khi chnh sa file
java thnh :
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
@Override
return false;
<LinearLayout
android:id="@+id/zoomview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/mapview"
android:layout_centerHorizontal="true"
/>
V t LinearLayout ny nm trong RelativeLayout.Layout ny gip
nh hng vic zoom.
7. Trong file AppMapView.java ta to mt i tng ZoomControls
ca lp MapView v thm vo layout mi.Trc ht ta khi bo cc i
tng LinearLayout , MapView, ZoomControl sau khi to gi tr cho
chng trong hm onCreate() ln lt l :
linearLayout = (LinearLayout) findViewById(R.id.zoomview);
mapView = (MapView) findViewById(R.id.mapview);
mZoom = (ZoomControls) mapView.getZoomControls();
s dng cc i tng ny ta cn import thm 2 gi :
import android.widget.LinearLayout;
import android.widget.ZoomControls;
Bng cch s dng cc i tng ZoomControl c cung cp bi
MapView, chng ta thc s khng cn thit phi lm bt c hnh ng kh
khn thc hin zoom. Cng c ZoomControls sn sng c a vo
trong MapView cho chng ta v lm vic ngay khi ta thm vo cc layout.
Cc control s xut hin khi user chm vo map, v bin mt sau mt lc
khng c s dng.
8. Gi ta chuyn cc ZoomControl vo LinearLayout :
linearLayout.addView(mZoom);
File AppMapView.java sau khi vit :
package com.AppMapView;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.widget.LinearLayout;
import android.os.Bundle;
import android.widget.ZoomControls;
LinearLayout linearLayout;
MapView mapView;
ZoomControls mZoom;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
linearLayout.addView(mZoom);
@Override
return false;
}
Sau khi hon thnh , chy ng dng ta click chut phi vo d n
chn run asAndroid Application v ch cho emulator khi ng mn
u xong th s hin ra :
V hm tm tn ca mt ta bit:
private void CoordinateToName(GeoPoint p){
Geocoder geoCoder = new Geocoder(getBaseContext(),
Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(
p.getLatitudeE6() / 1E6,
p.getLongitudeE6() / 1E6, 1);
point = "";
if (addresses.size() > 0)
{
for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();
i++)
point+= addresses.get(0).getAddressLine(i) + " ";
}
}
catch (IOException e) {
e.printStackTrace();
}
}
2.2.2 Tm ng i gia 2 im
Trong phn ny s trnh by cch gi yu cu ln trang web google maps thng
qua cc tham bin c qui nh v nhn v tuyn l trnh cn tm c lu trong file
*.kml . T lc d liu trong file kml v th hin tuyn l trnh gia 2 im trn bn
bng cch a ra cc ch dn c th cho ngi dng v v tuyn l trnh trn bn
nh vo thng tin ly trong file kml.
ly d liu v l trnh th trc ht cn gi ln maps.google.com cu truy vn v
d: http://maps.google.com/maps?
f=d&hl=en&saddr=25.04202,121.534761&daddr=25.05202,121.554761&ie=UTF8&0&o
m=0&output=kml
trong cu truy vn trn ta hiu saddr=im bt u v daddr=im kt thc,f=d l kiu
hin th direction t 2 im ,ie=UTF8 ch nh dng k t nhp l kiu utf8,output=kml l
nh dng file s xut ra l kml.
urlConnection.setDoInput(true);
urlConnection.connect();
V c Mnh-D05THA1 Trang 89