Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 1
B GIÁO DC VÀ ÀO TO
TRNG I HC M THÀNH PH H CHÍ MINH
KHOA CÔNG NGH THÔNG TIN
ÁN MÔN HC TÀI:
T
T
Ì
Ì
M
MH
H
I
I
T
T
R
R
Ê
Ê
N
NH
H
I
I
U
UH
H
Giáo viên hng dn : Thc s H Quang Khi
Thi gian thc hin : 21.11.2011 – 15.02.2012
Sinh viên thc hin : Trn ng Khoa – MSSV: 0851010134
T: 0979 890 254
Nguyn Minh Tâm – MSSV: 0851010227
T: 0168 2952 264
Lp: TH08B2
Khóa: 2008 – 2012
THÁNG 02 NM 2012
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 2
LI CM N
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 3
MC LC MC TIÊU VÀ YÊU CU 6
1. Mc tiêu chính: 6
a. Mc tiêu ca ging viên đt ra cho chúng em là: 6
b. Bên cnh đó mc tiêu ca nhóm chúng em đt ra là: 6
2. Yêu cu sinh viên: 6
a. X lý biu thc: 22
b. Nhp hàm: 22
c. Các phép tính c bn: Cng +, tr -, nhân *, chia ÷ 22
d. Các phép tính vi các hàm: x
2
, n!, sin, cos, tan, sqrt. 22
e. Có th dùng degree hay radians cho các hàm lng giác (trigonometry) 22
f. Lu và gi li ni dung ca biu thc tính toán c (history) 22
g. Biu th kt qu: 22
2. Ý tng gii quyt bài toán: 22
3. Ý tng thut toán ký pháp nghch đo Ba Lan 23
a. Ý tng: 23
b. Hin thc thut toán: 23
4. Demo ng dng Calcaulator: 26
IV. KT QU 38
1. Chng trình ng dng “calculator”: 38
a. Kt qu đt đc: 38
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 4
b. Hn ch ca chng trình: 38
2. Kh nng làm vic 38
a. Tp th nhóm 38
b. Cá nhân: 38
V. HNG PHÁT TRIN THÊM 39
VI. KT LUN 40
VII. TÀI LIU THAM KHO 41
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 5
NHN XÉT CA GIÁO VIÊN HNG DN
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 6
MC TIÊU VÀ YÊU CU
Sau thi gian hc tp và trau di kin thc thì gi đây là giai đon tt nht mà
mi thành viên trong nhóm chúng em có th áp dng nhng kin thc đã hc đ vn
dng vào đ tài mà trng đã giao cho chúng em làm. ây cng là giai đon đ thy rõ
kh nng tip thu, nm vng kin thc ca mình mc đ nào.
tài: Tìm hi
u và lp trình ng dng trên h điu hành Android.
1. Mc tiêu chính:
Phân tích và xây dng thành công phn mm ng dng máy tính khoa hc cho
đin thoi cm tay thông minh chy trên nn gi lp Android SDK.
a. Mc tiêu ca ging viên đt ra cho chúng em là:
- Làm quen vi cách thc làm vic theo nhóm.
- Nm vng và lp trình thành tho vi Java trên nn Android.
- Dùng Java trên nn Android thit k “Calculator”.
b. Bên cnh đó mc tiêu ca nhóm chúng em đt ra là:
- T đ tài này có th m rng ra và
ng dng cho các đ tài khác có liên
quan.
2. Yêu cu sinh viên:
- Hc môn lp trình hng đi tng, cu trúc d liu, và gii tích.
Gn đây đin thoi cm tay thông minh đã tr thành mt vt hu nh “cn phi
có” trong cuc sng hng ngày ca gii làm vic “trí thc”. Vit phn mm tin ích
nâng cao giá tr s dng cho chúng cng tr nên mt trào lu cho các công ty phát
trin phn mm, các gii lp trình viên chuyên nghip cng nh không chuyên. c
bit là nh
ng ng dng cho máy chy trên h điu hành Android.
Phn mm máy tính bao gi cng đc cài đt sn trong bt c đin thoi cm
tay nhng ch dng li mc đ c bn nh cng tr nhân chia, trong khi đó mc nhu
cu s dng ca gii làm vic “trí thc” cao hn, mc đ ca máy tính khoa hc.
L
y tiêu chí là đáp ng đc nhu cu k trên, nhóm chúng em xin đng ký, tìm hiu và
lp trình ng dng “máy tính khoa hc” dành cho h điu hành Android.
tài “Tìm hiu và lp trình ng dng trên h điu hành Android” nhm nâng
cao k nng lp trình, cng nh phân tích, thit k và xây dng mt ng dng thc tin
cho sinh viên t nhng yêu cu đc phân tích nh trên. Xây dng đc mt phn
mm
ng dng nh mt máy tính khoa hc thc th s không đn gin. Cho nên mc
đ yêu cu ca đ tài ch bao gm nhng phép toán và hàm đn gin. ng thi ng
dng đc gii hn ch cho máy đin thoi cm tay thông minh do màn hình (ln, cm
ng, …) ca chúng s cho phép thit k và xây dng mt giao din phc tp đa nng,
và b x lý c
a chúng đ mnh đ tính toán bài toán phc tp nhm đáp ng đc yêu
cu ca đ tài.
+ Thit b h tr: Nokia, Sony Ericsson, Samsung
− J2ME:
+ Nhà phát trin: Sun MicroSystems
+ Ngôn ng lp trình: Java, MIDlet
+ Thit b h tr: c h tr t nhiu nhà sn xut đin thoi
− Windows Phone:
+ Nhà phát trin: Microsoft
+ Ngôn ng lp trình: C#, VB
+ Thit b h tr: HTC, Samsung, LG, Dell, Nokia
− webOS (Palm OS)
+ Nhà phát trin: Palm, HP
+ Ngôn ng lp trình: C/C++
+ Thit b h tr: Palm, HP
−
iOS
+ Nhà phát trin: Apple
+ Ngôn ng lp trình: Objective C
+ Thit b h tr: iPhone
− Android
+ Nhà phát trin: Google
+ Ngôn ng lp trình: Java
+ Thit b h tr: HTC, Samsung, LG, Sony Ericsson, Acer, Dell…
2. Gii thiu chung v h điu hành Android:
a. Khái nim:
- Android là mt h điu hành dành cho thit b di đng nh smartphone, tablet
hay netbook. Android do Google phát trin da trên nn tng Linux kernel và
các phn mm mã ngun m. Android là h điu hành m mã ngun chính duy
nht.
- Android bao gm:
+ H điu hành m cho các thit b di đng.
đó cho phépcác hãng đin thoi có th đem mã ngun v
tùy chnh, thit
k li sao cho phù hp vi mi mu mã đin thoi ca h và điu quan trng
na là h điu hành m này hoàn toàn min phí, không phi tr tin nên giúp
h tit kim khá ln chi phí phát trin h điu hành. Nhng điu đó là
cc k tt không ch đi vi các hãng sn xut đin tho
i nh mà ngay
c vi nhng hãng ln nh Samsung, HTC
- Vi các nhà phát trin ng dng (developers), vic h điu hành
android đc s dng ph bin đng ngha vi vic h có th thoi mái phát
trin ng dng trên nn android vi s tin tng là ng dng đó s có th
chy đc ngay trên nhiu dòng đin thoi ca các hãngkhác nhau. H
ít
phi quan tâm là đang phát trin cho đin thoi nào, phiên bn bao nhiêu vìnn
tng android là chung cho nhiu dòng máy, máy o Java đã chu trách
nhim thc thinhng ng dng phù hp vi mi dòng đin thoi mà nó
đang chy. Tt c các chng trình ng dng đc vit bng ngôn ng Java
kt hp vi XML nên có kh nng kh chuyn cao.
c. Các ng dng Android c bn:
- Duyt mail.
- Qun lý SMS.
- Qun lý thông tin ngi dùng PIM.
- Trình duyt web.
- Chng trình chi nhc, hin th hình nh.
d.
c đim ca b phát trin ng dng Android:
- Hoàn toàn min phí.
- H tr các thit b có Wifi.
- H tr GPS.
- Th vin s dng Bluetooth.
+ Th vin Media (Media Libraries): Có nhiu code đ h tr vi
c phát và ghi
các loi đnh dng âm thanh, hình nh, video thông dng.
+ Th vin SQLite : H c s d liu đ các ng dng có th s dng.
- Android runtime: Phn này cha các th vin mà mt chng trình
vit bng ngôn ng Java có thhot đng. Phn này có 2 b phn tng t
nh mô hình chy Java trên máy tính thng. Th nht là các th vin lõi (Core
Library), cha các lp nh
JAVA IO, Collections, File Access. Th hai là mt
máy o java (Dalvik Virtual Machine).
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 11
c. Tng Application Framework:
Tng này xây dng b công c - các phn t mc cao đ các lp trình
viên có th nhanh chóng xây dng ng dng. Nó đc vit bng Java, có kh nng s
dng chung đ tit kim tài nguyên.
Gii thiu mt s thành phn ca phn này:
- Activity Manager: Qun lý các chu k sng ca mt ng dng cng
nh cung cp công c điu khin các Activity.
- Telephony Manager: Cung c
p công c đ thc hin vic liên
lc nh gi đin thoi.
- XMPP Service: Cung cp công c đ liên lc trong thi gian thc.
- Location Manager: Cho phép xác đnh v trí ca đin thoi thoi
da vào h thng đnh v toàn cu GPS và Google Maps.
d.
Tng Application:
ây là lp ng dng giao tip vi ngi dùng, bao gm các ng dng nh :
+ Android Development Toll (ADT)
http://dl.google.com/android/ADT-0.9.7.zip
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 12
+ Android Platforms
- Các bc cài đt:
+ Cài đt JDK:
• u tiên bn cài Java Development Kit (JDK) bn hin ti là bn JDK 7
• Linkdownload:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
• Bm nút download có mi tên trong hình đ ti:
• Tip tc bm nút Chn “Accept License Agreement” đ chp nhn điu
khon s dng và bm vào link đ ti v (phù hp vi h điu hành) nh mi
tên trong hình:
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 13
• Sau khi ti v bn cài đt bn chy file cài đt JDK và làm theo hình đ mc
đnh toàn b và bm Next đn khi Finish:
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 14
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 17
• File Eclipse có đánh du sao trong hình là file đ chy Eclipse, bn có th to
shortcut nó ra desktop đ d làm vic.
+ Cài đt Android SDK
• u tiên ta ti b SDK ti
http://developer.android.com/sdk/index.html, chn
platform phù hp vi OS mình đang dùng • Gii nén file zip bn va ti v. Chy SDK Setup.exe. Bn có th gp thông
báo li “Fetching
https://dl-sl Failed to fetch ”.
• Close thông báo này li. Tip theo ca s Choose Packages to Install xut hin.
Nu ca s này trng rng thì chn Cancel.
• Quay v ca s Android SDK and AVD manager -> Chn Setting, đánh du
vào ô Force https:// Chn Available Packages.
• ánh du các Packages bn mun ti: Documents chính là phn Javadoc mô t
hot đng ca các phng thc và các lp (phn này không th thiu), Sample là
các đon code mu, SDK Platform ng vi các phiên bn h điu hành (2.2 - API
level 8, 2.1 - API level 7, ), và Google API đ phát trin các phn mm liên quan
đn dch v ca Google.
Chn Install Selected -> Install -> Ch chng trình cài đt xong.
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 18
vi phn ln ngôn ng lp trình thông thng, thay vì biên dch mã ngun thành
mã máy hoc thông dch mã ngun khi chy, Java đc thit k đ biên dch mã
ngun thành bytecode, bytecode sau đó s đc môi trng thc thi (runtime
environment) chy. Bng cách này, Java thng chy nhanh hn nhng ngôn
ng lp trình thông dch khác nh Python, Perl, PHP,…
- Cú pháp Java đc vay mn nhiu t C & C++ nh
ng có cú pháp hng
đi tng đn gin hn và ít tính nng x lý cp thp hn.
2. Lch s hình thành ngôn ng Java:
- Java đc khi đu bi James Gosling và bn đng nghip Sun
Microsystems nm 1991. Không nên ln ln Java vi JavaScript, hai ngôn ng
đó ch ging tên và loi cú pháp nh C. Công ty Sun Microsystems đang gi bn
quyn và phát trin Java thng xuyên.
- Java đc to ra vi tiêu chí “Vit (code) mt ln, thc thi khp ni”
(“Write Once, Run Anywhere” (WORA)). Chng trình phn mm vit bng Java
có th chy trên mi nn tng (platform) khác nhau thông qua m
t môi trng
thc thi vi điu kin có môi trng thc thi thích hp h tr nn tng đó. Môi
trng thc thi ca Sun Microsystems hin h tr Sun Solaris, Linux, Mac OS,
FreeBSD & Windows. Ngoài ra, mt s công ty, t chc cng nh cá nhân khác
cng phát trin môi trng thc thi Java cho nhng h điu hành khác nh BEA,
IBM, HP… . Trong đó, đáng nói đn nht là IBM Java Platform h tr Windows,
Linux, AIX & z/OS.
- Nhng chi tit v ngôn ng, máy
o và API ca Java đc gi bi Cng
đng Java (do Oracle qun lý). Java đc to ra vào nm 1991 do mt s k s
Sun, bao gm ông James Gosling, mt phn ca D án Xanh (Green Project).
Java đc phát hành vào nm 1994, ri nó tr nên ni ting khi Netscape tuyên
b ti hi tho SunWorld nm 1995 là trình duyt Navigator ca h s h tr
Java. V sau Java đc đc h tr trên hu ht các trình duyt nh Internet
- Java là mt ngôn ng lp trình va biên dch va thông dch. Chng trình
ngun vit bng ngôn ng lp trình Java có đuôi *.java đu tiên đc biên dch
thành tp tin có đuôi *.class và sau đó s đc trình thông dch thông dch thành
mã máy.
c. c lp nn:
- Mt chng trình vit bng ngôn ng Java có th chy trên nhiu máy tính
có h điu hành khác nhau (Windows, Unix,Linux, …) min sao đó có cài đt
máy o Java (Java Virtual Machine). Vit mt ln chy mi ni (write once run
anywhere).
d.
Hng đi tng:
- Hng đi tng trong Java tng t nh C++ nhng Java là mt ngôn ng
lp trình hng đi tng hoàn toàn. Tt c mi th đ cp đn trong Java đu
liên quan đn các đi tng đc đnh ngha trc, thm chí hàm chính ca mt
chng trình vit bng Java (đó là hàm main) cng phi đt bên trong mt lp.
Hng đi tng trong Java không có tính đa k tha
(multi inheritance) nh
trong C++ mà thay vào đó Java đa ra khái nim interface đ h tr tính đa k
tha.
e. a nhim – đa lung ( Multi Tasking – Multi Threading):
- Java h tr lp trình đa nhim, đa lung cho phép nhiu tin trình, tiu trình
có th chy song song cùng mt thi đim và tng tác vi nhau.
f. Kh chuyn:
- Chng trình ng dng vit bng ngôn ng Java ch cn chy đc trên
máy o Java là có th chy đc trên bt k máy tính, h điu hành nào có máy
o Java. “Vit mt ln, chy mi ni” (Write Once, Run Anywhere).
g.
H tr mnh cho vic phát trin ng dng:
- Công ngh Java phát trin mnh m nh vào “đi gia Sun Microsystem”
2. Ý tng gii quyt bài toán:
- Bình thng,
đ vit mt biu thc tng 2 s, ta vit a + b. Cách vit này gi là
trung t (infix). Bi vì du + (ta gi là toán t) nm gia a, b (toán hng). Mt
biu thc phc tp hn có th dng (a + b) * c.
- Ký pháp Nghch đo Ba Lan (Reversed Polish Notation - RPN) là dng biu thc
hu t (postfix), ngha là toán t nm sau toán hng. Theo đó, biu thc a + b vi
t
thành a b +; biu thc (a + b) * c s vit thành a b + c *.
- Phng pháp này giúp loi b du ngoc trong các biu thc, cng nh không
phi lu ý ti mc u tiên toán t (operator precedence).
RPN là mt phng tin tt giúp máy tính "đc" đc các biu thc toán hc, t
đó tính ra giá tr.
ö Vy, khi ta nhp mt biu thc toán vào mt chng trình tính giá tr biu thc,
nó s chuyn biu th
c v dng RPN, sau đó mi tính toán.
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 23
3. Ý tng thut toán ký pháp nghch đo Ba Lan
a.
Ý tng:
- Mi toán t, toán hng đc xem là mt token.
- c tng token trong biu thc trung t t trái qua phi, vi mi token ta thc
hin các bc sau:
o Nu là toán hng: cho ra output.
o Nu là du m ngoc ‘(’: cho vào stack
o Nu là du đóng ngoc ‘)’: ly các toán t trong stack ra và cho vào
new StringBuffer();
tam.append(sb.substring(i,++i));
for(int j=i;j<sb.length()&&getType(sb.substring(j,j+1))==1;i=j++)
{
tam.append(sb.substring(j, j+1));
}
bt.push(tam.toString());
else
{
StringBuffer tam=
new StringBuffer();
tam.append(sb.substring(i,++i));
for(int j=i;j<sb.length()&&getType(sb.substring(j,j+1))==1;i=j++)
{
tam.append(sb.substring(j, j+1));
}
29 + -6*( 2- 3)
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 24
bt.push(tam.toString());
}
break;
-Ngc li thì cho push vào stack.
else{
bt.push(sb.substring(i, i+1));
}
break;
{
tam1.append(sb.substring(j, j+1));
}
bt.push(tam1.toString());
break;
- Chuyn biu thc t trung t sang hu t.
VD: ==> B1: Duyt tng token và kim tra kiu ca token đó.
for
(int i=0;i<tam.length;i++)
{
switch (getType(tam[i])) }
B2: - Nu là toán t thì pop ht các toán t có đ u tiên ln hn hoc bng ra
khi stack và push vào stack biu thc hu t, còn nu nh hn thì thêm vào stack.
case
0:
while (!stack.empty() && getPriority(tam[i].charAt(0)) <= getPriority(stack.peek().charAt(0)))
bieuthuchauto.push(stack.pop());
stack.push(tam[i]);
break;
- Nu là toán hng thì push vào stack hu t.
case 1:
- Tính biu thc hu t.
B1: Duyt tng token biu thc hu t.
B2: - Nu là toán hng thì push vào stack.
case 1: case -1:
stack.push(Double.parseDouble(bt[i]));
break;
- Nu là toán hng thì pop hai giá tr trên đu stack ra và tính toán.
case 0:
double a = stack.pop();
double b = stack.pop();
double value = 0;
switch (bt[i].charAt(0)) {
case '+': value = b+a;
break;
case '-': value = b-a;
break;
case '*': value = b*a;
break;