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.. Hình I
Trang 1TRƯỜ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
Trang 2PHIẾ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
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ảovệ:
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
Trang 3TÓ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ềunhữ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ểncá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 naytrê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 smartphone 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ấtsmart 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 Androidtrê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 thuthuế 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 vithự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 Androidphone
- 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
Trang 4Windows 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 Androidoperating 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
Trang 5LỜ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ácthầ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 khoaCô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ốtthờ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ầnmề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 Trongsuố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êmtú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ọctập,nghiên cứu làm đồ án mà còn cho cả quá trình công tác sau này
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
Trang 6MỤ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
Trang 7DANH MỤC CÁC HÌNH MINH HỌA
Trang 8DANH 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
Trang 9DANH MỤC CÁC TỪ VIẾT TẮT
Trang 10PHẦN MỞ ĐẦU Tóm tắt các nhiệm vụ được giao trong đồ án :
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
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
Trang 11Hình I-01: iPhone của Apple
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ểntừ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 độngcũ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ấuhì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, đadị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ềuhà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
Trang 12Hình I-0: Windows Mobile của Microsof
Hình I-03: Điện thoại Symbian OS
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
Trang 13Hình I-0: BlackBerry OS của RIM
Hình I-0: WebOS của Palm
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 ápdụ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
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
Trang 14Hình I-0: Maemo của Nokia
5
BlackBerry 4.6 WebOS (Palm
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
Trang 15Hình I-08: Logo của Android
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
Trang 16Hì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
Android trên ngôn ngữ lập trình Java Mặc dù mới ra đời nhưng Android đã tạo rasứ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ữngchiế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ớinhư Motorola, HTC, SumSung, Sony Ericsson cũng đã cam kết sẽ gắn bó vớiAndroid Ngoài ra Android còn có thể chạy trên các netbook và có thể sẽ trở thànhmộ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 trongnhữ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
Trang 182.1 Tổng quan về Android
2.1.1 Những điểm mạnh của Android
nền tảng hoàn toàn mở (mã nguồn mở – open source), do đó những chiếc điện thoạichạy Android sẽ không mất phí cho hệ điều hành, kéo theo giá thành của nhữngchiế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ủaAndroid
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
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épngườ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
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ácthiế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ấtcao
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ệntruyề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ệndụng cho phép tìm kiếm dữ liệu thông tin Ngoài ra Androdcò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ềnWebkit Trình duyệt này đạt được 93/100 điểm với bài kiểmtra Acid3 Hỗ trợ Flash phiên bản 10, hỗ trợ upload file quatrì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 Tuynhiê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
Trang 19hiệ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ênPiccassa và video lên Youtupe trực tiếp từ thiết bị Ngoài raAndroid 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ácthiế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, chophé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ằmtrá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
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:
Trang 20Hình I-11: Các tầng kiến trúc Android
Đâ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ựnglõ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 Androidcò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ụngmedia, camera, games Hơn nữa Google còn cung cấp kho ứng dụng cho Android
thoải mái download để sử dụng
Đây là nơi chứa các dịch vụ và hệ thống quản lí ứng dụng bao gồm:
trí
khác hoặc chia sẻ dữ liệu của nó cho các ứng dụng
chí cả trình duyệt web được nhúng vào trong ứng dụng
hoặc gỡ bỏ các gói ứ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
Trang 21cuộc gọi, tin nhắn
trong code như các chuỗi, icon, các file layout, các đối tượng graphics được
sử dụng
dưới dạng thanh trạng thái
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ầnkhác nhau trong hệ thống Dưới đây là một số thư viện lõi:
cho các thiết bị nhúng dựa trên nhân Linux
cũng như là các định dạng ảnh tĩnh như MPEG4, H.264, MP3, AAC, AMR,JPG, và PNG
thể hiện đồ họa, kết hợp các lớp đồ họa 2D, 3D từ nhiều ứng dụng
trình duyệt Web Android và trình duyệt Web nhúng
cả các ứng dụng
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ănxế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ảinạ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ườngcầ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ựathanh 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 SDKcung cấp công cụ cho phép chuyển các file Java class sau khi biên dịch sang dạngfile 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ácfile 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épchạy cùng lúc nhiều ứng dụng
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ốngnhư 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 Linuxnhư 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
Trang 22Như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 ảoDVM 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ácphầ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êndịch mã nguồn mở GCC và cài đặt vào Android thông qua công cụ Android NativeDevelopment Kit Các phần mềm này chạy trực tiếp với nhân Linux, vì vậy cácphần mềm dạng này thường là các thư viện trong lớp Libraries của Android Cáclớ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ã Javakhá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ácthư 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 đượcbiên dịch sẽ được đóng gói thành một file đơn apk duy nhất Đây chính là dạng filedù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ằngthự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 Androidchỉ là một phần của bộ chuẩn Java Platform Standard Edition (Java SE) hay bộ thunhỏ 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ácvà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áttriể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:
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 Haynhư trong một ứng dụng gửi tin nhắn cần có một activity để hiển thị danh sách cáccontacts 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ếttin, 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 đượccung 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ặcnhỏ 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ổ đượccung 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ỗikhung 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
Trang 23chí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àocửa sổ bởi hàm Activity.setContentView(View Oject)
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ềuactivity 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 mongmuố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ộtservice đ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
nhận và hưởng ứng lại những thông báo (broadcasts) được ban ra Rất nhiều thôngbá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ằmthô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 Tuynhiê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
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 ứngdụ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ụngkhô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ượngContenResolver 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ầncủ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 đã đượcphá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âydự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 ứngdụ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ư ứngdụ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ạykhi 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ứathà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
Trang 24mộ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ácvẫ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ườidù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 đơnkhi 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ảnthâ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ộttá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ộttá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ôngqua thành phần Broadcast Receiver Thành phần này đơn giản đóng vai trò như đôitai 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ớiphả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ầngố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ùngphả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 ngaythà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ởichạy trong một tiến trình Linux gồm 1 luồng đơn (thread) Mặc định các thành phầntiế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ầncủ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ồngkhá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 địnhtrong 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ànhphần khác hay không, hay quy định các thành phần của ứng dụng này có thể đượcchạ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ùngchung 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ínhtrong tiến trình ban đầu của tác vụ đó Một số thành phần chỉ được phép chạy trongluồ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à đẩytá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ếntrì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
Trang 25Hình I-12: Vòng đời của Activity
độ ư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ếntrì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ácthà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 Androidchạ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ố thaotá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ằmtố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ácthao 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ạochú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 (đốitượ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 đổitrạng thácủa chúng
Trang 26Hình I-13: Vòng đời của Service
Trên đây em đã trình bày cơ bản về cấu trúc hệ điều hành Android và các thànhphần của 1 ứng dụng cũng vòng đời, thời gian hoạt động của 1 số thành phần cơbản Qua đó hình dung được các bước xây dựng 1 ứng dụng qua các thành phầ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