TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
────── * ──────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
TÊN ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ĐA
PHƯƠNG TIỆN CHO MOBILE SỬ DỤNG
HỆ ĐIỀU HÀNH ANDROID (MODULE
SERVER)
Sinh viên thực hiện : Nguyễn Thế Trung
Lớp CNPM – K51
Giáo viên hướng dẫn: Ths. Lương Mạnh Bá
HÀ NỘI 6 - 2011
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Thông tin về sinh viên
Họ và tên sinh viên: Nguyễn Thế Trung
Điện thoại liên lạc 0942345996 Email:
Lớp: CNPM Hệ đào tạo: Đại học chính quy
Đồ án tốt nghiệp được thực hiện tại: Đại học Bách Khoa Hà Nội
Thời gian làm ĐATN: Từ ngày 28/ 2/ 2011 đến 28/ 5/ 2011
2. Mục đích nội dung của ĐATN
• Tìm hiểu các thông tin, cấu trúc hệ điều hành Android
• Tìm hiểu môi trường phát triển ứng dụng bằng Java phục vụ cho Mobile Android
• Tìm hiểu quy trình phát triển ứng dụng bằng Java phục vụ cho Mobile Android
3. Các nhiệm vụ cụ thể của ĐATN
• Tìm kiếm và tổng hợp thông tin
• Cài đặt môi trường phát triển
• Viết chương trình thử nghiệm và tích hợp với các Module Client, CMS để xây dựng hệ
thống
4. Lời cam đoan của sinh viên:
Tôi – Nguyễn Thế Trung - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng
dẫn của thạc sỹ Lương Mạnh Bá.
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công trình
nào khác.
Hà Nội, ngày tháng 5 năm 2011
Tác giả ĐATN
Nguyễn Thế Trung
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ:
Hà Nội, ngày 24 tháng 5 năm 2011
Giáo viên hướng dẫn
Thạc sỹ Lương Mạnh Bá
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Trong báo cáo này, em xin trình bày những kiến thức mà em đã tìm hiểu được
trong thời gian thực hiện đồ án tốt nghiệp vừa qua về hệ điều hành Android cũng như môi
trường để phát triển ứng dụng đa phương tiện cho hệ điều hành này bằng Java.
Nội dung chính của đồ án được chia thành các phần sau:
Phần mở đầu: Tóm tắt nội dung, đề tài được giao trong khuôn khổ đồ án tốt nghiệp.
Trình bày các thông tin về môi trường thực hiện đồ án và giới thiệu tóm tắt bố cục
của đồ án.
Phần nội dung chính của đồ án được chia thành 4 chương:
• Chương I: Đặt vấn đề và định hướng giải pháp
Trình bày cụ thể về nhiệm vụ, mô tả bài toán, các vấn đề cần giải quyết.
Định hướng giải pháp giải quyết các vấn đề đặt ra.
Chương II: Công cụ và môi trường phát triển
Giới thiệu tóm tắt về cơ sở lý thuyết và các công cụ được lựa chọn để giải quyết các
vấn đề.
Giới thiệu về quy trình phát triển một ứng dụng cho thiết bị di động.
• Chương III: Phân tích hệ thống
Chương này sẽ trình bày những phân tích cụ thể về hệ thống bao gồm:
- Mục đích thiết kế.
- Kiến trúc hệ thống.
- Thiết kế tổng quan.
- Thiết kế chi tiết.
- Thiết kế chuẩn giao tiếp giữa Server và Client.
• Chương IV: Cài đặt và triển khai ứng dụng - xây dựng các module của server và
tích hợp
Chương này sẽ trình bày những hướng dẫn cho việc cài đặt và những kết quả trong
việc triển khai ứng dụng, những đánh giá về hệ thống.
Phần kết luận:
Tổng kết những kết quả trong thời gian làm đồ án tốt nghiệp. Những ưu điểm,
nhược điểm và những định hướng phát triển trong tương lai.
Lời cảm ơn đến các thầy cô giáo, tổ chức đã giúp đỡ trong quá trình làm đồ án và
những cảm nhận của sinh viên khi hoàn thành thời gian làm tốt nghiệp.
Phần mục lục: tổng hợp những tài liệu tham khảo trong quá trình làm đồ án.
MỤC LỤC
!
"#$
%&'&()&*+$
)&*, /0123&45(6573/8(9&$
:;2.2/<=7(;(73)&*>?
@ABCDEFG@HI%J
K(-L7/8%J
M7))0'733&N&O+PQ(%
@ABRFRS@TSU%V
*/&8+)97)7W65&W-973X773YZ4-4%V
%M7)73)[4-87W65&W%V
\&Q7(6]27W65&W^%
_73/`&2a4,b(c73W.737W65&WJ
&'&()&*+-8Z4-4%
VX&(60`73>)=((6&d7
&45()c2eQ(7;&V
f+P(6g7)>)=((6&d7c73W.732)5()&Q(hMW&/b73
%f+P(6g7)>)=((6&d7,b(c73W.73!
)=()97)iN7>)j,k2)5)*/&8+)97)7W65&Wl!
@ABmnF\J
.2/o2)J
\&Q7(6]2)*();73%
p73c73W.73%
p73q0+(6Y
)&Q(eQ(r73O+47
:&d+/<,c2-s(qt
)&Q(eQ2)&uQ(
V:&d+/<(6v73()=&%
)&Q(eQ3&45W&*7
%\)N5i=(-9>)w7x2)Py+2p+730`&Wz73
)&Q(eQ)*();733&45uQ>
%&'&()&*+,X)g7)^
)&Q(eQ3&45uQ>730`&Wz73
{wPW|732)+j7eQ(7;&2)53&45()c2^52e}(!
%M7)Wv733~&u72)+Py7,.2W5i}6-}6(6N-8$
@ABFCFSU\?
9&/K(^}6-}6?
6&d7e)4&()•73)&*,V
%X&(60`73()•73)&*,V
\€V$
F\IJ
DANH MỤC HÌNH
g7)%BX)g7)h9&(5=7%J
g7)BX)g7)iN7>)j,&}W&4%%
g7)BX)g7))*();73%
g7)B\&Q7(6]2(r73()d7W65&W%!
g7)VB_73/`&2a4c73W.737W65&WJ
2u-&(Ph453<,i(4(}BJ
g7)B\&Q7(6]2Z4-4
g7)!BX)g7)h&y7WM2)
g7)$BX)g7)^52e}(
g7)?Bf+P(6g7)>)=((6&d7c73W.732)5()&Q(hMW&/b73!
g7)%JB\&Q7(6]2)*();73%
g7)%%B:&d+/<,c2e)=&7&*,
g7)%B:&d+/<,c2-s(qt
g7)%B:&d+/<i}24i}
g7)%B:&d+/<2u-&(P?
g7)%VB:&d+/<(+p7(|J
g7)%B:&d+/<2b73(=2%
g7)%!B:&d+/<(6v73()=&%
g7)%$BX)g7)29&/K(?
g7)%?B\)•&/b73^fi}6-}6VJ
g7)JBS+7i}6-}6,5h&q}2q&}7(VJ
:0'2B)vPW4(4h4i}S52e5735BVJ
V%
g7)%BS+7W4(4h4i}5735V%
:0'2B^(46(>42)}i}6-}6BV%
g7)BS+74>42)}i}6-}6V%
:0'2VB‚737)s>4(4h4i}5735BV%
g7)B‚737)s>4(4h4i}5735V
g7)B64ƒq}67W}„(6y7}(h}47-9eQ(O+N(6573^S52e5735V
g7)VB64ƒq}6(},(6y7}(h}47-9eQ(O+N(6573^S52e5735V
g7)BrWYq&*+-95^f^}6-}6VV
g7)!B&45W&*75h&q}q&}7(-93&45uQ>-'&^}6-}6V!
DANH MỤC TỪ VIẾT TẮT
STT Từ viết tắt Ý nghĩa
1 ĐATN Đồ án tốt nghiệp
2 HĐH Hệ điều hành
3 SDK Software Development Toolkit
4
DVM Dalvik Virtual Machine
5
API Application Programming Interface
6 CMS Content Management System
7 SQL Structured Query Language
8 RDMS Relational Database Management System
9 GOMS Goals – Operator – Method – Selection
10 GPRS General Packet Radio Service
11 VGA Video graphics array
12 PC Personal Computer
13 IDE Integrated Development Environment
14 ĐTDĐ Điện thoại di động
15 CSDL Cơ sở dữ liệu
16 JVM Java Virtual Machine
MỞ ĐẦU
1. Giới thiệu
Công nghệ trên thế giới đang phát triển từng ngày với tốc độ vũ bão. Xu
hướng hiện nay của ngành công nghệ thông tin không chỉ gói gọn trong việc làm
việc với các ứng dụng trên máy tính mà đang chuyển dịch dần thành công nghệ
thông tin và truyền thông. Cụ thể hơn, từ những chiếc máy tính để bàn cố định, con
người phát triển nên chiếc laptop cơ động hơn. Nhưng những chiếc laptop đó vẫn
chưa thể thỏa mãn được nhu cầu ngày càng cao của con người. Con người lại kết
hợp máy tính với chiếc điện thoại di động để cho ra những thiết bị di động thế hệ
mới, có sức mạnh của chiếc máy tính lại nhỏ gọn, cơ động như những chiếc điện
thoại di động, không chỉ giúp con người liên lạc, trao đổi thông tin mà còn trợ giúp
trong những công việc hàng ngày.
Đi kèm với sự phát triển của phần cứng như vậy, phần mềm cũng đang phát
triển nhanh chóng để phù hợp với các thiết bị thế hệ mới. Quan trọng nhất đó chính
là các hệ điều hành cho các thiết bị di động. Nổi bật nhất gần đây là hệ điều hành
hành Android của Google. Nó được đánh giá là một hệ điều hành tốt, nhiều tiềm
năng phát triển và sẽ có những bước nhảy vọt trong thời gian tới. Trong kỳ thực tập
và làm đồ án tốt nghiệp em được tìm hiểu về hệ điều hành này.
Cùng với sự phát triển của công nghệ, nhu cầu của con người đối với các
thiết bị di động cũng không còn giới hạn trong việc nghe gọi và nhắn tin như trước,
mà vươn cao hơn tới các nhu cầu giải trí, thu thập thông tin. Xuất phát từ nhu cầu
đó mà nhóm em có mong muốn xây dựng một hệ thống đa phương tiện cho phép
người sử dụng điện thoại di động có thể có được các thông tin mới nhất cũng như
việc người dùng có thể có các giây phút giải trí thú vị ngay chỉ với chiếc điện thoại
nhỏ bé của mình. Đó cũng chính là lý do mà nhóm em đã lựa chọn đề tài “Xây
dựng ứng dụng đa phương tiện cho Mobile sử dụng hệ điều hành Android” để
làm đồ án tốt nghiệp.
2. Nhiệm vụ được giao trong đề tài
Đề tài “Xây dựng ứng dụng đa phương tiện cho Mobile sử dụng hệ điều hành
Android” do nhóm em thực hiện trong thời gian làm đồ án. Về cơ bản đề tài được
chia ra thành ba phần với từng nhiệm vụ cụ thể cho từng thành viên trong nhóm. Cụ
thể như sau:
Phan Thanh Tuấn: xây dựng các module phía client.
Nguyễn Thế Trung: xây dựng các module phía Server.
Nguyễn Mạnh Hùng: xây dựng các module CMS và thiết kế cơ sở dữ liệu.
Với nhiệm vụ xây dựng các module phía client, các công việc của em trong
đồ án cụ thể gồm hai công việc chính:
• Tìm hiểu về hệ điều hành cho di động, cụ thể là hệ điều hành Android (cơ sở
lý thuyết, kiến trúc tổng thể )
• Xây dựng các module phía Server phục vụ cho các dòng máy chạy hệ điều
hành Android.
3. Bố cục đồ án tốt nghiệp
Đồ án của em trình bày bốn phần chính. Cụ thể như sau:
Phần mở đầu: giới thiệu tổng quan về đồ án, các thông tin về nhóm cũng như
môi trường thực hiện đồ án và công nghệ sử dụng.
Phần 2: Đặt vấn đề và định hướng giải pháp, nêu các phương hướng phát
triển cho đồ án, môi trường và công cụ được lựa chọn. Phần này được trình bày cụ
thể trong chương I, II của đồ án.
Phần 3: là các kết quả đạt được trong đồ án bao gồm kết quả phân tích thiết
kế hệ thống, kết quả thực hiện cài đặt và thử nghiệm ứng dụng, đánh giá ưu nhược
điểm và khả năng sử dụng của dịch vụ. Phần này được trình bày cụ thể trong
chương III và chương IV của đồ án.
Phần 4: Phần kết luận bao gồm kết luận đánh giá các công việc đã làm và
chưa làm được và định hướng nhằm hoàn thiện kết quả đạt được của ĐATN.
CHƯƠNG I: ĐẶT VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI PHÁP
I. Đặt vấn đề
Thị trường di động Việt Nam được đánh giá là một trong những thị trường
thông tin di động có tốc độ phát triển nhanh nhất châu Á, tới 40% - 50% một năm,
Việt Nam đang trở thành một điểm đến hấp dẫn của các tập đoàn viễn thông nước
ngoài.
Mới đây, 2/4/2009 Bộ Thông tin và truyền thông đã tổ chức thi tuyển và cấp
giấy phép 3G cho 4 đơn vị trúng tuyển với tổng số tiền cam kết đầu tư triển khai
trong ba năm đầu lên đến 33.800 tỷ đồng (tương đương khoảng gần 2 tỷ USD) đã
đưa thị trường di động Việt Nam bước vào kỷ nguyên mới. 3G sẽ tạo ra băng thông
rộng, giống như một xa lộ, tạo cơ sở hạ tầng mạng để phát triển các dịch vụ giá trị
gia tăng hiện đại như các dịch vụ thoại truyền hình, dịch vụ thoại hình ảnh, đặc biệt
là các dịch vụ nội dung giải trí như xem phim, nghe nhạc trực tuyến….
Với việc phát triển nhanh chóng của thị trường di động ở nước ta, việc sử
dụng chiếc điện thoại cá nhân để tiếp cận với những thông tin khổng lồ trên internet
là một yêu cầu cấp thiết và được người sử dụng điện thoại di động mong đợi. Đáp
ứng nhu cầu đó một số phần mềm đa phương tiện dành cho Mobile ra đời giúp cho
người sử dụng điện thoại di động có thể sử dụng chiếc điện thoại của mình tiếp cận
với những thông tin khổng lồ trên internet tương tự như trên PC. Tiêu biểu trong
các phần mềm đó là sản phẩm iMedia do công ty Naiscorp xây dựng.
Hình 1: Mô hình bài toán
Sản phẩm iMedia là một sản phẩm tiêu biểu về cổng thông tin điện tử cho
thiết bị di động trong quá trình thực tập tại công ty Naiscorp nhóm em đã có điều
kiện tìm hiểu kĩ hơn về mô hình của sản phẩm từ đó có những giải pháp cho việc
xây dựng ứng dụng trong đồ án tốt nghiệp.
Hệ thống iMedia được được chia thành 3 tầng với những chức năng và
nhiệm vụ cụ thể:
• Tầng ứng dụng (Java Application)
• Tầng giao diện (Mobile Interface)
• Tầng dưới cùng là tầng máy tìm kiếm socbay (Socbay Search
Engine).
Việc mô hình hóa hệ thống được biểu diễn như hình dưới:
Hình 2: Mô hình sản phẩm iMedia
Trong đó:
• Socbay Search Engine: máy tìm kiếm của socbay chịu trách nhiệm thu thập
dữ liệu từ các nguồn khác nhau trên internet. Dữ liệu được đánh chỉ mục và
lưu trữ trong cơ sở dữ liệu của socbay.
• Mobile Interface: hỗ trợ cho việc chuẩn hóa dữ liệu phục vụ cho thiết bị di
đông. Ngoài ra Mobile Interface còn quản lý module giao tiếp cho phép lấy
và trả dữ liệu về cho ứng dụng Java khi nhận được yêu cầu từ ứng dụng.
• Java Application: Ứng dụng phía client với tên gọi Socbay Mobile Search,
tương tác với người sử dụng thông qua các thành phần đồ họa.
Trong khoảng ba tháng làm đồ án ngắn ngủi đồng thời vừa phải tìm hiểu và
xây dựng chương trình việc xây dựng nên một ứng dụng giống như iMedia cho
nhiều hệ điều hành , dòng điện thoại với đầy đủ chức năng là khó thành công do đó
nhóm em đã quyết định xây dựng một chương trình cho dòng máy chạy hệ điều
hành Android mô phỏng lại một số chức năng cơ bản như đọc báo, xem tranh, đọc
truyện
Mô hình hệ thống mà nhóm em xây dựng nhìn chung khá giống với mô hình
của sản phẩm iMedia tuy nhiên cũng có một số khác biệt sau:
• iMedia có một hệ thống Search Engine khá nổi tiếng và tầm cỡ có nhiệm vụ
thu thập thông tin trên Internet. Trong khi đó nhóm em xây dựng một Server
có nhiệm vụ Crawler thông tin về cơ sở dữ liệu, dĩ nhiên là dữ liệu thu thập
về ít hơn và cũng không được phân loại, sàng lọc kĩ như Socbay Search
Engine.
• Sản phẩm iMedia được xây dựng cho các dòng máy có hỗ trợ Java trong khi
đó sản phẩm của nhóm được xây dựng cho dòng máy chạy hệ điều hành
Android.
Hình 3: Mô hình hệ thống
Tuy vậy ứng dụng vẫn có khả năng cung cấp cho người dùng những thông
tin đã được sàng lọc, tổng hợp và chuẩn hóa riêng phù hợp cho thiết bị di động. Sản
phẩm tuy được phát triển trong thời gian ngắn nhưng hy vọng sẽ mang lại tính đột
phá, đa dạng và phù hợp với văn hóa của người Việt. Ứng dụng cung cấp cho người
dùng những chức năng chính sau:
• Chức năng đọc tin tức
• Chức năng xem kết quả xổ số
• Chức năng xem hình ảnh
• Chức năng đọc truyện
• Chức năng nghe nhạc
Ở trên em chỉ nêu mô tả bài toán với các chức năng cơ bản. Việc phân tích
và thiết kế tương ứng cho từng chức năng sẽ được trình bày kỹ hơn ở chương III
của báo cáo.
II. Định hướng giải quyết
Để giải quyết các vấn đề đã được nêu ra trong phần trên nhóm em đưa ra
định hướng để giải quyết các vấn đề của bài toán.
Từ bài toán cụ thể trên chúng em đã tiến hành xây dựng mô hình chung của
hệ thống gồm ba phần chính:
1. Phần CMS và Database
Quản lý cơ sở dữ liệu. Hệ quản trị cơ sở dữ liệu được sử dụng là SQL Server
2005.
SQL Server 2005 là một hệ thống quản lý cơ sở dữ liệu (Relational Database
Management System (RDMS)) sử dụng Transact-SQL để trao đổi dữ liệu giữa
Client và SQL Server.
SQL Server 2005 được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu
rất lớn (Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ
cùng lúc cho hàng ngàn User. SQL Server 2005 có thể kết hợp ăn ý với các server
khác nhau.
Trên đây là một số giới thiệu về SQL Server 2005 với nhiều điểm ấn tượng,
ngoài ra trong quá trình học tập chúng em đã có thời gian tìm hiểu về hệ quản trị cơ
sở dữ liệu này do đó việc lựa chọn nó cũng là một ưu thế so với các hệ quản trị cơ
sở dữ liệu khác.
2. Phần Server
Có nhiệm vụ Crawler thông tin từ internet để cập nhật vào database và làm
nhiệm vụ giao tiếp với Client. Phần này được viết bằng ngôn ngữ Java.
Java là một công nghệ xây dựng các ứng dụng phần mềm có vị trí rất lớn
trong những năm cuối thế kỉ 20, đầu thế kỉ 21. Nó được coi là công nghệ mang tính
cách mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống
nhất trên nhiều nền tảng mà chỉ cần biên dịch một lần.
Lần đầu tiên xuất hiện vào năm 1992 như là một ngôn ngữ dùng trong nội bộ tập
đoàn Sun Microsystems để xây dựng ứng dụng điều khiển các bộ xử lý bên trong
máy điện thoại cầm tay, lò vi sóng, các thiết bị điện tử dân dụng khác. Không chỉ là
một ngôn ngữ, Java còn là một nền tảng phát triển và triển khai ứng dụng trong đó
máy ảo Java, bộ thông dịch có vai trò trung tâm.
Không thể không kể đến một số điểm mạnh của ngôn ngữ Java như khả năng
thông dịch, lập trình hướng đối tượng, đa nhiệm, đa luồng, tính khả chuyển và khả
năng hỗ trợ mạnh cho việc phát triển ứng dụng.
Chúng em đã lựa chọn ngôn ngữ Java và môi trường phát triển là Netbeans
trên hệ điều hành Windows. Netbean IDE là một công cụ dành cho lập trình viên để
viết, biên dịch, gỡ lỗi (debug) và triển khai (deploy) chương trình, giao diện thân
thiện, được coi là phổ biến và hiệu quả nhất. Một sản phẩm miễn phí và không có
giới hạn nào trong việc sử dụng nó thì NetBean IDE có lẽ là lựa chon tối ưu nhất để
viết Java.
3. Phần Client
Có nhiệm vụ xây dựng các form giao tiếp với người dùng và giao tiếp với
Server. Phần này em sử dụng lập trình Android trên môi trường Windows.
Trong phần này đặc biệt chú trọng đến việc xây dựng các form giao tiếp và
xây dựng module kết nối. Trong thời gian gần đây Android có những bước tiến rất
nhanh và mạnh mẽ cho dòng điện thoại smartphone. Việc nghiên cứu và tìm hiểu về
lập trình Android cũng khá dễ dàng và có thể nói Android chính là tương lai của hệ
điều hành dành cho thiết bị di động smartphone. Đó cũng chính là lý do mà em đã
lựa chọn đề tài lập trình Java phục vụ cho hệ điều hành Android này.
Phần xây dựng các module kết nối được xây dựng bằng việc sử dụng giao
thức Socket. Cùng với giao thức HTTP là hai giao thức truyền thống, rất dễ sử
dụng. Song mỗi giao thức có những ưu, nhược điểm riêng. Nhưng trong khuôn khổ
có phần hạn chế của đồ án em xin lựa chọn giao thức Socket để xây dựng các
module kết nối.
Với việc lựa chọn nhiệm vụ cho mình là xây dựng các module phía server,
trong phần tiếp theo của đồ án xem xin trình bày những cơ sở lý thuyết và các công
cụ được lựa chọn để giải quyết vấn đề của bài toán.
CHƯƠNG II: CÔNG CỤ VÀ MÔI TRƯỜNG PHÁT TRIỂN
I. Hệ điều hành Android và ngôn ngữ Java
1. Định nghĩa về Android
Android không chỉ đơn giản là một hệ điều hành dành cho các thiết bị di
động thông minh (smart phone), nó còn được định nghĩa chính thức là một
“software stack” bao gồm hệ điều hành, các “middleware” (các phần mềm liên kết
các phần mềm hoặc các ứng dụng khác) và các ứng dụng phím.
Android có nền tảng mã nguồn mở được phát triển bởi Google. Bên cạnh
kho ứng dụng khá phong phú cùng một cộng đồng phát triển rộng lớn, Google còn
đưa ra bộ công cụ Android SDK cung cấp rất nhiều APIs cần thiết cho việc phát
triển các ứng dụng Android trên ngôn ngữ lập trình Java. Mặc dù mới ra đời nhưng
Android đã tạo ra sức hút rất lớn đối với các nhà phát triển và các hãng sản xuất.
Hiện tại đã có những chiếc điện thoại Android đầu tiên được xuất xưởng như T-
Mobile G1 của HTC, SamSung I7500. Bên cạnh đó rất nhiều hãng sản xuất điện
thoại lớn trên thế giới như Motorola, HTC, SumSung, Sony Ericsson cũng đã cam
kết sẽ gắn bó với Android. Ngoài ra Android còn có thể chạy trên các netbook và có
thể sẽ trở thành một hệ điều hành nữa giành cho netbook.
Android được đánh giá là có triển vọng rất lớn và có tốc độ tăng trưởng
nhanh trong những năm tới. Dưới đây là những ưu điểm tạo nên sức cạnh tranh của
Android.
Những điểm mạnh của Android
• Tính mở: Android được xây dựng dựa trên nhân là hệ điều hành Linux. Đây
là một nền tảng hoàn toàn mở (mã nguồn mở – open source), do đó những
chiếc điện thoại chạy Android sẽ không mất phí cho hệ điều hành, kéo theo
giá thành của những chiếc điện thoại này sẽ giảm xuống. Đó chính là một
yếu tố cạnh tranh rất lớn của Android. Bên cạnh đó, do có một nền tảng mở
và bản thân cũng là phần mềm mở nên các nhà phát triển ứng dụng có thể
thoải mái làm mọi thứ trên Android. Các ứng dụng có thể gọi đến bất kì ứng
dụng lõi nào của Android như tạo cuộc gọi, gửi tin nhắn, sử dụng camera
Họ cũng có thể tạo ra một hệ điều hành mới mang bản sắc riêng dựa trên mã
nguồn mở của Android. Tính mở còn giúp Android ngày càng được mở rộng
khi cộng đồng phát triển tiếp tục làm việc cùng nhau để tạo ra các ứng dụng
mới.
• Các ứng dụng tạo ra ngang bằng nhau: Android không phân biệt các ứng
dụng lõi của điện thoại và các ứng dụng của bên thứ ba. Tất cả đều có quyền
truy nhập như nhau đến các khả năng của điện thoại cung cấp cho người
dùng với các ứng dụng và dịch vụ rất rộng rãi. Vì thế các ứng dụng có thể
phát huy mọi điểm mạnh của mình mà không gặp trở ngại nào.
• Phá vỡ những ranh giới ứng dụng: Android phá vỡ các rào cản trong việc
xây dựng các ứng dụng mới. Ví dụ như nhà phát triển có thể kết hợp thông
tin từ web và các thông tin cá nhân trong điện thoại di động như user contact,
calendar để cung cấp cho người dùng những thông tin phù hợp hơn, tượng
tự như các dịch vụ hiện có của Google. Và không chỉ phá vỡ rào cản về mặt
kỹ thuật mà còn cả rào cản về mặt địa lý, với Android một nhà phát triển có
thể xây dựng ứng dụng cho phép người dùng thấy được vị trí của bạn bè của
họ, thông báo khi họ ở gần nhau và tạo cơ hội để họ kết nối với nhau.
• Phát triển ứng dụng nhanh và dễ dàng: Android cho phép truy nhập phạm vi
rất rộng các công cụ và thư viện hữu ích được sử dụng để xây dựng các ứng
dụng. Ví dụ Android cho phép các nhà phát triển lấy về vị trí của thiết bị và
cho phép các thiết bị kết nối với nhau. Thêm nữa Android còn chứa một tập
đầy đủ các công cụ được xây dựng rất sát với nền tảng giúp cho các ứng
dụng được tạo ra có hiệu suất cao.
2. Kiến trúc Android OS
Kiến trúc Android bao gồm một loạt tính năng ấn tượng cho các ứng dụng di
động. Trong thực tế, khi nhìn vào kiến trúc đơn lẻ, nếu không xem xét Android là
một nền tảng thiết kế cho các môi trường điện thoại di động, thì rất dễ dàng nhầm
lẫn kiến trúc Android với một kiến trúc máy tính nói chung. Tất cả các thành phần
chính của nền tảng máy tính đều tồn tại trong Android. Sau đây là mô tả về các
thành phần trong kiến trúc của nó.
Kiến trúc Android gồm 4 tầng: Applications, FrameWork Application,
Libraries, Linux Kernel. Dưới đây là hình vẽ minh họa kiến trúc tổng thể của
Android:
Hình 4: Kiến trúc tổng thể Android
a. Applications
Đây là các ứng dụng tương tác trực tiếp với người dùng bao gồm các ứng
dựng lõi và những ứng dụng của bên thứ ba. Ngoài việc cung cấp đầy đủ các ứng
dụng cơ bản của một chiếc điện thoại thông thường như: tạo cuộc gọi, nhắn tin
Android còn có những dịch vụ rất hữu ích khác: trình duyệt web, google maps, các
ứng dụng media, camera, games Hơn nữa Google còn cung cấp kho ứng dụng cho
Android tai địa chỉ khá phong phú giúp người
dùng có thể thoải mái download để sử dụng.
b. Application Framework
Đây là nơi chứa các dịch vụ và hệ thống quản lí ứng dụng bao gồm:
• Activity Manager: quản lí vòng đời của ứng dụng.
• Window Manager: quản lí các cửa sổ trong ứng dụng như trạng thái, cách bố
trí
• Content Providers: cho phép ứng dụng có thể truy nhập dữ liệu của ứng dụng
khác hoặc chia sẻ dữ liệu của nó cho các ứng dụng.
• View System: cung cấp các thành phần giao diện như list, text, button, thậm
chí cả trình duyệt web được nhúng vào trong ứng dụng.
• Package Manager: chứa các công cụ quản lí việc cài đặt, nâng cấp, cấu hình
hoặc gỡ bỏ các gói ứng dụng.
• Telephony Manager: quản lí các dịch vụ thoại như thông tin, trạng thái các
cuộc gọi, tin nhắn
• Resource Manager: cung cấp quyền truy nhập đến các tài nguyên không nằm
trong code như các chuỗi, icon, các file layout, các đối tượng graphics được
sử dụng
• Notification Manager: cho phép tất cả các ứng dụng đưa ra các thông báo
dưới dạng thanh trạng thái.
c. Libraries
Android cung cấp một tập các thư viện C/C++ được sử dụng bởi các thành
phần khác nhau trong hệ thống. Dưới đây là một số thư viện lõi:
• Thư viện C hệ thống: thừa kế từ thư viện hệ thống C chuẩn được cung cấp
cho các thiết bị nhúng dựa trên nhân Linux.
• Thư viện media: hỗ trợ việc thu, phát của rất nhiếu định dạng video và audio
cũng như là các định dạng ảnh tĩnh như MPEG4, H.264, MP3, AAC, AMR,
JPG, và PNG.
• Surface Manager: quản lí việc truy nhập đến các hệ thống con dùng cho việc
thể hiện đồ họa, kết hợp các lớp đồ họa 2D, 3D từ nhiều ứng dụng.
• LibWebCore: một cơ chế trình duyệ Web hiện đại bao gồm khả năng của
trình duyệt Web Android và trình duyệt Web nhúng.
• SGL (Skia Graphics Library): cơ chế đồ họa 2D cơ sở.
• Thư viện 3D: thư viện đồ họa 3D phát triển dựa trên OpenGL ES 1.0 APIs.
• FreeType: render các ảnh bitmap và font vectơ.
• SQLite: hệ quản trị cơ sở dữ liệu quan hệ nhẹ và mạnh mẽ có hiệu lực với tất
cả các ứng dụng .
d. Dalvik Virtual Machine (DVM)
Máy ảo Dalvik một thành phần rất quan trọng trong Android. Nó thực hiện
các ứng dụng trên nền Java và đã được đóng gói dưới dạng file .dex (Dalvik
Executable - dạng file thực thi của máy ảo Dalvik) phù hợp với các thiết bị mobile
bị hạn chế về bộ nhớ và tốc độ xử lí chậm. Không giống như hầu hết các máy ảo
dựa trên ngăn xếp, Dalvik là một máy ảo dựa thanh ghi. Với các máy ảo dựa ngăn
xếp, do phải nạp dữ liệu vào ngăn xếp rồi mới thực hiện trên các dữ liệu đó nên
chúng thường cần nhiều lệnh hơn so với những máy ảo dựa thanh ghi. Tuy nhiên
các máy ảo dựa thanh ghi do phải mã hóa thanh ghi nguồn và đích nên các lệnh
thường sẽ lớn hơn. Dalvik sử dụng một loại bytecode riêng không phải Java
bytecode. Android SDK cung cấp công cụ cho phép chuyển các file Java .class sau
khi biên dịch sang dạng file .dex, tức là dịch từ Java bytecode sang Dalvik
bytecode. Nhiều file .class có thể được đóng gói vào một file .dex. Dalvik có cơ chế
mã hóa đặc biệt khiến cho các file .dex có kích thước nhỏ hơn file .jar nhằm tối ưu
hóa việc sử dụng bộ nhớ. Mỗi ứng dụng chạy trên một tiến trình của riêng nó tương
ứng mỗi tiến trình lại có riêng nó một DVM, như vậy các tiến trình sẽ không gây
ảnh hưởng lẫn nhau. Cũng theo đó, Android cũng hỗ trợ nhiều thực thể DVM chạy
song song với nhau cho phép chạy cùng lúc nhiều ứng dụng.
e. Linux kernel
Android dựa trên nhân Linux version 2.6 đối với các dịch vụ lõi của hệ thống
như bảo mật, quản lí bộ nhớ, quản lí tiến trình, mạng, trình điều khiển. Nhân Linux
như là một lớp trừu tượng giữa phần cứng và phần còn lại của hệ thống Android.
Nhưng Linux không làm việc trực tiếp với các ứng dụng mà thông qua máy ảo
DVM. Nhân Linux được Google sử dụng không hoàn toàn là nhân Linux được sử
dụng cho các phiên bản hệ điều hành cho máy tính để bàn, trong đó Google đã loại
bỏ đi hệ thống quản lý cửa sổ ứng dụng X Window System cũng như bỏ bớt một số
thư viện trong bộ thư viện chuẩn GNU. Do đó việc sử dụng lại code cũng như thư
viện của các chương trình ứng dụng của các hệ điều hành Linux cho máy tính để
bàn là rất khó khăn.
f. Các thành phần cơ bản của ứng dụng Android:
Ứng dụng Android bao gồm 6 thành phần:
• Activity: Activity là nền của một ứng dụng. Khi khởi động một ứng dụng
Android nào đó thì bao giờ cũng có một main Activity được gọi, hiển thị
màn hình giao diện của ứng dụng cho phép người dùng tương tác
Một ứng dụng Android có thể chứa một hoặc nhiều activity. Mỗi một activity
được cung cấp một cửa sổ để thao tác trên đó.
• Service: Một service không có một giao diện trực quan. Nó chạy ở nền trong
một thời gian không xác định. Mỗi một service thừa kế từ lớp cơ sở Service.
Một ví dụ để có thể hiểu về service là ứng dụng music player
• Broadcast Receiver: Broadcast Receiver là một thành phần không làm gì
ngoài việc nhận và hưởng ứng lại những thông báo (broadcasts) được ban ra.
• Content Provider: Content Provider là thành phần làm cho tập dữ liệu của
ứng dụng có thể được sử dụng bởi một ứng dụng khác
• Intent: nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các
thông báo đi nhằm khởi tạo một Activity hay Service để thực hiện công việc
mà người dùng mong muốn. Ví dụ khi mở một trang web, tức là người dùng
gửi một intent đi để tạo một activity mới hiển thị trang web đó.
• Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng
hoạt động.
Activity, Service, Broadcast Receiver và Content Provider mới là những
thành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo
trong AndroidManifest.
3. Vòng đời của một ứng dụng Android
Như đã giới thiệu ở trên , Actitvity là thành phần quan trọng nhất và đóng vai trò
chính trong xây dựng ứng dụng Android. Hệ điều hành Android quản lý Activity
theo dạng stack: khi một Activity mới được khởi tạo, nó sẽ được xếp lên đầu của
stack và trở thành running activity, các Activity trước đó sẽ bị tạm dừng và chỉ hoạt
động trở lại khi Activity mới được giải phóng.
Hình 5: Vòng đời của ứng dụng Android
Activity bao gồm 4 state:
• active (running): Activity đang hiển thị trên màn hình (foreground).
• paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost
focus). VD: một activity mới xuất hiện hiển thị giao diện đè lên trên activity
cũ, nhưng giao diện này nhỏ hơn giao diện của activity cũ, do đó ta vẫn thấy
được 1 phần giao diện của activity cũ nhưng lại không thể tương tác với nó.
• stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng
thái stop.
• killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo
nguyên tắc ưu tiên. Các Activity ở trạng thái stop hoặc paused cũng có thể bị
giải phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại
hoàn toàn và phục hồi lại trạng thái trước đó.
4. Giới thiệu về Java
a. Giới thiệu Java:
Java là một công nghệ được hãng Sun Microsystems xây dựng từ cuối năm
1990 với cái tên Oak và hiện nay đang phát triển vượt bậc với sự đóng góp của hàng
vạn lập trình viên trên thế giới. Sau một chuyến du lịch tới đảo Java của Indonesia,
nhóm phát triển Oak đã đổi tên Oak thành Java.
Java được xây dựng chủ yếu dựa trên bộ công cụ phát triển (Java
Development Kit - JDK) như là bộ thư viện chuẩn trong đó chưa trình biên dịch,
trình thông dịch, trình đóng gói, tài liệu,… Đây chính là nền tảng cho việc phát triển
các ứng dụng Java. Hiện nay, cộng đồng Java trên thế giới mà đi đầu là hãng Sun
Microsystems đã xây dựng nhiều nhánh mới cho Java như: JavaMail (thư điện tử),
Java TAPI (viễn thông), Java3D (đồ họa 3 chiều), J2ME (ứng dụng cho thiết bị di
động),…
b. Phân loại Java:
Hiện nay Java có các phiên bản sau:
• J2SE
TM
(Java 2 Platform, Standart Edition): Phiên bản chuẩn gồm bộ công
cụ thông dụng dùng để chạy trên các máy PC hoặc các mạng máy tính nhỏ.
• J2EE
TM
(Java 2 Platform, Enterprise Edition): Phiên bản dành cho các máy
chủ với bộ nhớ lớn. Bao gồm các kiến trúc nâng cao như Web, EJB,
Transaction,… dùng để xây dựng các ứng dụng có quy mô lớn
• J2ME
TM
(Java 2 Platform, Micro Edition): Bao gồm môi trường và thư viện
Java dùng để phát triển các ứng dụng trên các thiết bị có bộ nhớ nhỏ như
điện thoại di động, PDA, các đồ gia dụng,…
• Ngoài ra SUN còn đang nghiên cứu và phát triển các ứng dụng khác như
JavaFX
Hình 6: Kiến trúc Java
c. Chi tiết về J2SE
TM
(Java 2 Platform, Standart Edition):
J2SE hay Java 2 Standard Edition vừa là một đặc tả, cũng vừa là một nền
tảng thực thi (bao gồm cả phát triển và triển khai) cho các ứng dụng Java. Nó cung
cấp các API, các kiến trúc chuẩn, các thư viện lớp và các công cụ cốt lõi nhất để
xây các ứng dụng Java. Mặc dù J2SE là nền tảng thiên về phát triển các sản phẩm
chạy trên máy tính để bàn nhưng những tính năng của nó, bao gồm phần triển khai
ngôn ngữ Java lớp gốc, các công nghệ nền như JDBC để truy vấn dữ liệu chính là
chỗ dựa để Java tiếp tục mở rộng và hỗ trợ các thành phần mạnh mẽ hơn dùng cho
các ứng dụng hệ thống quy mô xí nghiệp và các thiết bị nhỏ.
J2SE gồm 2 bộ phận chính là:
• Java 2 Runtime Environment, Standard Edition (JRE)
Môi trường thực thi hay JRE cung cấp các Java API, máy ảo Java (Java Virtual
Machine hay JVM) và các thành phần cần thiết khác để chạy các applet và ứng
dụng viết bằng ngôn ngữ lập trình Java. Môi trường thực thi Java không có các
công cụ và tiện ích như là các trình biên dịch hay các trình gỡ lỗi để phát triển các
applet và các ứng dụng.
• Java 2 Software Development Kit, Standard Edition (SDK)
Java 2 SDK là một tập mẹ của JRE, và chứa mọi thứ nằm trong JRE, bổ sung thêm
các công cụ như là trình biên dịch (compiler) và các trình gỡ lỗi (debugger) cần để
phát triển applet và các ứng dụng.
• Trình tự biên dịch của JVM
+ Người dùng viết mã nguồn, file mã nguồn này có định dạng (*.java)
+ Biên dịch mã nguồn này sang dạng file (*.class) , file này được gọi là bytecode
và SUN giữ bản quyền cho cấu trúc file này.
+ Chạy ứng dụng từ file bytecode này thông qua JVM, JVM sẽ đọc bytecode và
thông dịch sang dạng code mà hệ điều hành chứa nó có thể hiểu và chạy ứng dụng
cho chúng ta
Đối với mõi hệ điều hành khác nhau, ta sẽ có 1 JVM khác nhau và được cung cấp
hoàn toàn miễn phí trên trang chủ SUN
Hình 7: Mô hình biên dịch
Tên J2SE (Java 2 Platform, Standard Edition) được sử dụng từ phiên bản 1.2
cho đến 1.5. Từ "SE" được sử dụng để phân biệt với các nền tảng khác là Java EE
và Java ME. "2" ban đầu vốn được dùng để chỉ đến những thay đổi lớn trong phiên
bản 1.2 so với các phiên bản trước, nhưng đến phiên bản 1.6 thì "2" bị loại bỏ.
Phiên bản được biết đến tới thời điểm hiện tại là Java SE 6 (hay Java SE 1.6 theo
cách đặt tên của Sun Microsystems) với tên mã Mustang.
5. Môi trường phát triển
a. Hệ điều hành:
Về hệ điều hành để cài đặt các công cụ hỗ trợ, hiện Java có thể chạy trên hầu
hết các hệ điều hành phổ dụng như:
• Microsoft Windows: các phiên bản XP 32 bits, Vista 32 và 64 bits, Windows
7 32bits và 64bits, (và các phiên bản cũ hơn).
• Apple Mac OS X
• Linux: các dòng hiện đại đều có thể sử dụng được như Ubuntu, Fedora
b. Các công cụ hỗ trợ:
Như đã nêu, các ứng dụng chủ yếu được viết bằng ngôn ngữ Java, sau đó mã
bytecode của Java để chạy trên máy ảo JVM và các IDE cho Java như Eclipse,
Netbeans SUN cũng cung cấp các thư viện để ta sử dụng cho các ứng dụng v v
Ở trong đồ án của em (phần server ) có sử dụng 1 số thư viện cơ bản sau:
• Sqljdbc4.jar: Dùng để kết nối với CSDL SQL Server lư các thông tin để
người dùng xem
• Mongo-2.3.jar: Dùng để kết nối với CSDL Rock Mongo để lưu các thông tin
dạng thô khi crawler data về
• JDK 1.6: Thư viện chuẩn của SUN
c. Cài đặt môi trường lập trình:
Các bước để cài đặt các công cụ hỗ trợ phát triển ứng dụng Android:
• Cài đặt Java Virtual Machine hay JVM.
• Cài đặt Java IDE: (cụ thể là Netbean 7.0).
• Cài đặt SQL server và SQL Manager Studio 2005 Express
• Cài đặt CSDL Rock Mongo
Cụ thể các bước cài đặt khá đơn giản tuy nhiên trong khuôn khổ có hạn của
nội dung đồ án em không trình bày cụ thể ở đây. Chi tiết về việc cài đặt có thể tham
khảo tại địa chỉ
/>familyid=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&displaylang=en
II. Giao thức kết nối
Giao thức kết nối Socket cùng với giao thức HTTP là hai giao thức truyền
thống, rất dễ sử dụng. Trong hai giao thức kết nối trên mỗi giao thức lại có những
ưu, nhược điểm riêng mà tùy trong mỗi chương trình mà ta có thể lựa chọn phương
thức kết nối thích hợp.
Giao thức HTTP:
Trong giao thức HTTP, client truyền thông điệp cho server thông qua hai
phương thức là POST và GET. Với phương thức POST, lập trình viên có thể giấu
các tham số truyền lên server, điều này sẽ giúp bảo mật hơn cho server, tuy nhiên sẽ
gây khó khăn hơn cho lập trình viên phía client. Với phương thức GET, lập trình
viên sẽ gửi tất cả các tham số yêu cầu qua url, điều này sẽ dễ dàng hơn cho lập trình
viên phía client tuy nhiên sẽ rất khó để giấu url cho server.
Việc sử dụng kết nối HTTP có ưu điểm là dễ dàng cho lập trình viên nhưng
nó lại có một số điểm bất lợi sau :
• HTTP khiến cho kết nối giữa Client-Server không được liên tục. Hệ thống
chỉ thực hiện kết nối khi có yêu cầu, và đóng lại sau khi nhận được dữ liệu.
Do đó, việc request sẽ tốn một khoảng thời gian để thiết lập kết nối, điều mà
kết nối socket không mắc phải.
• Ngoài ra do việc sử dụng giao thức kết nối HTTP thực hiện truy vấn trực tiếp
lên service không đảm bảo được tính bảo mật và trong suốt của hệ thống do
có thể dễ dàng phát hiện các câu truy vấn.
Giao thức Socket TCP:
Chính từ những nhược điểm trên của HTTP, yêu cầu đặt ra là xây dựng thêm
một module kết nối nằm giữa client và các service, nhằm làm trong suốt giữa hai
tầng này, nâng cao tính bảo mật đối với server chứa service. Module này sẽ thiết lập
một kết nối TCP socket với các client, giữ các kêt nối, lấy các dữ liệu từ service và
trả lại cho client.
Module kết nối tại client có nhiệm vụ quản lý các gói tin gửi đi, nhận và xử lí
các gói tin gửi về từ server và hiển thị kết quả lên form.
Module kết nối tại Server sẽ tạo một socket, lắng nghe những packet từ client
gửi lên, xử lý,sau đó dựa vào mã gửi lên để gọi các dịch vụ được cung cấp bởi
Search Engine của trang Socbay.com để trả về các dữ liệu đã được chuẩn hoá tương
ứng.