Documentos de Académico
Documentos de Profesional
Documentos de Cultura
H CH MINH
Lp :
Kho:
CNPM02
02
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
NHN XT
(Ca ging vin hng dn)
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
NHN XT
(Ca ging vin phn bin)
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
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
4.4.5. Lp MyLocationOverlay.........................................................................................71
DANH MC HNH V
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.
Nhc im
cc cng c lp trnh.
iPhone
trong ng dng.
10
11
android.media,
android.opengl,
android.hardware,
12
13
14
15
16
17
18
19
20
21
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>
23
. . .
</application>
</manifest>
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
25
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
26
27
28
29
30
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.
31
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
33
34
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.
35
http://maps.google.com/maps?q=24.197611,120.780512: Rt khng
Mt
mrt= all: yu cu mi th
36
37
4.2.3. V tr
Kinh , v trung tm bn . Ch chp nhn ta thp phn. Nu s
ll=
sll=
spn
latlng=
cid=
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
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
(street view).
lci = kch hot cc lp vt b mt, cch nhau du phy:
com.panoramio.all: Hnh nh
com.google.ugc.c752d13e87c4fbd7 : Webcam
bike: tuyn ng xe p
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.
39
Highway).
Tolls)
ti)
doflg=ptk: kilomet
doflg=ptm: dm (mile)
ie = c th c s dng ch nh r tp hp m ha k t u vo.
40
output =kml: xut ra mt file KML cha thng tin biu din bn
hin ti.
41
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:
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
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>
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
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();
}
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();
47
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>
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());
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();
}
51
catch (IOException e)
{
e.printStackTrace();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
catch (SAXException e)
{
e.printStackTrace();
}
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>
M t
53
Tr v v ca i tng GeoPoint n v
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
54
55
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
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
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
android.graphics.drawable.Drawable
getMarker(int stateBitset)
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()
To mt ItemizedOverlay mi
Parameters:
defaultMarker - Mt Drawable c v trn bn
57
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.
58
Tr v item t index
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();
59
@Override
public void onCreate(Bundle savedInstance State) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Ly mt tham chiu n MapView
60
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
animateTo(GeoPoint point)
public void
animateTo(GeoPoint point,an
droid.os.Message message)
public void
animateTo(GeoPoint point,
java.lang.Runnable runnable
)
public void scrollBy(int x,
int y)
61
public void
setCenter(GeoPoint point)
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)
zoomInFixing(int xPixel,
int yPixel)
public boolean
Thu nh mt mc.
zoomOutFixing(int xPixel,
int yPixel)
62
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>
64
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() {
66
return false;
}
}
67
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
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
68
isSatellite()
public void
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>
getOverlays()
public int
getLatitudeSpan()
public int
getLongitudeSpan()
public void
setReticleDrawMode
(MapView.ReticleDrawMode mo
de)
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.
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.
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
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
Cc phng thc
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()
ti nguyn.
Hm ny s dng cho mc ch tnh ton,
isRouteDisplayed()
protected boolean
isLocationDisplayed()
nu
mt
lp
MyLocationOverlay
tha
ca
thm
vo
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);
Tn phng thc
M t
public MyLocationOverlay
(Context context,MapView mapView
72
Bt ch cp nht t thit b cm ng la
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
73
74
75
76
Actor
ngha
User
Ngi s dng phn mm
ng dng tin nhn
ng dng gi tin nhn
Bng 6.14: Danh sch actor
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)
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
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:
79
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
DrivingDirectionListDetail
82
Ngi dng
MapPlaces
InputAddress
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
LocationListDetail
83
Ngi dng
MapDirection
DrivingDirectionMapDetail DrivingDirectionListDetail
X l tm kim
Tr v kt qu
Hin th kt qu tm kim
Hin th kt qu di dng danh sch
hiin th kt qu tm kim
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
Yu cu 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
Mapme
85
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>
DrivingDirectionListDetail
+ Address : String
+
+
+
+
+ src : String
+ dest : String
onCreate ()
GPSLocationListener ()
onLocationChanged ()
onClick ()
...
+ onCreate ()
+ onDestroy ()
+ OnClickListener ()
...
DrivingDirectionMapDetail
+ src : String
+ dest : String
+ onCreate ()
+ isRouteDisplayed ()
...
86
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 ()
...
87
Tn mn hnh
Mn hnh chnh
Mn hnh bn
Mn hnh a im
4
5
6
7
8
9
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
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
Hin th ng i trn bn .
ng (kiu bn )
Bng 7.16: Danh sch cc mn hnh
88
ngha
Menu chnh chng trnh
Icon v tr hin ti
Hin th v tr hin ti
89
Mn hnh bn
nh mn hnh
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
90
nh mn hnh
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
91
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
92
Loi
ListView
ngha
Hin th chi tit thng tin a im
93
Loi
MapView
ngha
Hin th v tr ca a im trn bn
94
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
95
drivinglist
Loi
TextView
ngha
Hin th khong cch qung ng v thi gian i
ListView
d kin.
Hin th thng tin dn ng
96
Loi
MapView
ngha
Hin th bn dn ng
97
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.
99