Tìm hiểu và lập trình trên hệ điều hành Android - Pdf 27

Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 1
B GIÁO DC VÀ ÀO TO
TRNG I HC M THÀNH PH H CHÍ MINH
KHOA CÔNG NGH THÔNG TIN

 ÁN MÔN HC  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 hng dn : Thc s H Quang Khi
Thi gian thc hin : 21.11.2011 – 15.02.2012
Sinh viên thc hin : Trn ng Khoa – MSSV: 0851010134
T: 0979 890 254
Nguyn Minh Tâm – MSSV: 0851010227
T: 0168 2952 264
Lp: TH08B2
Khóa: 2008 – 2012
THÁNG 02 NM 2012
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 2
LI CM N

Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 3
MC LC MC TIÊU VÀ YÊU CU 6

1. Mc tiêu chính: 6
a. Mc tiêu ca ging viên đt ra cho chúng em là: 6
b. Bên cnh đó mc tiêu ca nhóm chúng em đt ra là: 6
2. Yêu cu sinh viên: 6

a. X lý biu thc: 22
b. Nhp hàm: 22
c. Các phép tính c bn: Cng +, tr -, nhân *, chia ÷ 22
d. Các phép tính vi 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 lng giác (trigonometry) 22
f. Lu và gi li ni dung ca biu thc tính toán c (history) 22
g. Biu th kt qu: 22
2. Ý tng gii quyt bài toán: 22
3. Ý tng thut toán ký pháp nghch đo Ba Lan 23
a. Ý tng: 23
b. Hin thc thut toán: 23
4. Demo ng dng Calcaulator: 26
IV. KT QU 38
1. Chng trình ng dng “calculator”: 38
a. Kt qu đt đc: 38
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 4
b. Hn ch ca chng trình: 38
2. Kh nng làm vic 38
a. Tp th nhóm 38
b. Cá nhân: 38
V. HNG PHÁT TRIN THÊM 39
VI. KT LUN 40
VII. TÀI LIU THAM KHO 41
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 5
NHN XÉT CA GIÁO VIÊN HNG DN

Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 6
MC TIÊU VÀ YÊU CU

Sau thi gian hc tp và trau di kin thc thì gi đây là giai đon tt nht mà
mi thành viên trong nhóm chúng em có th áp dng nhng kin thc đã hc đ vn
dng vào đ tài mà trng đã giao cho chúng em làm. ây cng là giai đon đ thy rõ
kh nng tip thu, nm vng kin thc ca mình  mc đ nào.

 tài: Tìm hi
u và lp trình ng dng trên h điu hành Android.

1. Mc tiêu chính:
Phân tích và xây dng thành công phn mm ng dng máy tính khoa hc cho
đin thoi cm tay thông minh chy trên nn gi lp Android SDK.
a. Mc tiêu ca ging viên đt ra cho chúng em là:
- Làm quen vi cách thc làm vic theo nhóm.
- Nm vng và lp trình thành tho vi Java trên nn Android.
- Dùng Java trên nn Android thit k “Calculator”.
b. Bên cnh đó mc tiêu ca nhóm chúng em đt ra là:
- T đ tài này có th m rng ra và
ng dng cho các đ tài khác có liên
quan.

2. Yêu cu sinh viên:
- Hc môn lp trình hng đi tng, cu trúc d liu, và gii tích.

Gn đây đin thoi cm tay thông minh đã tr thành mt vt hu nh “cn phi
có” trong cuc sng hng ngày ca gii làm vic “trí thc”. Vit phn mm tin ích
nâng cao giá tr s dng cho chúng cng tr nên mt trào lu cho các công ty phát
trin phn mm, các gii lp trình viên chuyên nghip cng nh không chuyên. c
bit là nh
ng ng dng cho máy chy trên h điu hành Android.

Phn mm máy tính bao gi cng đc cài đt sn trong bt c đin thoi cm
tay nhng ch dng li  mc đ c bn nh cng tr nhân chia, trong khi đó mc nhu
cu s dng ca gii làm vic “trí thc” cao hn,  mc đ ca máy tính khoa hc.
L
y tiêu chí là đáp ng đc nhu cu k trên, nhóm chúng em xin đng ký, tìm hiu và
lp trình ng dng “máy tính khoa hc” dành cho h điu hành Android.

 tài “Tìm hiu và lp trình ng dng trên h điu hành Android” nhm nâng
cao k nng lp trình, cng nh phân tích, thit k và xây dng mt ng dng thc tin
cho sinh viên t nhng yêu cu đc phân tích nh trên. Xây dng đc mt phn
mm
ng dng nh mt máy tính khoa hc thc th s không đn gin. Cho nên mc
đ yêu cu ca đ tài ch bao gm nhng phép toán và hàm đn gin. ng thi ng
dng đc gii hn ch cho máy đin thoi cm tay thông minh do màn hình (ln, cm
ng, …) ca chúng s cho phép thit k và xây dng mt giao din phc tp đa nng,
và b x lý c
a chúng đ mnh đ tính toán bài toán phc tp nhm đáp ng đc yêu
cu ca đ tài.
+ Thit b h tr: Nokia, Sony Ericsson, Samsung
− J2ME:
+ Nhà phát trin: Sun MicroSystems
+ Ngôn ng lp trình: Java, MIDlet
+ Thit b h tr: c h tr t nhiu nhà sn xut đin thoi
− Windows Phone:
+ Nhà phát trin: Microsoft
+ Ngôn ng lp trình: C#, VB
+ Thit b h tr: HTC, Samsung, LG, Dell, Nokia
− webOS (Palm OS)
+ Nhà phát trin: Palm, HP
+ Ngôn ng lp trình: C/C++
+ Thit b h tr: Palm, HP

iOS
+ Nhà phát trin: Apple
+ Ngôn ng lp trình: Objective C
+ Thit b h tr: iPhone
− Android
+ Nhà phát trin: Google
+ Ngôn ng lp trình: Java
+ Thit b h tr: HTC, Samsung, LG, Sony Ericsson, Acer, Dell…
2. Gii thiu chung v h điu hành Android:
a. Khái nim:
- Android là mt h điu hành dành cho thit b di đng nh smartphone, tablet
hay netbook. Android do Google phát trin da trên nn tng Linux kernel và
các phn mm mã ngun m. Android là h điu hành m mã ngun chính duy
nht.
- Android bao gm:
+ H điu hành m cho các thit b di đng.

đó cho phépcác hãng đin thoi có th đem mã ngun v
 tùy chnh, thit
k li sao cho phù hp vi mi mu mã đin thoi ca h và điu quan trng
na là h điu hành m này hoàn toàn min phí, không phi tr tin nên giúp
h tit kim khá ln chi phí phát trin h điu hành. Nhng điu đó là
cc k tt không ch đi vi các hãng sn xut đin tho
i nh mà ngay
c vi nhng hãng ln nh Samsung, HTC
- Vi các nhà phát trin ng dng (developers), vic h điu hành
android đc s dng ph bin đng ngha vi vic h có th thoi mái phát
trin ng dng trên nn android vi s tin tng là ng dng đó s có th
chy đc ngay trên nhiu dòng đin thoi ca các hãngkhác nhau. H
ít
phi quan tâm là đang phát trin cho đin thoi nào, phiên bn bao nhiêu vìnn
tng android là chung cho nhiu dòng máy, máy o Java đã chu trách
nhim thc thinhng ng dng phù hp vi mi dòng đin thoi mà nó
đang chy. Tt c các chng trình ng dng đc vit bng ngôn ng Java
kt hp vi XML nên có kh nng kh chuyn cao.
c. Các ng dng Android c bn:
- Duyt mail.
- Qun lý SMS.
- Qun lý thông tin ngi dùng PIM.
- Trình duyt web.
- Chng trình chi nhc, hin th hình nh.
d.
c đim ca b phát trin ng dng Android:
- Hoàn toàn min phí.
- H tr các thit b có Wifi.
- H tr GPS.
- Th vin s dng Bluetooth.

+ Th vin Media (Media Libraries): Có nhiu code đ h tr vi
c phát và ghi
các loi đnh dng âm thanh, hình nh, video thông dng.
+ Th vin SQLite : H c s d liu đ các ng dng có th s dng.
- Android runtime: Phn này cha các th vin mà mt chng trình
vit bng ngôn ng Java có thhot đng. Phn này có 2 b phn tng t
nh mô hình chy Java trên máy tính thng. Th nht là các th vin lõi (Core
Library), cha các lp nh
JAVA IO, Collections, File Access. Th hai là mt
máy o java (Dalvik Virtual Machine).
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 11
c. Tng Application Framework:
Tng này xây dng b công c - các phn t  mc cao đ các lp trình
viên có th nhanh chóng xây dng ng dng. Nó đc vit bng Java, có kh nng s
dng chung đ tit kim tài nguyên.
Gii thiu mt s thành phn ca phn này:
- Activity Manager: Qun lý các chu k sng ca mt ng dng cng
nh cung cp công c điu khin các Activity.
- Telephony Manager: Cung c
p công c đ thc hin vic liên
lc nh gi đin thoi.
- XMPP Service: Cung cp công c đ liên lc trong thi gian thc.
- Location Manager: Cho phép xác đnh v trí ca đin thoi thoi
da vào h thng đnh v toàn cu GPS và Google Maps.
d.
Tng Application:
ây là lp ng dng giao tip vi ngi dùng, bao gm các ng dng nh :

+ Android Development Toll (ADT)
http://dl.google.com/android/ADT-0.9.7.zip
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 12
+ Android Platforms
- Các bc cài đt:
+ Cài đt JDK:
• u tiên bn cài Java Development Kit (JDK) bn hin ti là bn JDK 7
• Linkdownload:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
• Bm nút download có mi tên trong hình đ ti:

• Tip tc bm nút Chn “Accept License Agreement” đ chp nhn điu
khon s dng và bm vào link đ ti v (phù hp vi h điu hành) nh mi
tên trong hình:
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 13

• Sau khi ti v bn cài đt bn chy file cài đt JDK và làm theo hình đ mc
đnh toàn b và bm Next đn khi Finish:

Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 14



Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 17
• File Eclipse có đánh du sao trong hình là file đ chy Eclipse, bn có th to
shortcut nó ra desktop đ d làm vic.

+ Cài đt Android SDK
• u tiên ta ti b SDK ti
http://developer.android.com/sdk/index.html, chn
platform phù hp vi OS mình đang dùng • Gii nén file zip bn va ti v. Chy SDK Setup.exe. Bn có th gp thông
báo li “Fetching
https://dl-sl Failed to fetch ”.
• Close thông báo này li. Tip theo ca s Choose Packages to Install xut hin.
Nu ca s này trng rng thì chn Cancel.
• Quay v ca s Android SDK and AVD manager -> Chn Setting, đánh du
vào ô Force https:// Chn Available Packages.

• ánh du các Packages bn mun ti: Documents chính là phn Javadoc mô t
hot đng ca các phng thc và các lp (phn này không th thiu), Sample là
các đon code mu, SDK Platform ng vi các phiên bn h điu hành (2.2 - API
level 8, 2.1 - API level 7, ), và Google API đ phát trin các phn mm liên quan
đn dch v ca Google.
Chn Install Selected -> Install -> Ch chng trình cài đt xong.
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 18

vi phn ln ngôn ng lp trình thông thng, thay vì biên dch mã ngun thành
mã máy hoc thông dch mã ngun khi chy, Java đc thit k đ biên dch mã
ngun thành bytecode, bytecode sau đó s đc môi trng thc thi (runtime
environment) chy. Bng cách này, Java thng chy nhanh hn nhng ngôn
ng lp trình thông dch khác nh Python, Perl, PHP,…
- Cú pháp Java đc vay mn nhiu t C & C++ nh
ng có cú pháp hng
đi tng đn gin hn và ít tính nng x lý cp thp hn.
2. Lch s hình thành ngôn ng Java:
- Java đc khi đu bi James Gosling và bn đng nghip  Sun
Microsystems nm 1991. Không nên ln ln Java vi JavaScript, hai ngôn ng
đó ch ging tên và loi cú pháp nh C. Công ty Sun Microsystems đang gi bn
quyn và phát trin Java thng xuyên.
- Java đc to ra vi tiêu chí “Vit (code) mt ln, thc thi khp ni”
(“Write Once, Run Anywhere” (WORA)). Chng trình phn mm vit bng Java
có th chy trên mi nn tng (platform) khác nhau thông qua m
t môi trng
thc thi vi điu kin có môi trng thc thi thích hp h tr nn tng đó. Môi
trng thc thi ca Sun Microsystems hin h tr Sun Solaris, Linux, Mac OS,
FreeBSD & Windows. Ngoài ra, mt s công ty, t chc cng nh cá nhân khác
cng phát trin môi trng thc thi Java cho nhng h điu hành khác nh BEA,
IBM, HP… . Trong đó, đáng nói đn nht là IBM Java Platform h tr Windows,
Linux, AIX & z/OS.
- Nhng chi tit v ngôn ng, máy 
o và API ca Java đc gi bi Cng
đng Java (do Oracle qun lý). Java đc to ra vào nm 1991 do mt s k s 
Sun, bao gm ông James Gosling, mt phn ca D án Xanh (Green Project).
Java đc phát hành vào nm 1994, ri nó tr nên ni ting khi Netscape tuyên
b ti hi tho SunWorld nm 1995 là trình duyt Navigator ca h s h tr
Java. V sau Java đc đc h tr trên hu ht các trình duyt nh Internet

- Java là mt ngôn ng lp trình va biên dch va thông dch. Chng trình
ngun vit bng ngôn ng lp trình Java có đuôi *.java đu tiên đc biên dch
thành tp tin có đuôi *.class và sau đó s đc trình thông dch thông dch thành
mã máy.
c. c lp nn:
- Mt chng trình vit bng ngôn ng Java có th chy trên nhiu máy tính
có h điu hành khác nhau (Windows, Unix,Linux, …) min sao  đó có cài đt
máy o Java (Java Virtual Machine). Vit mt ln chy mi ni (write once run
anywhere).
d.
Hng đi tng:
- Hng đi tng trong Java tng t nh C++ nhng Java là mt ngôn ng
lp trình hng đi tng hoàn toàn. Tt c mi th đ cp đn trong Java đu
liên quan đn các đi tng đc đnh ngha trc, thm chí hàm chính ca mt
chng trình vit bng Java (đó là hàm main) cng phi đt bên trong mt lp.
Hng đi tng trong Java không có tính đa k tha
(multi inheritance) nh
trong C++ mà thay vào đó Java đa ra khái nim interface đ h tr tính đa k
tha.
e. a nhim – đa lung ( Multi Tasking – Multi Threading):
- Java h tr lp trình đa nhim, đa lung cho phép nhiu tin trình, tiu trình
có th chy song song cùng mt thi đim và tng tác vi nhau.
f. Kh chuyn:
- Chng trình ng dng vit bng ngôn ng Java ch cn chy đc trên
máy o Java là có th chy đc trên bt k máy tính, h điu hành nào có máy
o Java. “Vit mt ln, chy mi ni” (Write Once, Run Anywhere).

g.
H tr mnh cho vic phát trin ng dng:
- Công ngh Java phát trin mnh m nh vào “đi gia Sun Microsystem”

2. Ý tng gii quyt bài toán:
- Bình thng,
đ vit mt biu thc tng 2 s, ta vit a + b. Cách vit này gi là
trung t (infix). Bi vì du + (ta gi là toán t) nm  gia a, b (toán hng). Mt
biu thc phc tp hn có th  dng (a + b) * c.
- Ký pháp Nghch đo Ba Lan (Reversed Polish Notation - RPN) là dng biu thc
hu t (postfix), ngha là toán t nm sau toán hng. Theo đó, biu thc a + b vi
t
thành a b +; biu thc (a + b) * c s vit thành a b + c *.
- Phng pháp này giúp loi b du ngoc trong các biu thc, cng nh không
phi lu ý ti mc u tiên toán t (operator precedence).
RPN là mt phng tin tt giúp máy tính "đc" đc các biu thc toán hc, t
đó tính ra giá tr.
ö Vy, khi ta nhp mt biu thc toán vào mt chng trình tính giá tr biu thc,
nó s chuyn biu th
c v dng RPN, sau đó mi tính toán.

Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 23
3. Ý tng thut toán ký pháp nghch đo Ba Lan
a.
Ý tng:
- Mi toán t, toán hng đc xem là mt token.
- c tng token trong biu thc trung t t trái qua phi, vi mi token ta thc
hin các bc sau:
o Nu là toán hng: cho ra output.
o Nu là du m ngoc ‘(’: cho vào stack
o Nu là du đóng ngoc ‘)’: ly 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 hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi

Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 24
bt.push(tam.toString());
}
break;
-Ngc li 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;
- Chuyn biu thc t trung t sang hu t.
VD: ==> B1: Duyt tng token và kim tra kiu ca token đó.

for
(int i=0;i<tam.length;i++)
{
switch (getType(tam[i])) }

B2: - Nu là toán t thì pop ht các toán t có đ u tiên ln hn hoc bng ra
khi stack và push vào stack biu thc hu t, còn nu nh hn 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;
- Nu là toán hng thì push vào stack hu t.
case 1:

- Tính biu thc hu t.
B1: Duyt tng token biu thc hu t.
B2: - Nu là toán hng thì push vào stack.

case 1: case -1:
stack.push(Double.parseDouble(bt[i]));

break;
- Nu là toán hng 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;


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status