1
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
XÂY DỰNG ỨNG DỤNG THU THUẾ THU
NHẬP CÁ NHÂN TRÊN ĐIỆN THOẠI
ANDROID
Sinh viên thực hiện : Nguyễn Quốc Huy
Lớp Công nghệ phần mềm – K51
Giáo viên hướng dẫn: Ths. Đỗ Văn Uy
HÀ NỘI 5-2011
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
2
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 Quốc Huy
Điện thoại liên lạc : Email:
Lớp: Công nghệ phần mềm A Hệ đào tạo:Đại học chính quy
Đồ án tốt nghiệp được thực hiện tại:
Thời gian làm ĐATN: Từ ngày 15 / 01 /2011 đến 25 / 05 /2011
2. Mục đích nội dung của ĐATN
Nghiên cứu về hệ điều hành Android. Xây dựng ứng dụng thu thuế thu nhập cá
nhân qua điện thoại di động chạy hệ điều hành Android.
3. Các nhiệm vụ cụ thể của ĐATN
• Nghiên cứu cấu trúc hệ điều hành Android
• Cách xây dựng một ứng dụng chạy trên điện thoại Android
• Xây dựng ứng dụng thu thuế thu nhập cá nhân
4. Lời cam đoan của sinh viên:
Tôi – Nguyễn Quốc Huy - 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 Ths. Đỗ Văn Uy.
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 năm
Tác giả ĐATN
Nguyễn Quốc Huy
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 tháng năm
Giáo viên hướng dẫn
Ths . Đỗ Văn Uy
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
3
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Những năm gần đây, ứng dụng trên smart phone phát triển manh mẽ với rất nhiều
những ứng dụng giúp ich rất nhiều trong sinh hoat , công tác của con người. Việc phát triển
các ứng dụng trên smart phone phụ thuộc nhiều vào hệ điều hành cài đặt trên đó. Hiện nay
trên thị trường có rất nhiều hệ điều hành được phát triển cài đặt trên nhiều dòng smart
phone ví dụ có thể kể đến : Iphone OS ; Symbian Os ; Windows Mobile ; Web Os ;
Android Os
Mặc dù xuất hiện cách đây không lâu, khoảng 3-4 năm gần đây nhưng Android Os
đã có bước phát triển mạnh mẽ vượt qua những ông lớn kì cựu trong lĩnh vực này như
Windows Mobile hay Symbian Os và trở thành sự lựa chọn của rất nhiều nhà sản xuất
smart phone lớn trên thế giới như : HTC , SamSung ,LG….
Trong khuôn khổ đồ án, em tập trung nghiên cứu cấu trúc hệ điều hành Android
trên di động và xây dựng ứng dụng trên Androidphone.
Được sự gợi ý và hướng dẫn của thầy Đỗ Văn Uy ,đồ án xây dựng ứng dụng thu
thuế thu nhập cá nhân trên điện thoại di động Android
Đồ án xây dựng bao gồm những nội dung chính như sau:
- Phần mở đầu : Giới thiệu tóm tắt nhiệm vụ đề tài, xác định mục tiêu và phạm vi
thực hiện.
- Chương 1 : Nghiên cứu cấu trúc hệ điều hành Android và các bước xây dựng
ứng dụng trên Android phone.
- Chương 2 : Xây dựng ứng dụng thu thuế thu nhập cá nhân trên Android
phone.
- Kết luận: Đánh giá về kết quả thực hiện đồ án, phân tích những thuận lợi,
khó khăn khi thực hiện đồ án, định hướng phát triển đồ án trong tương lai.
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
4
ABSTRACT OF THESIS
In recent years, applications on smart phone have strongly developed, bringing great help
for human's life and work. Developing of those applications mostly depends on the
installed operating system. Currently available on the market are thousands of applications
being compatible with various series of smart phones, I.e.: Iphone Os, Symbian Os,
Windows Mobile, Web Os, Android Os
Despite its young history of development, Android Os has made huge steps
surpassing famous brand names like Windows Mobile or Symbia Os to become the choice
of many famous smart phone manufacturers: HTC, SamSung, LG
Within the framework of this blueprint, I focus on studying the structure of Android
operating system on mobile phone and the development of applications on Android phone.
Owing to the recommendation and instruction from professor Do Van Uy, this
blueprint is about developing the application of using individual income tax on Android
mobile phone.
The blueprints are divided into four main parts:
• Opening: The summarized introduction of the subject, defining goals and the area
of research.
• Chapter 1: The study of the structure of Android operating system and steps to
develop applications on Android
• Chapter 2: Setting up individual income tax application on Android phone
• Conclusion: Evaluation of the result of implementing the blueprint, analysis of
advantages and disadvantages during implementation as well as the navigation of
the direction of expanding the blueprint in the future.
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
5
LỜI CẢM ƠN
Trước tiên em xin được gửi lời cảm ơn trân thành và sâu sắc nhất tới tất cả các
thầy cô giáo trường đại học Bách Khoa Hà Nội nói chung và các thầy cô giáo khoa
Công nghệ thông tin , Bộ môn Công nghệ phần mềm nói riêng những người đã dạy
dỗ và truyền dạt cho em những kiến thức ,kinh nghiệm vô cùng quý giá trong suốt
thời gian học tập dưới mái trường đại học Bách Khoa Hà Nội.
Đặc biêt em xin gửi lời cám ơn đến thầy Đỗ Văn Uy-bộ môn Công nghệ phần
mềm- khoa Công nghê thông tin –ĐH Bách Khoa Hà Nội;thầy đã tận tình giúp đỡ,
trực tiếp chỉ bảo,hướng dẫn em trong suốt quá trình làm đồ án tốt nghiệp. Trong
suốt thời gian làm việc với thầy, em không ngừng tiếp thu thêm nhiều kiến thức bổ
ích mà còn học được ở thầy tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm
túc hiệu quả những điều thực sự cần thiết cho em không chỉ trong quá trình học
tập,nghiên cứu làm đồ án mà còn cho cả quá trình công tác sau này.
Em cũng xin gửi lời cảm ơn chân thành tới gia đình, bạn bè đã động viên ,đóng
góp ý kiến và giúp đỡ trong thời gian vừa qua.
Hà Nội , tháng 5 năm 2011.
Nguyễn Quốc Huy
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
6
MỤC LỤC
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
7
DANH MỤC CÁC HÌNH MINH HỌA
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
8
DANH MỤC CÁC BẢNG
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
9
DANH MỤC CÁC TỪ VIẾT TẮT
STT Từ viết tắt Dạng đầy đủ Giải nghĩa
1 OS Operating System Hệ điều hành
2 DB Database Cơ sở dữ liệu
3 SDK Software Development
Toolkit
Bộ các công cụ hỗ trợ lập trình.
4 DVM Dalvik Virtual Machine Máy ảo Java của Android.
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
10
PHẦN MỞ ĐẦU
Tóm tắt các nhiệm vụ được giao trong đồ án :
• Nghiên cứu hệ điều hành Android
• Tìm hiểu cách xây dựng một ứng dụng trên Android Phone
• Xây dựng ứng dụng thu thuế thu nhập cá nhân trên Android Phone.
Môi trường thực hiện đồ án : Bộ môn Công nghệ phần mềm, Viện CNTT &
Truyền thông – Đại học Bách Khoa Hà Nội.
Bố cục đồ án bao gồm: phần mở đầu, 2 chương và kết luận
Phần mở đầu : Giới thiệu tóm tắt nhiệm vụ đề tài, xác định mục tiêu và phạm vi
thực hiện.
Chương 1 : Nghiên cứu cấu trúc hệ điều hành Android và các bước xây dựng
ứng dụng trên Android phone.
Chương 2 : Xây dựng ứng dụng thu thuế thu nhập cá nhân trên Android phone.
Kết luận: Đánh giá về kết quả thực hiện đồ án, phân tích những thuận lợi, khó
khăn khi thực hiện đồ án, định hướng phát triển đồ án trong tương lai.
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
Hình I-01: iPhone của Apple
11
CHƯƠNG 1 : NGHIÊN CỨU HỆ ĐIỀU HÀNH ANDROID
Nội của chương này sẽ trình bày các vấn đề sau:
o Giới thiệu chung về thị trường hệ điều hành di động hiện nay
o Nghiên cứu về hệ điều hành Android cho di động
o Quy trình cần thiết khi xây dựng ứng dụng trên Android phone
1. Giới thiệu chung về các hệ điều hành di động hiện nay
Như chúng ta đã biết trong xã hội hiện nay khoa học công nghệ phát triển
từng ngày từng giờ những công nghệ hôm nay còn mới nhưng ngày mai đã có
những công nghệ mới hơn tốt hơn thay thế. Trong thị trường điện thoại di động
cũng vậy ,nếu trước đây điện thoại di động chỉ đơn thuần với chức năng nghe gọi và
nhắn tin thì hiện nay dòng điện thoại thông minh ra đời với tính năng xử lí và cấu
hình cao không kém gì những chiếc máy tính cá nhân. Trước sự phát triển mạnh mẽ
của phần cứng di động yêu cầu điện thoại di động xử liếu được nhiều chức năng, đa
dịch vụ vì vậy liên tục các hệ điều hành cho di động ra đời tiêu biểu là 1 số hệ điều
hành: Iphone OS ; Windows Mobile; ….
1.1 Iphone OS
Lịch sử phát triển của iPhone OS cũng bắt đầu
không lâu. Phiên bản đầu tiên được chính thức ra
mắt vào tháng 6 năm 2007. Nó được bắt nguồn
từ hệ điều hành dùng cho máy tính để bàn cũng
của hãng Apple là Mac OS X. Với truyền thống
mang bản sắc riêng, iPhone OS thừa kế từ Mac
OS X đặc điểm là được thiết kế chỉ để chạy được
trên các thiết bị của hãng Apple, vì lẽ đó hiện
nay chỉ có 3 thiết bị sử dụng hệ điều hành này là
iPhone, iPod Touch và iPad. Giao diện người
dùng của iPhone OS được xây dựng dựa trên
giao tiếp trực tiếp, sử dụng tương tác đa chạm,
đồ họa 3D ứng dụng OpenGL ES (OpenGL for
Embedded System) 1.1. Ứng dụng của iPhone
phải được viết và biên dịch theo cách riêng để
phù hợp với bộ xử lý dựa trên kiến trúc ARM.
Ban đầu iPhone OS được phát hành không cho
phép ứng dụng của các hãng thứ ba hoạt động,
nhưng dưới áp lực từ thị trường, Apple đã phải
cung cấp bộ công cụ hỗ trợ phát triển ứng dụng
(SDK) cho các nhà phát triển cũng như mở cửa
cửa hàng phần mềm Apple App Store.
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
Hình I-0: Windows Mobile của Microsof
Hình I-03: Điện thoại Symbian OS
12
1.2 Windows Mobile
Ra đời trước iPhone OS khá lâu, với danh
tiếng từ nhà sản xuất của mình, Windows
mobile đã nhanh chóng được tiếp nhận.
Phiên bản đầu tiên được chính thức phát
hành ngày 19/04/2000 với giao tiếp thông
qua bút stylus. Từ đó đến nay Microsoft đã
liên tục cho ra đời các phiên bản tiếp theo,
trong đó phiên bản mới nhất là Windows
Phone 7. Tuy nhiên qua các năm thị phần
của hệ điều hành này ngày cảng giảm dưới
sự cạnh trạnh mạnh từ nhiều hệ điều hành
khác.
Điểm mạnh của Windows Mobile là các
ứng dụng văn phòng như xử lý văn bản,
email, làm việc và tương thích được với
máy tính để bàn. Ngoài ra nó cũng có thể
chạy được rất nhiều ứng dụng thiết kế theo
“trường phái” Microsoft. Microsoft cung
cấp một framework với một thư viện hàm
API trợ giúp cho các hãng thứ ba phát triển
ứng dụng trên hệ điều hành này, tương tự
như việc họ vẫn làm đối với hệ điều hành Windows cho máy để bản.
1.3 Symbian OS
Đây có lẽ là hệ điều hành dành cho thiết bị
di động có lịch sử phát triển lâu dài nhất.
Tiền thân của Symbian là hệ điều hành
giao diện đồ họa EPOC do hãng Psion -
Anh sản xuất từ những năm 1980, chủ yếu
dành cho các thiết bị PDA.
Điểm mạnh nhất của Symbian chính là sự
phong phú của các ứng dụng dành cho nó.
Ngôn ngữ chính được sử dụng để viết
chương trình cho Symbian là C++ với một
bộ công cụ lập trình (SDK) kèm sẵn cả bộ
biên dịch ra mã máy (trước đây là GCC).
Các ứng dụng cho Symbian có thể được
phát triển trên nhiều hệ điều hành máy
tính khác nhau như Windows, Linux và
Mac OS X với nhiều công cụ (IDE) khác
nhau. Ngoài ra ứng dụng cũng có thể được
viết bằng các ngôn ngữ khác như Python,
Java ME, Flash Lite, Ruby, .NET (Visual
Basic và C#) Symbian cũng hỗ trợ cài đặt phần mềm thông qua máy tính để bàn.
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
Hình I-0: BlackBerry OS của RIM
Hình I-0: WebOS của Palm
13
Tuy nhiên đến phiên bản 9, các ứng dụng để cài đặt trên Symbian cần thêm một chữ
ký điện tử để xác thực và bảo vệ quyền lợi của các nhà phát triển phần mềm thu phí,
nhưng nó khiến việc cài đặt trực tiếp trở nên khó khăn hơn. Symbian đã phải áp
dụng thêm đặc điểm này nhằm hạn chế sự bùng phát của các phần mềm độc hại trên
hệ điều hành này.
Một số nhà sản xuất tiêu biểu như Nokia, Sony Ericsson, Samsung, Sharp, Fujitsu
1.4 Blackberry OS
Cũng hướng tới người dùng doanh
nhân, nhưng BlackBerry của
Research In Motion (RIM) lại được
chú ý hơn Windows Mobile.
BlackBerry OS cung cấp khả năng
đa nhiệm, và được thiết kế cho các
thiết bị sử dụng phương pháp nhập
đặc biệt, thường là trackball hoặc
màn hình cảm ứng. Hệ điều hành
được hỗ trợ MIDP 1.0 và WAP 1.2.
Các phiên bản trước đó cho phép
đồng bộ hóa không dây thư điện tử
và lịch với Microsoft Exchange
Server , và với cả Lotus Domino.
Phiên bản OS 4 hiện tại hỗ trợ MIDP
2.0, có khả năng kích hoạt không dây
hoàn toàn và đồng bộ thư điện tử ,
lịch, công việc, ghi chú và danh bạ
với Exchange, và khả năng hỗ trợ Novell
GroupWise, Lotus Notes khi kết hợp với
BlackBerry Enterprise Server.
1.5 Web OS
Palm Pre với hệ điều hành WebOS mới được
xem là đối thủ nặng ký của iPhone. Nó được
thiết kế dung hòa giữa sự đơn giản và đẹp của
di động Apple lẫn các tính năng mạnh mẽ của
Android hay Windows Mobile.
Vốn được xây dựng với nhân là Linux, người
dùng có thể chạy nhiều ứng dụng đồng thời
trên WebOS, các ứng dụng được sắp xếp tiện
sử dụng, dễ tìm kiếm. Nếu iPhone dành cho
tất cả mọi người, Windows Mobile cho ông
chủ, Android của lập trình viên, BlackBerry
hướng tới người chuộng thông tin thì WebOS
khôn khéo với xu thế mạng xã hội và web 2.0
với sự hỗ trợ mãnh mẽ về trình duyệt web,
HTML 5, Javascript và CSS. Đặc biệt WebOS
còn được hỗ trợ về flash từ Adobe.
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
Hình I-0: Maemo của Nokia
14
1.6 Maemo OS
Cũng được
phát triển từ nguồn
mở là Debian
Linux, Maemo
của Nokia
đem tới người
dùng một giao diện
theo dạng thẻ với
các nút đóng mở
như cửa sổ
chương trình trên
máy tính. Tuy
nhiên hệ điều hành
này mới chỉ được
sử dụng cho các
thiết bị của
Nokia và vẫn còn nhiều hạn chế như khả năng đa nhiệm chưa thật tốt, trình duyệt
web chậm và khả năng chơi flash chưa tốt.
Dưới đây là 1 số thông tin so sánh:
iPhone
3.0
Android
(G1)
Windows
Mobile6.
5
BlackBerry
4.6
WebOS
(Palm
Pre)
Đa ứng dụng Không Có Có Có Có
Push Mail Có Có Có Có Có
Cảm ứng Có Có thể Có thể Có Có
Stereo Bluetooth Có Có Có Có Có
Flash trên trình
duyệt
Không Không Có Không Có
Quay video Không Có Có Có Không
Định vị GPS thời
gian thực
Có Có Có Có Có
Copy/Paste Có Có Có Có Có
Search hệ thống Có Không Có Không Có
MMS Có
(ảnh)
Có Có Có Có
Webkit Browser Có Có Không Không Có
Kho ứng dụng Có Có Có Có Có
Nguồn mở Không Có Không Không Không
Bảng I-01: So sánh các chức năng của một số hệ điều hành di động
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
Hình I-08: Logo của Android
15
47.20%
20.80%
15.10%
8.80%
4.70%
3.40%
Symbian
BlackBerry
iPhone
Window
Mobile
Android
Khác
Hình I-07: Thị trường di động hết năm 2009
2. Hệ điều hành 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
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
Hình I-09: Điện thoại Nexus One của Google do HTC sản xuất
Hình I-10: Biểu đồ pháp triển Android từ 2/2010đến 1/2011
16
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.
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
17
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
18
2.1 Tổng quan về Android
2.1.1 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
• 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à 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.1.2 Các tính năng của Android
Giao diện Hỗ trợ màn hình kích thước lớn, card đồ họa VGA, đồ họa 2D,
đồ họa 3D dựa trên OpenGL ES và tương thích với giao diện
truyền thống của các thiết bị di động. Một số tính năng khác:
autocomplete (gợi ý và tự đồng điền), màn hình chính tiện
dụng cho phép tìm kiếm dữ liệu thông tin. Ngoài ra Androd
còn cho phép tìm kiếm qua giọng nói.
Lưu trữ Sử dụng hệ quản trị cơ sở dữ liệu quan hệ SQLite để lưu trữ
dữ liệu.
Kết nối Hỗ trợ nhiều giao thức kết nối khác nhau: GSM/EDGE, IDEN,
CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi và WiMAX.
Tin nhắn Hỗ trợ 2 giao thức truyền tải tin nhắn là SMS và MMS
Trình duyệt
web
Trình duyệt web của Android được xây dựng dựa trên nền
Webkit. Trình duyệt này đạt được 93/100 điểm với bài kiểm
tra Acid3. Hỗ trợ Flash phiên bản 10, hỗ trợ upload file qua
trình duyệt.
Hỗ trợ Java Ứng dụng trên Android được viết bằng mã Java có thể được
biên dịch để chạy trên máy ảo Dalvik Virtual Machine. Tuy
nhiên Android lại không trợ J2ME như nhiều dòng điện thoại
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
19
hiện đại khác. Ngoài ra ứng dụng trên Android còn có thể
được cài đặt trên thẻ nhớ ngoài nhằm mở rộng dung lượng bộ
nhớ.
Hỗ trợ Media Một số chuẩn của 3GP và MP4 như H263, H264, MPEG-4 SP,
AAC ; MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF,
BMP. Cho phép quay phim và xem lại. Cho phép gửi ảnh lên
Piccassa và video lên Youtupe trực tiếp từ thiết bị. Ngoài ra
Android còn đi kèm theo một trình quản lý thư viện
(galleries).
Hỗ trợ phần
cứng
Video, camera, màn hình cảm ứng, gia tốc kế, từ phổ kế, các
thiết bị tăng tốc đồ họa 2D và 3D
Thương mại Google cho ra đời một cửa hàng trực tuyến tại địa chỉ
bắt đầu từ năm 2008, cho
phép người dùng tải và cải đặt phần mềm vào Android mà
không phải thông qua máy tính để bàn.
Hỗ trợ đa chạm Android có hỗ trợ cảm ứng đa chạm với các thiết bị hỗ trợ
công nghệ này. Tuy nhiên tính năng này mặc định bị tắt nhằm
tránh vi phạm tới bằng sáng chế của Apple. Tính năng này chỉ
được bật sẵn trên Nexus One của Google và Motorola Droid
Gọi điện video Không chính thức hỗ trợ, nhưng có thể sử dụng trên chiếc
HTC Evo 4G
Đa nhiệm Hỗ trợ đa nhiệm
Hỗ trợ phát
triển ứng dụng
Android được cung cấp một bộ công cụ trợ giúp người lập
trình (SDK) như máy ảo (Emulator), các công cụ debug, theo
dõi bộ nhớ, dữ liệu Ngoài ra bộ SDK này cũng cung cấp 1
plugin cho Eclipse IDE giúp người phát triển nhanh chóng và
dễ dàng tạo mới một project.
Bảng I-02: Bảng tính năng Android OS
2.2 Kiến trúc Android
Kiến trúc Android gồm 4 tầng:
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
20
Hình I-11: Các tầng kiến trúc Android
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.
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
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
21
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.
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.
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.
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.
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
22
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.
2.3 Phần mềm chạy trên Android
2.3.1 Phân loại
Phần mềm trên Android có 2 dạng chia theo mã nguồn. Dạng thứ nhất là các
phần mềm viết bằng mã thuần C cho kiến trúc ARM có thể biên dịch bằng bộ biên
dịch mã nguồn mở GCC và cài đặt vào Android thông qua công cụ Android Native
Development Kit. Các phần mềm này chạy trực tiếp với nhân Linux, vì vậy các
phần mềm dạng này thường là các thư viện trong lớp Libraries của Android. Các
lớp trong các thư viện này có thể được gọi từ các chương trình viết bằng mã Java
khác thông qua máy ảo Dalvik. Tuy Google cung cấp công cụ cho phép cài đặt và
thực thi các chương trình viết bằng ngôn ngữ C trên Android, thực tế việc phát triển
ứng dụng dạng này là khó khăn, bởi các thư viện C của Android không phải là các
thư viện chuẩn như trên các hệ điều hành khác.
Dạng phần mềm thứ hai được viết bằng ngôn ngữ Java. Mã Java sau khi được
biên dịch sẽ được đóng gói thành một file đơn .apk duy nhất. Đây chính là dạng file
dùng cho việc phân phối và cài đặt các ứng dụng Android trên thiết bị. Toàn bộ
code trong một gói .apk được coi là một ứng dụng. Tuy nhiên điểm cần chú ý rằng
thực chất Android chỉ sử dụng lại cú pháp của ngôn ngữ Java là chủ yếu chứ không
hỗ trợ đầy đủ ngôn ngữ này. Các thư viện Java cũng như các hàm API của Android
chỉ là một phần của bộ chuẩn Java Platform Standard Edition (Java SE) hay bộ thu
nhỏ dành cho di động Java Platform Micro Edition (Java ME hay còn gọi là J2ME).
Máy ảo Java của Android cũng là một dạng khác dựa trên cấu trúc của máy ảo Java.
Vì vậy việc tái sử dụng mã nguồn của các ứng dụng viết cho các hệ điều hành khác
vào các ứng dụng trên Android cũng khá khó khăn.
Trong khuôn khổ đồ án này sẽ tập trung vào nghiên cứu và trình bày về phát
triển ứng dụng trên Android sử dụng ngôn ngữ Java.
2.3.2 Các thành phần cơ bản của ứng dụng trên Android
Ứng dụng Android có 4 thành phần chính:
• Activity: Một “activity” thực hiện một giao diện trực quan để người dùng có thể
thao tác. Ví dụ một activity có thể hiện ra một list cho người dùng lựa chọn. Hay
như trong một ứng dụng gửi tin nhắn cần có một activity để hiển thị danh sách các
contacts cho người dùng lựa chọn, một activity hiện lên màn hình soạn thảo để viết
tin, một activity cho phép người dùng xem lại các tin nhắn 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 đó. Cửa sổ này có thể là toàn màn hình hoặc
nhỏ hơn màn hình và đè lên cửa sổ khác. Thành phần trực quan của cửa sổ được
cung cấp bởi một hệ thống các khung nhìn - các đối tượng thừa kế từ lớp View (như
TextView để thể hiện các dòng văn bản, ButtonView để thể hiện các nút, ). Mỗi
khung nhìn điều khiển một vùng hình chữ nhật bên trong cửa sổ. Các khung nhìn
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
23
chính là nơi một activity tương tác với người dùng. Các khung nhìn được đặt vào
cửa sổ bởi hàm Activity.setContentView(View Oject).
• 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. Ứng dụng có thể có nhiều
activity cho phép người dùng lựa chọn bài hát hay bắt đầu chơi nhạc. Tuy nhiên bộ
phận phát nhạc lại không được được điều khiển bởi activity bởi người dùng mong
muốn nhạc vẫn được chơi khi người dùng rời khỏi giao diện của ứng dụng và
chuyển sang một công việc khác. Khi đó activity của ứng dụng cần khởi động một
service điều khiển việc phát nhạc ở nền. Như vậy hệ thống có thể duy trì service
điều khiển việc phát nhạc ngay cả khi người dùng chuyển sang một giao diện khác.
• 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. Rất nhiều thông
báo bắt nguồn từ trong mã của hệ thống như thông báo timezone thay đổi, pin yếu,
có cuộc gọi đến Ngoài ra một ứng dụng cũng có thể khởi tạo các broadcasts nhằm
thông báo cho các ứng dụng khác các thông tin cần thiết. Một ứng dụng có thể có
tùy ý số lượng các Broadcasts Receiver để hưởng ứng lại các thông báo tương ứng
mà nó cho là quan trọng. Tất cả các receiver đó đều thừa kế từ lớp cơ sở
BroadcastsReceiver. Broadcasts Receiver không thể hiện giao diện trực quan. Tuy
nhiên nó có thể khởi động một activity hưởng ứng lại thông tin nhận được hoặc có
thể sử dụng lớp Notification Manager để cảnh báo người dùng.
• 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. Content Provider thừa kế từ lớp cơ sở
ContentProvider để thực hiện một tập các phương thức chuẩn cho phép các ứng
dụng lấy hoặc lưu trữ các kiểu dữ liệu mà nó điều khiển. Tuy nhiên các ứng dụng
không nên gọi trực tiếp các hàm này. Thay vào đó chúng sử dụng đối tượng
ContenResolver và các phương thức của chúng. Một đối tượng ContenResolver có
thể nói chuyện với bất kì ContentProvider nào, chúng kết hợp với các provider để
quản lí các liên lạc liên tiến trình.
2.3.3 Quản lí thành phần
Đặc điểm trung tâm của Android là một ứng dụng có thể sử dụng các thành phần
của ứng dụng khác. Ví dụ, ứng dụng cần tạo ra một danh sách các hình ảnh đã được
phát triển bởi một ứng dụng khác ta chỉ cần gọi danh sách đó ra mà không phải xây
dựng lại trong ứng dụng mới. Các ứng dụng không thể kết hợp code với những ứng
dụng khác hay liên kết tới code của ứng dụng khác. Nó đơn giản chỉ khởi động
đoạn code của ứng dụng khác khi cần thiết. Để làm được điều này, hệ thống phải có
khả năng khởi động một tiến trình ứng dụng khi cần đến bất cứ phần nào của nó
cũng như khởi tạo các đối tượng java cho phần đó. Do đó không giống như ứng
dụng trên các hệ thống khác, Android không có một lối vào chính (hàm main()).
Thay vào đó, nó có những thành phần cần thiết mà hệ thống có thể khởi tạo và chạy
khi cần thiết.
Các thành phần của một ứng dụng mà nó sử dụng được nhóm vào một tác vụ (task).
Đối với người dùng thì tác vụ tương đương với ứng dụng, nhưng bên trong một tác
vụ này không hẳn chỉ chứa các thành phần của ứng dụng đó mà nó còn có thể chứa
thành phần của các ứng dụng khác do ứng dụng chính gọi. Các thành phần trong
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
24
một tác vụ này được sắp xếp thành một ngăn xếp, trong đó thành phần gốc chính là
thành phần ban đầu khi ứn dụng được kích hoạt. Khi một thành phần trong tác vụ
gọi mới một thành phần khác, thành phần mới này sẽ được đặt lên đỉnh ngăn xếp.
Thành phần ở đỉnh ngăn xếp là thành phần hoạt động chính, các thành phần khác
vẫn hoạt động ngầm. Điều này có thể thấy rõ hơn đối với activity. Một activity có
thể gọi một activity khác. Activity được gọi sẽ xuất hiện trên màn hình. Khi người
dùng đóng activity này lại, activity gọi sẽ xuất hiện trở lại trên màn hình.
Toàn bộ các thành phần trong một tác vụ cũng có thể được xử lý như một khối đơn
khi chúng có thể bị đẩy xuống hoạt động nền nhường chỗ cho một tác vụ mới, và
cũng có thể được đẩy lên hoạt động chính khi người dùng gọi lại tác vụ này. Bản
thân các thành phần trong một tác vụ khi gọi một thành phần mới cũng có thể quyết
định thành phần mới được gọi này cùng tác vụ với mình không hay tạo thành một
tác vụ mới (nói cách khác trong trường hợp này là kích hoạt một ứng dụng hay một
tác vụ khác).
Khi hay tác vụ hoạt động nền, nó vẫn có thể tiếp tục giao tiếp với hệ thống thông
qua thành phần Broadcast Receiver. Thành phần này đơn giản đóng vai trò như đôi
tai của tác vụ, tác vụ chỉ cần ngồi chơi và chờ khi hệ thống có thông báo gọi tới mới
phải hoạt động.
Khi một tác vụ nhàn rỗi không hoạt động trong một thời gian, theo mặc định hệ
điều hành sẽ loại bỏ tất cả các thành phần của tác vụ của người dùng trừ thành phần
gốc. Do đó khi quay trở lại trạng thái của tác vụ vẫn giữ nguyên nhưng người dùng
phải bắt đầu lại từ đầu. Đặc điểm này dựa trên ý tưởng rằng khi đã bỏ quên tác vụ
này tức là người dùng đã không còn muốn tiếp tục việc đang làm. Việc trở lại ngay
thành phần đầu cho phép người dùng nhanh chóng thực hiện công việc mới với tác
vụ cũ.
2.3.4 Quản lí tiến trình
Khi khởi chạy một ứng dụng, Android sẽ gọi ra thành phần mặc định của nó, khởi
chạy trong một tiến trình Linux gồm 1 luồng đơn (thread). Mặc định các thành phần
tiếp theo sẽ chạy trong tiến trình và luồng này. Nhưng cũng có thể các thành phần
của cùng 1 tác vụ có thể chạy trong các tiến trình khác nhau hoặc trong các luồng
khác nhau.
Mỗi thành phần của ứng dụng đều có những thuộc tính điều khiển được quy định
trong tệp điều khiển (tệp manifest), trong đó có thuộc tính quy định thành phần đó
chạy trong tiến trình của riêng nó, có thể chia sẻ tiến trình của nó với các thành
phần khác hay không, hay quy định các thành phần của ứng dụng này có thể được
chạy trong tiến trình của ứng dụng khác, tức là các ứng dụng khác nhau có thể dùng
chung các thông tin xác định người dùng của tiến trình Linux và dùng chung chữ ký
bảo mật.
Tất cả các thành phần sau của một tác vụ đều được gọi và khởi tạo từ luồng chính
trong tiến trình ban đầu của tác vụ đó. Một số thành phần chỉ được phép chạy trong
luồng này còn số khác có thể chạy trong luồng khác hoặc trong tiến trình khác.
Việc kết thúc tiến trình không do chương trình quyết định hay người dùng quản lý
mà hoàn toàn do Android tự quyết định. Khi thoát một ứng dụng thực chất là đẩy
tác vụ của ứng dụng đó xuống hoạt động nền. Android sẽ tự động kết thúc một tiến
trình trong một số trường hợp như thiếu bộ nhớ, cần giải phóng cho tác vụ mới có
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A
Hình I-12: Vòng đời của Ac@vity
25
độ ưu tiên cao hơn. Việc chọn tiến trình để tắt được dựa trên người dùng. Các tiến
trình chạy nền thường được ưu tiên tắt. Trước khi tắt 1 tiến trình, trạng thái của các
thành phần đang hoạt động sẽ được lưu lại, và do đó khi người dùng quay trở lại,
tiến trình lại được khôi phục như cũ và người dùng không hề biết nó đã bị tắt.
Mỗi tiến trình đều có thể có nhiều luồng khác nhau. Mặc định 1 tác vụ trên Android
chạy trong một luồng đơn của một tiến trình. Nhưng đôi khi ta muốn một số thao
tác được thực hiện bên dưới tách biệt với giao diện bên ngoài với người dùng nhằm
tối ưu tốc độ tương tác với người dùng, ta có thể sinh ra các luồng con để chạy các
thao tác này. Android hỗ trợ khá nhiều lớp quản lý luồng này từ Java.
2.3.5 Vòng đời của một số thành phần
Các thành phần ứng dụng đều có vòng đời riêng từ lúc bắt đầu khi Android khởi tạo
chúng để trả lời lại các đối tượng Itent cho đến lúc kết thúc khi các biểu hiện (đối
tượng cụ thể) của chúng bị hủy. Trong vòng đời đó, chúng có thể trải qua nhiều giai
đoạn với nhiều trạng thái khác nhau. Mục này sẽ trình bày về vòng đời của activity,
broadcasts receiver, service bao gồm các trạng thái, các phương thức để thay đổi
trạng thácủa chúng.
Sinh viên thực hiện: Nguyễn Quốc Huy- 20061494 - Khóa 51- Lớp Công nghệ phần mềm A