TRƢỜNG ĐẠI HỌC VINH
VIỆN KỸ THUẬT VÀ CÔNG NGHỆ
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Đề tài:
TÌM HIỂU VÀ PHÂN TÍCH THIẾT KẾ CẤU TRÚC ỨNG DỤNG
TÌM KIẾM ĐỊA ĐIỂM DU LỊCH TRÊN HỆ ĐIỀU HÀNH ANDROID
Sinh viên thực hiện
: Đặng Thị Châu
Lớp
: 54K1-ĐTTT
Giảng viên hƣớng dẫn
: TS. Đặng Thái Sơn
Nghệ An, 05-2018
LỜI MỞ ĐẦU
Hiện nay sự phát triển của công nghệ đang diễn tra hết sức mạnh mẽ, tác
động tới mọi mặt của đời sống xã hội và tới tất cả các khía cạnh của của con ngƣời.
Nổi lên trong các cơng nghệ đó là các cơng nghệ đƣợc tích hợp trên các thiết bị di
động.
Đồng thời ngày nay đời sống của con ngƣời cũng đƣợc nâng cao, kèm theo
đó là xu hƣớng tồn cầu hóa đã kéo theo nhu cầu đƣợc thỏa mãn sở thích đi du lịch
của ngƣời dân ngày càng đƣợc nâng lên.
Nhằm đáp ứng các yêu cầu trên, trong đồ án tốt nghiệp lần nay, nhằm mục
đích nâng cao kiến thức bản của bản thân cũng nhƣ tạo cơ sở nền tảng lý thuyết về
việc lập trình di động cho các bạn sinh viên hay những ngƣời đang có nhu cầu xây
dựng một ứng dụng di động của riêng mình, em xin đƣợc đề xuất đề tài “Tìm hiểu
và phân tích thiết kế cầu trúc ứng dụng tìm kiếm địa điểm du lịch trên hệ điều hành
Android”
Nội dung của đồ án đƣợc trình bày trong 3 chƣơng:
Chƣơng 1. Giới thiệu về hệ điều hành Android
Chƣơng 2. Tạo lập mơi trƣờng phát triển
Chƣơng 3. Phân tích và thiết kế ứng dụng
Nghệ An, ngày tháng 05 năm 2018
Sinh viên thực hiện
Đặng Thị Châu
1
TĨM TẮT
Đề tài đƣợc xây dựng nhằm mục đích tìm hiểu và cung cấp kiến thức về hệ
điều hành Android, các tính năng đặc điểm của hệ điều hành này, đồng thời hƣớng
dẫn tổng quát cách thức tạo lập môi trƣờng lập trình, cách tạo mới một ứng dụng và
phân tích thiết kế cấu trúc ứng dụng tìm kiếm địa điểm du lịch trên hệ điều hành
Android.
ABSTRACT
The project is designed to find out and provide the knowledge about the
Android operating system, the features of this operating system, and general
guidance how to create the programming environment, how to create a new
application and analytical designing architectural of a travel search application on
the Android operating system.
2
MỤC LỤC
LỜI MỞ ĐẦU ................................................................................................................1
TĨM TẮT........................................................................................................................2
DANH SÁCH HÌNH ẢNH...........................................................................................5
DANH SÁCH BẢNG BIỂU.........................................................................................7
DANH SÁCH TỪ VIẾT TẮT ......................................................................................7
CHƢƠNG 1. GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH ANDROID................................8
1.1. Lích sử phát triển hệ điều hành Android .......................................................8
1.2. Các tính năng đƣợc Android hỗ trợ ...............................................................12
1.3. Giao diện của hệ điều hành Android ..............................................................13
1.4. Kiến trúc của Android ......................................................................................14
1.4.1. Tầng ứng dụng .........................................................................................14
1.4.2. Tầng khung làm việc với ứng dụng ......................................................14
1.4.3. Thƣ viện....................................................................................................15
1.4.4. Android Runtime .....................................................................................15
1.4.5. Nhân Linux...............................................................................................16
1.5. Mô phỏng ứng dụng Android..........................................................................17
1.6. Các thành phần trong một ứng dụng Android...............................................17
1.6.1. AndroidManifest.xml ..............................................................................17
1.6.2. File R.java.................................................................................................18
1.7 . Chu kì ứng dụng Android .........................................................................19
1.7.1. Chu kỳ sống thành phần .........................................................................20
1.7.2. Các trạng thái của chu kỳ sống..............................................................20
1.7.3. Chu kỳ sống của ứng dụng .....................................................................21
1.7.4. Các sự kiện trong chu kỳ sống của ứng dụng .....................................21
1.7.5. Các phƣơng thức của chu kỳ sống ........................................................22
1.8 . Các thành phần giao diện trong Android ......................................................23
1.8.1. View ................................................................................................................23
1.8.2. ViewGroup ..............................................................................................23
1.8.3. Button .......................................................................................................26
1.8.4. ImageButton .............................................................................................26
3
1.8.5. ImageView................................................................................................27
1.8.6. RadioButton .............................................................................................28
1.8.7. TextView .................................................................................................28
1.8.8. EditText ...................................................................................................28
1.8.9. ContextMenu............................................................................................29
1.8.10. Activity và Intent ..................................................................................29
1.7. Content provider và Uri...................................................................................31
1.8. Socket ................................................................................................................31
1.9. Kết luận chƣơng................................................................................................33
CHƢƠNG 2. TẠO LẬP MÔI TRƢỜNG PHÁT TRIỂN .........................................34
2.1. Thiết lập môi trƣờng ........................................................................................34
2.1.1. Cài đặt Java ..............................................................................................34
2.1.2. Cài đặt Android Studio ...........................................................................35
2.2. Tạo ứng dụng Android .....................................................................................37
2.2.1. Tạo mới Project ......................................................................................37
2.2.2. Tạo máy ảo ..............................................................................................44
2.2.3. Build và thực thi ứng dụng.....................................................................47
2.3. Kết luận chƣơng................................................................................................48
CHƢƠNG 3. PHÂN TÍCH VÀ THIẾT KẾ GIAO DIỆN ỨNG DỤNG ...............49
3.1. Giao diện phần mềm ........................................................................................49
3.2. Thiết kế giao diện ứng dụng ............................................................................49
3.2.1. Màn hình trang chủ .................................................................................49
3.2.2. Giao diện menu .......................................................................................52
3.2.3. Giao diện chi tiết điểm du lịch ..............................................................55
3.2.4. Giao diện chi tiết địa điểm khách sạn...................................................57
3.2.5. Giao diện chi tiết địa điểm Ẩm thực.....................................................60
3.2.6. Giao diện màn hình trợ giúp ..................................................................63
3.3. Kết luận chƣơng................................................................................................64
KẾT LUẬN ...............................................................................................................65
TÀI LIỆU THAM KHẢO .......................................................................................66
4
DANH SÁCH HÌNH ẢNH
Hình 1.1. Q trình phát triển phiên bản Android đầu tiên......................................8
Hình 1.2. Giao diện Gmail trên Android trên phiên bản đầu tiên ...........................11
Hình 1.3. Giao diện chợ ứng dụng Android trên phiên bản 1.0 và 5.1...................11
Hình 1.4. Giao diện hiển thị trang chủ Android trên các phiên bản 2.2. và 5.1 ....12
Hình 1.5. Kiến trúc một hệ thống Android .................................................................14
Hình 1.6. Mơ hình hợp tác giữa máy ảo và các dịng lệnh .......................................16
Hình 1.7. Android emulator .........................................................................................17
Hình 1.8. Chu kỳ sống của ứng dụng Android ...........................................................20
Hình 1.9. Chu kỳ sống của Activity.............................................................................20
Hình 1.10. Các sự kiện trong chu ký sống của một ứng dụng Android ..................22
Hình 1.11. Cấu trúc một giao diện ứng dụng Android ..............................................23
Hình 1.12. Bố trí các widget sử dụng LinearLayout..................................................24
Hình 1.13. Bố trí các widget sử dụng LinearLayout..................................................24
Hình 1.14. Bố trí widget trong RetaliveLayout ..........................................................25
Hình 1.15. Bố trí widget trong TableLayout ...............................................................26
Hình 1.16. ImageButon..................................................................................................27
Hình 1.17. Minh hoạ cho một ListView......................................................................27
Hình 1.18. Minh họa một Radiobutton........................................................................28
Hình 1.19. Minh hoạ context menu .............................................................................29
Hình 1.20. Mơ hình truyền dữ liệu giữa 2 Activity ...................................................30
Hình 1.21. Minh họa kết nối giữa client và Socket ...................................................32
Hình 1.22. Minh họa hoạt động của socket ................................................................32
Hình 1.23. Giao tiếp giữa Client và Server ................................................................33
Hình1.24. Luồng dữ liệu giữa client và server ..........................................................33
Hình 2.1. Cài đặt Java JDK ..........................................................................................34
Hình 2.2. Cài đặt IDE Eclipse......................................................................................34
Hình 2.3. Tải về Android Studio..................................................................................35
Hình 2.4. Điều khoản của Android Studio .................................................................36
Hình 2.5. Trang cài đặt Android Studio ......................................................................36
5
Hình 2.6. Trang khởi động Android Studio................................................................37
Hình 2.7. Tạo mới ứng dụng.........................................................................................37
Hình 2.8. Đặt tên cho ứng dụng ...................................................................................38
Hình 2.9. Lựa chọn nền tảng phát triển cho ứng dụng. .............................................39
Hình 2.10. Lựa chọn phiên bản Android phù hợp .....................................................40
Hình 2.11. Lựa chọn giao diện ứng dụng....................................................................40
Hình 2.12. Đặt tên cho layout của ứng dụng ..............................................................41
Hình 2.13. Giao diện lập trình......................................................................................41
Hình 2.14. Thiết kế giao diện bằng cách kéo thả.......................................................43
Hình 2.15. Thiết giao diện bằng text ...........................................................................43
Hình 2.16. Khởi động máy ảo từ Toolbar ...................................................................44
Hình 2.17. Khởi động máy ảo từ Tools ......................................................................44
Hình 2.18. Tạo thiết bị ảo .............................................................................................44
Hình 2.19. Lựa chọn thiết bị.........................................................................................45
Hình 2.20. Lựa chọn hệ điều hành ...............................................................................45
Hình 2.21. Hồn thành chọn máy ảo ...........................................................................46
Hình 2.22. Chạy máy ảo ...............................................................................................46
Hình 2.23. Hồn thành khởi động máy ảo..................................................................47
Hình 2.24. Build ứng dụng............................................................................................47
Hình 2.25. Build thành cơng ứng dụng .......................................................................48
Hình 3.1. Mơ hình ứng dụng tìm kiếm địa điểm du lịch ..........................................48
Hình 3.2. Thiết kế giao diện màn hình trang chủ trên Android Studio...................49
Hình 3.3 giao diện màn hình trang chủ chạy trên máy ảo ........................................51
Hình 3.4. Thiết kế giao diện menu trên Android studio ...........................................52
Hình 3.5. Giao diện menu ứng dụng chạy trên máy ảo ............................................53
Hình 3.6. Thiết kế màn hình địa điểm du lịch trên Android Studio ........................54
Hình 3.7. Thiết kế dòng chi tiết địa điểm du lịch trên Android Studio ...................54
Hình 3.8 Thiết kế màn hình khách sạn trên Android Studio ....................................57
Hình 3.9 Thiết kế dịng chi tiết khách sạn trên Android Studio...............................57
Hình 3.8. Thiết kế giao diện danh sách ẩm thực trên Android Studio ....................60
Hình 3.9. Thiết kế dòng chi tiết Nhà hàng Ẩm thực trên Android Studio..............60
6
Hình 3.10 Thiết kế giao diện màn hình trợ giúp ứng dụng .......................................62
DANH SÁCH BẢNG BIỂU
Bảng 1.1. Các thuộc tính của Intent.............................................................................30
DANH SÁCH TỪ VIẾT TẮT
Từ viết tắt
Từ đầy đủ
Giải thích
SDK
Software Development Kit
Cơng cụ phát triển phần mềm
API
Application Programming Interface
Giao diện lập trình ứng dụng
JNI
Java Native Interface
JDK
Java Development Kit
Bộ giao diện đƣợc viết bằng
Java
Công cụ phát triển java
7
CHƢƠNG 1. GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH ANDROID
1.1. Lích sử phát triển hệ điều hành Android
Android là hệ điều hành mở nguồn mở, dành cho các thiết bị di động nhƣ
điện thoại thơng minh hay máy tính bảng, đƣợc cung cấp miễn phí do Google phát
triển dựa trên nền tảng của hệ điều hành Linux.
Do đây là một hệ điều hành mã nguồn mở nên các hãng sản xuất phần cứng
nhƣ Samsung, LG, Sony đều có thể đƣợc sử dụng hệ điều hành Android cho thiết bị
của mình, miễn là các thiết bị này đáp ứng đƣợc các tiêu chuẩn cơ bản do Google
đặt ra (nhƣ việc đƣợc tích hợp các chức năng nhƣ cảm ứng chạm, GPS, 4G,...).
Đồng thời các nhà sản xuất có thể tự do tùy chỉnh thay đổi phiên bản
Android trên máy của mình một cách theo yêu cầu và khả năng của mình mà không
bị ràng buộc với phiên bản gốc hay cần phải xin phép hay trả bất kì khoản phí nào,
miễn là phải đảm bảo tính tƣơng thích ngƣợc của phiên bản riêng biệt đó.
Android là nền tảng cho thiết bị di động bao gồm một hệ điều hành và một số
ứng dụng chủ đạo. Bộ công cụ Android SDK cung c ấp các công cụ và bộ thƣ viên
các hàm API cần thiết để phát triển ứng dụng cho nền tảng Android sử dụng ngơn
ngữ lập trình java.
Ban đầu, Android là hệ điều hành cho các thiết bị di động dựa trên nhân
Linux do công ty Android Inc. (California, Mỹ) thiết kế. Cơng ty này sau đó đƣợc
Google mua lại vào năm 2005 và hệ điều hành này đƣợc phát triển và hồn thiện
đến ngày nay.
Hình 1.1. Q trình phát triển phiên bản Android đầu tiên
8
Android đƣợc phát hành phiên bản beta đầu tiên vào tháng 11 năm 2007 và
phiên bản thƣơng mại đầu tiên, Android 1.0 vào tháng 9 năm 2008.
Kể từ tháng 4 năm 2009, tất cả các phiên bản Android đƣợc phát triển đều
gán và đặt tên theo các loại bánh kẹo nổi tiếng và theo thứ tự của bảng chữ cái nhƣ:
Cupcake (bánh cupcake), Donut (bánh kếp vòng), Eclair (bánh Eclair), Froyo (sữa
chua lạnh), Gingerbread (bánh nhân gừng), Honeycomb (kẹo mật ong), Ice Cream
Sandwich (bánh sandwich kem), Jelly Bean (kẹo dẻo), Kitkat (kẹo Kitkat), … Hiện
nay, phiên bản Android mới nhất là phiên bản Android P 9.0.
Do Android là hệ điều hành mã nguồn mở cùng với giấy phép sử dụng tự do
khơng có nhiều ràng buộc nên đã tạo điều kiện cho phép các nhà phát triển thiết bị,
mạng di động và các lập trình viên nhiệt huyết đƣợc điều chỉnh và phân phối
Android một cách tự do.
Đồng thời cùng với đó, hệ điều hành cịn xây dựng đƣợc một cộng đồng lập
trình viên, nhà phát triển đơng đảo chun lập trình các ứng dụng để mở rộng chức
năng của thiết bị, bằng một loại ngơn ngữ lập trình Java có sửa đổi.
Theo thống kê, tại thời điêm tháng 10 năm 2012, có hơn 700 nghìn ứng dụng
đƣợc phát triển trên Android, và số lƣợt tải ứng dụng từ Google Play, cửa hàng ứng
dụng chính của Android, ƣớc tính khoảng 25 tỷ lƣợt.
Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh
phổ biến nhất thế giới, vƣợt qua Symbian OS vào quý 4 năm 2010, và đƣợc các
công ty công nghệ lựa chọn khi họ cần một hệ điều hành khơng nặng nề, có khả
năng tinh chỉnh, và giá rẻ chạy trên các thiết bị cơng nghệ cao thay vì tạo dựng từ
đầu. Kết quả là mặc dù đƣợc thiết kế để chạy trên điện thoại và máy tính bảng,
Android đã xuất hiện trên TV, máy chơi game và các thiết bị điện tử khác. Bản chất
mở của Android cũng khích lệ một đội ngũ đơng đ ảo lập trình viên và những ngƣời
đam mê sử dụng mã nguồn mở để tạo ra những dự án do cộng đồng quản lý. Những
dự án này bổ sung các tính năng cao cấp cho những ngƣời dùng thích tìm tịi hoặc
đƣa Android vào các thiết bị ban đầu chạy hệ điều hành khác.
Hiện nay, Android chiếm 87,7% thị phần điện thoại thơng minh trên tồn thế
giới. Tổng kết quý 2 năm 2017, có trên 2 tỷ thiết bị đã đƣợc kích hoạt và 1,3 triệu
lƣợt kích hoạt mỗi ngày. Sự thành công c ủa hệ điều hành cũng khiến nó trở thành
9
mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong cái gọi là
"cuộc chiến điện thoại thông minh" giữa các công ty công nghệ.
Kỷ nguyên phát triển của Android đƣợc chính thức bắt đầu vào ngày 22
tháng 10 năm 2008, khi chiếc điện thoại T-Mobile G1 bắt đầu đƣợc bán ra tại Mỹ.
Vào thời gian đầu, có nhiều tính năng cơ bản so với hiện nay bị thiếu sót nhƣ: cảm
ứng đa điểm, bàn phím ảo, đồng thời tính năng mua ứng dụng vẫn chƣa xuất hiện.
Tuy nhiên, một số tính năng cũng nhƣ giao diện đặc sản của hệ điều hành này đã
khởi nguồn từ chiếc G1 và trở thành những yếu tố không thể thiếu trên Android sau
này:
- Thanh thông báo Notification bar vuốt từ trên xuống: Ngay từ những ngày
đầu tiên của Android, thanh thông báo này đã đánh dấu một bƣớc quan trọng mà
trƣớc đây chƣa hề có hệ điều hành nào làm đƣợc - đƣa tất cả thông tin tin nhắn, tin
thoại hoặc các cuộc gọi nhỡ chỉ với thao tác vuốt xuống. Apple sau đó cũng đã học
tập tính năng này và đƣa vào hệ điều hành iOS của mình sau 3 năm kể từ khi phiên
bản iOS đầu tiên ra mắt. Thanh notification này vẫn đƣợc Android sử dụng đến nay
và đã cải tiến rất nhiều so với phiên bản đầu tiên.
- Màn hình chính (Home Screen) và các widget: Một điểm khác biệt giữa
Android so với các hệ điều hành khác là phần màn hình chính của mình. Bên cạnh
việc thay đổi đƣợc hình nền, Android cịn cho phép ngƣời dùng tùy biến màn hình
chính của mình với nhiều widgets kèm theo, chẳng hạn nhƣ đồng hồ, lịch, trình
nghe nhạc, đƣa các icon ứng dụng ra ngồi hoặc thậm chí có thể can thiệp sâu hơn
để thay đổi tồn bộ giao diện màn hình Home Screen này.
- Đồng bộ và tích hợp chặt chẽ với Gmail: Vào thời điểm điện thoại G1 đƣợc
bán ra, Gmail đã hỗ trợ giao thức POP và IMAP để tích hợp với các trình email trên
di động. Tuy nhiên, lúc bấy giờ khơng có bất kì sản phẩm nào có thể hỗ trợ đƣợc
hồn tồn những tính năng ƣu việt này của Gmail. Mãi cho đến khi Android 1.0
xuất hiện, vấn đề này đã đƣợc khắc phục và G1 trở thành chiếc điện thoại mang lại
trải nghiệm Gmail tốt nhất trên thị trƣờng lúc bấy giờ.
10
Hình 1.2. Giao diện Gmail trên Android trên phiên bản đầu tiên
Chợ ứng dụng Android: ngày nay chợ ứng dụng này đƣợc gọi là Google
Play. Vào thời điểm hệ điều hành Android mới ra mắt, gần nhƣ khơng có bất kì điện
thoại nào có kho ứng dụng nào đƣợc tích hợp và chính Android đã mở đầu cuộc
cách mạng ứng dụng di động này cùng với Apps Store của Apple.
Chợ ứng dụng Android trên mẫu điện thoại G1 vào thời điểm đó có rất ít ứng
dụng và giao diện cực kỳ đơn giản, hơn nữa tính năng mua ứng dụng trên phiên bản
này vẫn chƣa đƣợc xuất hiện mãi cho đến năm sau do vào thời kỳ này hệ điều hành
Android cịn khá thơ sơ.
Hình 1.3. Giao diện chợ ứng dụng Android trên phiên bản 1.0 và 5.1
11
- Giao diện: Google đã thiết kế và phát triển giao diện Android phiên bản 1.0
với sự hỗ trợ từ TAT - một công ty thiết kế tƣơng tác của Thụy Điển. Đặc trƣng mà
TAT để lại trên phiên bản Android từ phiên bản 1.0 cho đến 2.2 chính là widget
đồng hồ kim nằm ngoài Home Screen, đơn giản và đẹp mắt. Cơng ty này sau đó
ngừng hợp tác với Google và bị công ty RIM mua lại để tập trung phát triển sản
phẩm Blackberry cũng nhƣ nền tảng BBX sau này.
Hình 1.4. Giao diện hiển thị trang chủ Android trên các phiên bản 2.2. và 5.1
1.2. Các tính năng đƣợc Android hỗ trợ
Những tính năng mà nền tảng Android hổ trợ gồm:
- Application framework: Cho phép tái sử dụng và thay thế các thành phần
sẳn có của Android.
- Dalvik virtual macine: Máy ảo java đƣợc tối ƣu hóa cho thiết bị di động.
- Intergrated browser: Trình duyệt web tích hợp đƣợc xây dựng dựa trên
WebKit engine.
- Optimized graphics: Hổ trợ bộ thƣ viện 2D và 3D dự vào đặc tả OpenGL.
- SQLite: DBMS dùng để lƣu trữ dữ liệu có cấu trúc.
12
- Hỗ trở các định dạng media phổ biến nhƣ: MPEG4, H.264, MP3, AAC,
ARM, JPG, PNG, GIF.
- Hổ trợ thoại trên nền tảng GSM (Phụ thuộc vài phần cứng thiết bị).
- Bluetooth, EDGE, 3G và WiFi (Phụ thuộc vài phần cứng thiết bị).
- Camera, GPS, la bàn và cảm biến (Phụ thuộc vài phần cứng thiết bị).
- Bộ công cụ phát triển ứng dụng mạnh mẽ.
1.3. Giao diện của hệ điều hành Android
Giao diện giao tiếp với ngƣời dùng của Android dựa trên nguyên tắc tác
động trực tiếp, có nghĩa hệ điều hành này sử dụng tác động cảm ứng chạm lên màn
hình vuốt, chạm, kéo sang hai bên,... để thực hiện các xử lý các đối tƣợng trên màn
hình.
Sự phản ứng với tác động của ngƣời dùng diễn ra cần đảm bảo đƣợc diễn ra
gần nhƣ ngay lập tức, nhằm tạo ra giao diện cảm ứng mƣợt mà, thƣờng dùng tính
năng rung của thiết bị để tạo phản hồi rung cho ngƣời dùng. Những thiết bị phần
cứng hỗ trợ bên trong thiết bị nhƣ gia tốc kế, con quay hồi chuyển và cảm biến
khoảng cách đƣợc tích hợp cho một số ứng dụng sử dụng để phản hồi một số hành
động khác của ngƣời dùng, nhƣ là bàn, hay chuyển chế độ hiển thị màn hình từ chế
độ hiển thị dọc sang chế độ hiển thị ngang theo vị trí của thiết bị,...
Các thiết bị Android sau khi khởi động sẽ hiển thị màn hình chính với các
thơng tin chính trên thiết bị, tƣơng tự nhƣ giao diện desktop trên máy vi tính. Màn
hính chính Android thƣờng gồm nhiều biểu tƣợng (icon) và tiện ích (widget). Biểu
tƣợng là lối tắt để mở sẽ mở ứng dụng tƣơng ứng, còn tiện ích hiển thị những nội
dung ra màn hình hình mà không cần truy nhập việc chạm mở để truy cập ứng dụng
nhƣ dự báo thời tiết, hộp thƣ của ngƣời dùng, hoặc những mẩu tin thời sự ngay trên
màn hình chính.
Màn hình chính có thể gồm nhiều trang xem đƣợc bằng cách vuốt ra trƣớc
hoặc sau, mặc dù giao diện màn hình chính của Android có thể tùy chỉnh ở mức
cao, cho phép ngƣời dùng tự do sắp đặt hình dáng cũng nhƣ hành vi của thiết bị
theo sở thích.
Những ứng dụng do các hãng thứ ba có trên Google Play và các kho ứng
dụng khác còn cho phép ngƣời dùng thay đổi "chủ đề" của màn hình chính, thậm
13
chí bắt chƣớc hình dáng của hệ điều hành khác nhƣ Windows Phone chẳng hạn.
Phần lớn những nhà sản xuất, và một số nhà mạng, thực hiện thay đổi hình dáng và
hành vi của các thiết bị Android của họ để phân biệt với các hãng cạnh tranh.
Ở phía trên cùng màn hình là thanh trạng thái, hiển thị thơng tin về thiết bị và
tình trạng kết nối. Thanh trạng thái này có thể "kéo" xuống để xem màn hình thông
báo gồm thông tin quan trọng hoặc cập nhật của các ứng dụng, nhƣ email hay tin
nhắn SMS mới nhận, mà không làm gián đoạn hoặc khiến ngƣời dùng cảm thấy bất
tiện. Trong các phiên bản đời đầu, ngƣời dùng có thể nhấn vào thơng báo để mở ra
ứng dụng tƣơng ứng, về sau này các thông tin cập nhật đƣợc bổ sung thêm tính
năng, nhƣ có khả năng lập tức gọi ngƣợc lại khi có cuộc gọi nhỡ mà không cần phải
mở ứng dụng gọi điện ra. Thông báo sẽ ln nằm đó cho đến khi ngƣời dùng đã
đọc hoặc xóa nó đi.
1.4. Kiến trúc của Android
Để có thể hiểu một cách trực quan nhất về kiến trúc của Andorid, có thể biểu
thị qua hình 1.5. Trong sơ đồ này, mỗi một phần sẽ đƣợc đặc tả một cách chi tiết
thơng qua các lớp:
Hình 1.5. Kiến trúc một hệ thống Android
1.4.1. Tầng ứng dụng
Android đƣợc tích hợp sẵn một số ứng dụng cần thiết cơ bản nhƣ: contacts,
browser, camera, Phone. Tất cả các ứng dụng chạy trên hệ điều hành Android đều
đƣợc viết bằng Java.
14
1.4.2. Tầng khung làm việc với ứng dụng
Tầng khung làm việc với ứng dụng (Application framework) đƣợc Google
xây dựng cho các nhà phát triển xây dựng ứng dụng của họ trên Android, bằng cách
gọi các hàm API có sẵn mà Google đã viết để sử dụng các tính năng c ủa phần cứng
mà không cần hiểu cấu trúc bên dƣới.
1.4.3. Thư viện
Android bao gồm một tập hợp các thƣ viện C/C++ đƣợc sử dụng bởi nhiều
thành phần khác nhau trong hệ thống Android. Một số thƣ viện cơ bản gồm:
- System C library: là giao diện đƣợc xây dựng từ bộ thƣ viện hệ thống C
chuẩn, đƣợc điều chỉnh để tối ƣu hóa cho các thiết bị chạy trên nền Linux.
- Thƣ viện đa phƣơng tiện: là bộ thƣ viện hổ trợ trình diễn và ghi các định
dạng âm thanh và hình ảnh.
- Surface manager: là bộ quản lý hiển thị nội dung 2D và 3D.
- LibWebCore: là một web browser engine hiện đại đƣợc sử dụng trong trình
duyệt của Android lần trong trình duyệt nhúng web view đƣợc sử dụng trong ứng
dụng.
- SGL: đây là công cụ engine hổ trợ đồ họa 2D.
- Thƣ viện 3D: là công c ụ giao diện đƣợc xây dựng dựa trên các hàm APIs
của OpenGL. Những thƣ viện này sử dụng các tăng tốc đồ họa 3D bằng phần cứng
lẫn phần mềm để tối ƣu hóa hiển thị 3D.
- SQLite: là tiện ích để quản trị hệ thống cơ sở dữ liệu của một ứng dụng
Android.
1.4.4. Android Runtime
Hệ điều hành Android tích hợp sẵn một tập hợp các thƣ viện cốt lõi cung cấp
hầu hết các chức năng có sẵn trong các thƣ viện lõi của ngơn ngữ lập trình Java.
Mọi ứng dụng của Android chạy trên một tiến trình của riêng nó cùng với một thể
hiện của máy ảo Dalvik.
Máy ảo Dalvik thực tế là một biến thể của máy ảo Java đƣợc sửa đổi, bổ
sung các công nghệ đặc trƣng của thiết bị di động. Nó đƣợc xây dựng với mục đích
làm cho các thiết bị di động có thể chạy nhiều máy ảo một cách hiệu quả.
15
Trƣớc khi thực thi, bất kì ứng dụng Android nào cũng đƣợc convert thành
file thực thi với định dạng nén Dalvik Executable. Định dạng này đƣợc thiết kế để
phù hợp với các thiết bị hạn chế về bộ nhớ cũng nhƣ tốc độ xử lý. Ngoài ra máy ảo
Dalvik sử dụng bộ nhân Linux để cung cấp các tính năng nhƣ quản lý chuỗi, quản
trị bộ nhớ cơ bản.
1.4.5. Nhân Linux
Hệ điều hành Android đƣợc xây dựng trên bộ nhân Linux cho những dịch vụ
hệ thống cốt lõi nhƣ: bảo mật, quản lý bộ nhớ, quản lý truy nhập, công cụ hỗ trợ. Bộ
nhân này có chức năng và nhiệm vụ nhƣ một lớp trung gian kết nối phần cứng thiết
bị và phần ứng dụng.
Dƣới đây là mô hinh hợp tác giữa máy ảo Dalvik và Navite code trong nhân
Linux:
Hình 1.6. Mơ hình hợp tác giữa máy ảo và các dòng lệnh
Java Native Interface (JNI): là một bộ framework cho phép mã lệnh viết
bằng Java chạy trên máy ảo java có thể gọi hoặc đƣợc gọi bởi một ứng dụng viết
bằng native code (Ứng dụng đƣợc viết cho một phần cứng cụ thể và trên một hệ
điều hành cụ thể) hoặc những bộ thƣ viện viết bằng C, C++ hoặc mã Assembly.
Bằng cách sử dụng JNI, Android cho phép các ứng dụng chạy trên máy ảo
Dalvik có thể sử dụng những phƣơng thức đƣợc viết bằng các ngôn ngữ cấp thấp
nhƣ: C, C++, Assembly. Qua đó các nhà phát triển ứng dụng có thể xây dựng ứng
dụng dựa trên các bộ thƣ viện viết bằng C, C++, Assembly nhằm tăng tốc độ thực
16
thi của ứng dụng hoặc sử dụng những tính năng mức thấp mà ngôn ngữ Java không
hổ trợ. Tuy nhiên ngƣời phát triển ứng dụng cần phải cân nhắc sự gia tăng độ phức
tạp của ứng dụng khi quyết định sử dụng các bộ thƣ viện này.
1.5. Mô phỏng ứng dụng Android
Bộ cơng cụ Android SDK và trình cắm Plugin Eclipse đƣợc gọi là một bộ
công cụ phát triển Android (Android Deverloper Tool - ADT).
Các nhà phát triển ứng dụng cho Android sẽ cần phải sử dụng công cụ IDE
(Integrated Development Enveronment) này để phát triển, kiểm tra lỗi và đánh giá
dùng thử ứng dụng.
Tuy nhiên, các nhà phát triển cũng có thể khơng cần phải sử dụng IDE mà
thay vào đó là sử dụng command line để biên dịch và tất nhiên là vẫn có bộ mơ
phỏng Android nhƣ thƣờng.
Công cụ mô phỏng Android Emulator đƣợc trang bị đầy đủ hầu hết các tính
năng của một thiết bị thật. Tuy nhiên, một số đã bị giới hạn nhƣ là kết nối qua cổng
USB, camera và video, nghe phone, nguồn điện giả lập và bluetooth.
Android Emulator thực hiện các công việc thông qua một bộ xử lý mã nguồn
mở, công nghệ này đƣợc gọi là QEMU đƣợc phát triển bởi Fabrice Bellard.
Hình 1.7. Android emulator
1.6. Các thành phần trong một ứng dụng Android
1.6.1. AndroidManifest.xml
Trong bất kì một project Android nào khi tạo ra đều có một file
AndroidManifest.xml, file này đƣợc dùng để định nghĩa các screen sử dụng, các
permission cũng nhƣ các theme cho ứng dụng. Đồng thời nó cũng chứa thông tin về
17
phiên bản SDK cũng nhƣ main activity sẽ chạy đầu tiên.
File này đƣợc tự động sinh ra khi tạo một Android project. Trong file
manifest bao giờ cũng có 3 thành phần chính đó là: application, permission và
version.
- Application: Thẻ <application>, bên trong thẻ này chứa các thuộc tính cở
bản đƣợc sử dụng cho ứng dụng Android nhƣ :
- Android:icon : đây là nơi đặt các hình ảnh của ứng dụng.
- Android:name: thuộc tính này đƣợc sử dụng để đặt tên cho ứng dụng.
Tên này sẽ đƣợc hiển thị lên màn hình sau khi cài đặt ứng dụng.
- Android:theme: thuộc tính này đƣợc sử dụng để cài dặt giao diện cho ứng
dụng.
Ngồi ra cịn nhiều thuộc tính khác…
- Permission: Bao gồm các thuộc tính chỉ định quyền truy xuất và sử dụng
tài nguyên của ứng dụng. Khi cần sử dụng một loại tài ngun nào đó thì trong file
manifest của ứng dụng cần phải khai báo các quyền truy xuất.
- SDK version: là một thẻ xác định phiên bản SDK đƣợc khai báo nhƣ sau:
1.6.2. File R.java
File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này đƣợc
sử dụng để quản lý các thuộc tính đƣợc khai báo trong file XML của ứng dụng và
các tài nguyên hình ảnh.
Mã nguồn của file R.java đƣợc tự động sinh khi có bất kì một sự kiện nào
xảy xa làm thay đổi các thuộc tính trong ứng dụng. Chẳng hạn nhƣ, kéo và thả một
file hình ảnh từ bên ngồi vào project thì ngay lập tức thuộc tính đƣờng dẫn đến file
đó cũng sẽ đƣợc hình thành trong file R.java hoặc xố một file hình ảnh thì đƣờng
dẫn tƣơng ứng đến hình ảnh đó cũng tự động bị xố.
Dƣới đây là nội dung của một file R.java:
package dtu.k12tpm.pbs.activity;
public final class R {
public static final class array {
public static final int array_timeout=0x7f050000;
}
18
public static final class attr {
}
public static final class drawable {
public static final int add=0x7f020000;
public static final int backup_icon=0x7f020001;
public static final int checkall=0x7f020002;
}
public static final class id{
public static final int Button01=0x7f070006;
public static final int Button02=0x7f070007;
public static final int CheckBox01=0x7f070017;
}
public static final class layout {
public static final int contact_list=0x7f030000;
public static final int content_sender=0x7f030001;
public static final int friend_list=0x7f030002;
}
public static final class menu{
public static final int context_menu=0x7f060000;
public static final int menu_options=0x7f060001;
public static final int options_menu=0x7f060002;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int context_menu_item_delete=0x7f04000b;
public static final int context_menu_item_edit=0x7f04000a;
}}
1.7 . Chu kì ứng dụng Android
Một tiến trình Linux gói gọn một ứng dụng Android đã đƣợc tạo ra cho ứng
dụng khi lập trình cần đƣợc chạy thử.
19
Một đặc điểm của ứng dụng Android là thời gian sống của tiến trình ứng
dụng khơng đƣợc điều khiển trực tiếp bới chính nó. Thay vào đó, nó đƣợc xác định
bởi hệ thống qua một kết hợp của các yếu tố nhƣ:
- Những phần của ứng dụng mà hệ thống biết đang chạy
- Sự quan trọng đối với ngƣời dùng
- Số lƣợng vùng nhớ chiếm lĩnh trong hệ thống.
1.7.1. Chu kỳ sống thành phần
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc
bắt đầu khởi tạo và đến thời điểm kết thúc. Giữa đó, đơi lúc chúng có thể là active
hoặc inactive, hoặc là trong trƣờng hợp activies nó có thể visible hoặc invisible
Hình 1.8. Chu kỳ sống của ứng dụng Android
1.7.2. Các trạng thái của chu kỳ sống
20
Hình 1.9. Chu kỳ sống của Activity
Một Activity chủ yếu có 3 chu kỳ chính sau:
Active hoặc running: Khi Activity là đƣợc chạy trên màn hình. Activity này
tập trung vào những thao tác của ngƣời dùng trên ứng dụng.
- Paused: Activity là đƣợc tạm dừng (paused) khi mất focus nhƣng ngƣời
dùng vẫn trơng thấy. Có nghĩa là một Activity mới ở trên nó nhƣng khơng bao phủ
đầy màn hình. Một Activity tạm dừng là cịn sống nhƣng có thể bị kết thúc bởi hệ
thống trong trƣờng hợp thiếu vùng nhớ.
- Stopped: Nếu nó hồn tồn bao phủ bởi Activity khác. Nó vẫn cịn trạng
thái và thơng tin thành viên trong nó. Ngƣời dùng khơng thấy nó và thƣờng bị loại
bỏ trong trƣờng hợp hệ thống cần vùng nhớ cho tác vụ khác.
1.7.3. Chu kỳ sống của ứng dụng
Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành phần
đều có một chu trình sống riêng. Và ứng dụng chỉ đƣợc gọi là kết thúc khi tất cả các
thành phần trong ứng dụng kết thúc.
Activity là một thành phần cho phép ngƣời dùng giao tiếp với ứng dụng. Tuy
nhiên, khi tất cả các Activity kết thúc và ngƣời dùng khơng cịn giao tiếp đƣợc với
ứng dụng nữa nhƣng khơng có nghĩa là ứng dụng đã kết thúc. Bởi vì ngồi Activity
là thành phần có khả năng tƣơng tác ngƣời dùng thì cịn có các thành phần khơng có
khả năng tƣơng tác với ngƣời dùng nhƣ là Service, Broadcastreceiver. Có nghĩa là
những thành phần khơng tƣơng tác ngƣời dùng có thể chạy background dƣới sự
giám sát của hệ điều hành cho đến khi ngƣời dùng tự tắt chúng.
1.7.4. Các sự kiện trong chu kỳ sống của ứng dụng
Nếu một Activity đƣợc tạm dừng hoặc dừng hẳn, hệ thống có thể bỏ thơng
tin khác của nó từ vùng nhớ bởi việc finish() (gọi hàm finish() của nó), hoặc đơn
giản giết tiến trình của nó. Khi nó đƣợc hiển thị lần nữa với ngƣời dùng, nó phải
đƣợc hồn tồn restart và phục hồi lại trạng thái trƣớc.
Khi một Activity chuyển qua chuyển lại giữa các trạng thái, nó phải báo việc
chuyển của nó bằng việc gọi hàm transition.
21
Hình 1.10. Các sự kiện trong chu ký sống của một ứng dụng Android
Tất cả các phƣơng thức là những móc nối mà bạn có thể override để làm
tƣơng thich công việc trong ứng dụng khi thay đổi trạng thái. Tất cả các Activity bắt
buộc phải có onCreate() để khởi tạo ứng dụng. Nhiều Activity sẽ cũng hiện thực
onPause() để xác nhận việc thay đổi dữ liệu và mặt khác chuẩn bị dừng hoạt động
với ngƣời dùng.
1.7.5. Các phương thức của chu kỳ sống
Phƣơng thức onCreate(): Đƣợc gọi khi activity lần đầu tiên đƣợc khởi tạo
một chức năng. Ở đây thiết lập tất cả các cài đặt tĩnh, tạo các view, kết nối dữ liệu
để hiển thị danh sách. Phƣơng thức này gửi qua một đối tƣợng chứa đựng từ trạng
thái trƣớc đó của Activity. Phƣơng thức này ln theo sau bởi onStart().
- Phƣơng thức: onRestart(): Đƣợc gọi sau khi activity đã đƣợc dừng, chỉ một
khoảng đang khởi động lần nữa. Phƣơng thức này luôn theo sau bởi phƣơng thức
onStart().
- Phƣơng thức onStart(): Đƣợc gọi trƣớc khi một activity visible với ngƣời
dùng. Phƣơng thức này theo sau bởi phƣơng thức onResume() nếu activity đến
trạng thái foreground hoặc onStop() nế nó trở nên ẩn.
- Phƣơng thức onResume(): Đƣợc gọi trƣớc khi activity bắt đầu tƣơng tác
với ngƣời dung. Tại thời điểm này activity ở trên dỉnh của stack activity. Phƣơng
thức này luôn theo sau bởi phƣơng thức onPause().
- Phƣơng thức onPause(): Đƣợc gọi khi hệ thống đang resuming activity
khác. Phƣơng thức này là điển hình việc giữ lại khơng đổi dữ liệu. Phƣơng thức này
theo sau bởi onResume nếu activity trở về từ ở trƣớc, hoặc bởi onStop nếu nó trở
nên visible với ngƣời dùng..
- Phƣơng thức onStop(): Đƣợc gọi khi activity khơng thuộc tầm nhìn của
ngƣời dùng. Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa
đƣợc resumed và bao phủ nó.
22
- Phƣơng thức onDestroy(): Đƣợc gọi trƣớc khi activity bị hủy. Đó là lần gọi
cuối cùng mà activity này đƣợc nhận. Nó đƣợc gọi khác bởi vì activity đang hồn
thành, hoặc bởi vì hệ thống tạm thởi bị hủy diệt để tiết kiệm vùng nhớ.
1.8 . Các thành phần giao diện trong Android
1.8.1. View
Trong một ứng dụng Android, giao diện ngƣời dùng đƣợc xây dựng từ các
đối tƣợng View và ViewGroup. Có nhiều kiểu View và ViewGroup. Mỗi một kiểu
là một hậu duệ của class View và tất cả các kiểu đó đƣợc gọi là các Widget.
Tất cả mọi widget đều có chung các thuộc tính cơ bản nhƣ là cách trình bày
vị trí, background, kích thƣớc, lề. Tất cả những thuộc tính chung này đƣợc thể hiện
hết ở trong đối tƣợng View.
Trong Android Platform, các screen luôn đƣợc bố trí theo một kiểu cấu trúc
phân cấp nhƣ hình dƣới. Một screen là một tập hợp các Layout và các widget đƣợc
bố trí có thứ tự. Để thể hiện một screen thì trong hàm onCreate c ủa mỗi Activity cần
phải đƣợc gọi một hàm là setContentView(R.layout.main); hàm này sẽ load giao
diện từ file XML lên để phân tích thành mã bytecode.
Hình 1.11. Cấu trúc một giao diện ứng dụng Android
1.8.2. ViewGroup
ViewGroup là các một dạng widget hay layout đƣợc dùng để bố trí các đối
tƣợng khác trong một screen. Có một số loại ViewGroup nhƣ sau:
- LinearLayout đƣợc dùng để bố trí, sắp xếp các thành phần giao diện theo
các phƣơng ngang hoặc dọc, layout này đƣớc sử dụng để bố trí các thành phần theo
23
từng nhóm.
LinearLayout làm cho các thành phần trong nó khơng bị phụ thuộc vào kích
thƣớc của màn hình. Các thành phần trong LinearLayout đƣợc dàn theo những tỷ lệ
cân xứng dựa vào các ràng buộc giữa các thành phần.
Hình 1.12. Bố trí các widget sử dụng LinearLayout
- FrameLayout đƣợc dùng để bố trí các thành phần theo từng lớp (layer)
chồng lên nhau. Những thành phần thuộc lớp phía dƣới thì sẽ bị che khuất bởi các
thành phần thuộc lớp nằm phía trên. FrameLayer thƣờng đƣợc sử dụng khi muốn
tạo ra các đối tƣợng có khung hình bên ngồi chẳng hạn nhƣ contact image button.
Hình 1.13. Bố trí các widget trong FrameLayout
- AbsoluteLayout: lớp layout này đƣợc sử dụng để bố trí các widget vào một
vị trí bất kì theo ý định của nhà phát triển ứng dụng dựa vào 2 thuộc tính là toạ độ x,
y của các thành phần.
Tuy nhiên, trên thực tế kiểu layout có nhƣợc điểm là toạ độ của các đối
24