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:
- 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
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ọ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
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.
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
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
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ỉ
http://www.android.com/market/ 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à
Đâ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
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.
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
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