Tải bản đầy đủ (.pdf) (113 trang)

Xây dựng ứng dụng hỗ trợ quảng bá du lịch trên địa bàn tỉnh thái nguyên trên nền tảng android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.75 MB, 113 trang )

LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn với sự hỗ trợ giúp
đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác.Trong suốt thời gian
từ khi bắt đầu học tập tại trường cho đến nay, em đã nhận được rất nhiều sự quan
tâm giúp đỡ của các Thầy Cô, gia đình và bạn bè với lòng biết ơn sâu sắc em xin
gửi đến các Thầy Cô ở khoa công nghệ thông tin nói chung và bộ môn mạng máy
tính nói riêng đã cùng với tri thức và tâm huyết của mình để truyền đạt vốn kiến
thức quý báu cho chúng em trong suốt thời gian học tập tại trường.
Em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc đối với các thầy cô và
đặc biệt thầy Trần Phạm Thái Kiên đã nhiệt tình hướng dẫn em hoàn thành tốt bài
đồ án tốt nghiệp này người đã hướng dẫn nhiệt tình chỉ bảo em trong suốt quá trình
làm đồ án. Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè đã luôn tạo
điều kiện,quan tâm, giúp đỡ, động viên em trong suốt quá trình học tập và hoàn
thành khoá luận tốt nghiệp.

1


LỜI CAM ĐOAN
Em là Cao Thị Điển-Lớp MMT-K10A.Em xin cam đoan đây là công trình
nghiên cứu của riêng em và được sự hướng dẫn của Ths.Trần Phạm Thái Kiên.
Các nội dung và kết quả trong đề tài này là trung thực và chưa công bố dưới bất
kỳ hình thức nào trước đây. Những thông tin và bài viết, thống kê số liệu phục vụ
cho việc phân tích, nhận xét, đánh giá được tôi thu thập từ các nguồn khác nhau và
có ghi rõ nguồn trong từng bài viết và phần tài liệu tham khảo.
Nếu phát hiện có bất kỳ sự gian lận nào em xin hoàn toàn chịu trách nhiệm
về nội dung đồ án của mình trước mọi người và hội đồng nhà trường.
Thái Nguyên, tháng 6 năm 2016
Cao Thị Điển

2




MỤC LỤC
LỜI CẢM ƠN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
LỜI CAM ĐOAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
MỤC LỤC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
DANH MỤC HÌNH ẢNH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
LỜI MỞ ĐẦU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1 Kiến trúc của nền tảng Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.1. Nhân Linux (Linux kernel) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.2.Thư viện Android (Android libraries) và Android Runtime . . . . . . . . . . 8
1.1.3. Application Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.4. Tầng ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2. Các thành phần cơ bản của ứng dụng Android. . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.1. Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.2. Intent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.3. Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.4. Content Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.5. Broadcast Receivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.6. SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.7. Telephony. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3. Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.1. Tổng quan Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.2. Đặc điểm của dịch vụ Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.3. Hoạt động của Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4. Google Map API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4.1. Giới thiệu về Google Map API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4.2. Cách thiết lập Google Map trong Android . . . . . . . . . . . . . . . . . . . . . . . . . 25
3



CHƯƠNG 2 KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG. . . . . . . . . . 29
2.1. Mô tả bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2. Giới thiệu du lịch Thái Nguyên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.1. Hiện trạng và khó khăn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.2. Hướng giải quyết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3. Khảo sát một số trang Web về du lịch Thái Nguyên . . . . . . . . . . . . . . . . . . . . 32
2.3.1. Đề xuất đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.2. Mục đích thực hiện đề tài. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.3. Xác định yêu cầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3.4. Kết quả dự kiến đạt được . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4. Kiến trúc hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5. Phân tích thiết kế hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.5.1. Các tác nhân và biểu đồ Usecase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.5.2. Biểu đồ hoạt động . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.5.3. Biểu đồ trình tự . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.5.4. Biểu đồ lớp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.5.5. Biểu đồ thành phần. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.5.6. Biểu đồ triển khai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
CHƯƠNG 3 XÂY DỰNG DEMO CHƯƠNG TRÌNH . . . . . . . . . . . . . . . . . . . . . . . . 57
3.1. Môi trường cài đặt và yêu cầu công nghệ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2. Xây dựng hệ thống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2.1. Xây dựng Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2.2. Xây dựng Client trên Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.3. Giao diện chính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.4. Một số chức năng chính. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.4.1. Chức năng của người dùng (Client). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.4.2. Giao diện người quản trị (Server ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
CHƯƠNG 4 KẾT LUẬN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4


TÀI LIỆU THAM KHẢO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

DANH MỤC HÌNH ẢNH
Hình 1.1: Kiến trúc của android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Hình 1.2: Vòng đời của 1 activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Hình 1.3: Truyền dự liệu cùng intent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Hình 1.4: Các phương thức gọi lại của một services . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Hình 1.5: Mô hình ứng dụng của Web Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Hình 1.6 : Cấu trúc của WSLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Hình 1.7: Kiến trúc của SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Hình 1.8: Mô hình hoạt động của Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Hình 1.9 : Quá trình thực hiện. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Hình 2.1: Cổng du lịch Thái Nguyên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Hình 2.2: Kiến trúc của hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Hình 2.3: Biểu đồ UC tổng quát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Hình 2.4: Biểu đồ UC người quản trị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Hình 2.5: Biểu đồ UC quản lý điểm đến . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Hình 2.6: Biểu đồ UC người dùng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Hình 2.7: Biểu đồ hoạt động cho user case đăng nhập . . . . . . . . . . . . . . . . . . . . . . . . . 40
Hình 2.8:Biểu đồ hoạt động quản lý thêm điểm du lịch . . . . . . . . . . . . . . . . . . . . . . . . 40
Hình 2.9: Biểu đồ sửa địa điểm du lịch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Hình 2.10: Biểu đồ hoạt động xóa địa điểm du lịch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Hình 2.11: Biểu đồ hoạt động quản lý thêm thông tin . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Hình 2.12: Biểu đồ hoạt động quản lý sửa thông tin . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Hình 2.13: Biểu đồ hoạt động quản lý xóa thông tin . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Hình 2.14: Biểu đồ hoạt động tìm kiếm của người quản trị. . . . . . . . . . . . . . . . . . . . . 43
Hình 2.15: Biểu đồ hoạt động xem điểm đến của người quản trị . . . . . . . . . . . . . . . 44

Hình 2.16: Biểu đồ hoạt động của người dùng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Hình 2.17: Hoạt động của người dùng trên giao diện gmap . . . . . . . . . . . . . . . . . . . . 45
Hình 2.18: Biểu đồ trình tự đăng nhập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Hình 2.19: Biểu đồ trình tự thêm địa điểm du lịch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Hình 2.20: Biểu đồ trình tự thực hiện xóa địa điểm du lịch. . . . . . . . . . . . . . . . . . . . . 47
5


Hình 2.21: Biểu đồ trình tự sửa địa điểm du lịch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Hình 2.22: Biểu đồ trình tự xem địa điểm du lịch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Hình 2.23: Biểu đồ trình tự thêm thông tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Hình 2.24: Biểu đồ trình tự sửa thông tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Hình 2.25: Biểu đồ trình tự xóa thông tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Hình 2.26: Sơ đồ lớp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Hình 2.27: Biểu đồ thành phần . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Hình 2.28: Biểu đồ triển khai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Hình 3.1: File API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Hình 3.2: Thực hiện xây dựng thêm ,sửa xóa cho điểm đến . . . . . . . . . . . . . . . . . . . . 59
Hình 3.3 : Diagram client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Hình 3.4 : Diagram người quản trị quản trị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Hình 3.5: Giao diện xây dựng listview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Hình 3.6: Lớp gọi Gmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Hình 3.7: File AndroidManifeft.xml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Hình 3.8: File APIUtils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Hình 3.9: File Main chính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Hình 3.10: Giao diện chính. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Hình 3.11: Giao diện chọn điểm đến . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Hình 3.12: Giao diện sau khi chọn tất cả(Cẩm nang). . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Hình 3.13: Giao diện sau khi chọn điểm đến có tên Cafe. . . . . . . . . . . . . . . . . . . . . . . 67
Hình 3.14: Giao diện khi chọn ẩm thực . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Hình 3.15: Chọn địa điểm là quán ốc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Hình 3.16: Giao diện sau khi kích vào từng icon trên bản đồ. . . . . . . . . . . . . . . . . . . 70
Hình 3.17: Hiện thị bài viết. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Hình 3.18: Giao diện đăng nhập người quản trị trên web . . . . . . . . . . . . . . . . . . . . . . 72
Hình 3.19: Giao diện sau khi đăng nhập vào . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Hình 3.20: Giao diện làm việc của người quản trị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Hình 3.21: Giao diện thêm mới địa điểm du lịch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Hình 3.22: Giao diện sửa thông tin của điểm đến . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Hình 3.23: Giao diện sau khi chọn xóa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
LỜI MỞ ĐẦU
Hiện nay du lịch đang là một nghành kinh tế mũi nhọn của Việt Nam nói
chung và đặc biệt đối với Thái Nguyên nói riêng.Với tiềm năng du lịch như vậy
6


việc xúc tiến quảng bá du lịch và cung cấp thông tin du lịch là điều rất quan trọng
để xây dựng,và đẩy mạnh nền kinh tế mới này.
Với sự phát triển nhanh chóng của công nghệ mobile hiện nay mang lại cơ
hội quảng bá du lịch và cung cấp thông tin về du lịch một cách thuận tiện nhất cho
khách du lịch và hiệu quả mang lại rất cao.
Với sự hướng dẫn giúp đỡ của Thầy Trần Phạm Thái Kiên em đã thực hiện
đề tài:”Xây dựng ứng dụng hỗ trợ quảng bá du lịch trên địa bàn tỉnh Thái
Nguyên trên nền tảng Android” Phần mềm sản phẩm được viết bằng ngôn ngữ
Java trên nền tảng Android,sử dụng API Web Service, Google map....với nội dung
trình bày sau đây:
Chương 1: Cơ sở lý thuyết
Chương 2: Khảo sát và phân tích thiết kế
Chương 3:Xây dựng demo chương trình.
Phần mềm “Thái Nguyên Travel” sẽ cung cấp thông tin về địa điểm du
lịch chia thành các nhóm: ẩm thực, vui chơi, tham quan, giải trí, trải nghiệm ,

quảng bá, lễ hội. Cung cấp chức năng quản lý thông tin các địa điểm du lịch, cho
phép người dùng sử dụng thêm thông tin vị trí của mình để tìm được các khu ẩm
thực, vui chơi gần mình nhất……
Vì thời gian cộng với khả năng của bản thân có hạn và đây là một lĩnh vực
khá mới mẻ nên chương trình chắc chắn còn nhiều thiếu sót vì vậy em mong nhận
được nhiều ý kiến góp ý từ phía thầy cô để chương trình có thể hoàn thiện hơn.

7


CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

1.1 Kiến trúc của nền tảng Android
Hệ điều hành Android là một ngăn xếp của các thành phần ứng dụng (stack
of software components), có thể chia thành 5 phần và 4 lớp như trong sơ đồ kiến
trúc android dưới đây:

8


Hình 1.1: Kiến trúc của android
1.1.1. Nhân Linux (Linux kernel)
Nằm ở tầng dưới cùng là lớp Linux kernal – Linux 3.6 với khoảng 115
patches. Lớp này liên hệ với phần cứng và nó chứa tất cả driver phần cứng cần
thiết như camera, bàn phím, màn hình…
1.1.2.Thư viện Android (Android libraries) và Android Runtime
Phía trên tầng Linux kernel là tầng libraries, chứa những thư viện hỗ trợ.
Một số có thể kể đến như là bộ máy trình duyệt web mã nguồn mở WebKit, thư
viện libc, cơ sở dữ liệu SQLite tiện lợi cho việc lưu trữ và chia sẻ dữ liệu, thư viện
hỗ trợ thu phát âm thanh và video, thư viện SSL giúp bảo mật mạng…

Tầng này chứa tất cả các thư viện Java, được viết đặc biệt cho Android như
các thư viện framework, các thư viện xây dựng giao diện, đồ họa và cơ sở dữ liệu.
Dưới đây là một số thư viện quan trọng mà các lập trình viên nên biết:
 Android.app : Cung cấp quyền truy cập tới mô hình ứng dụng và là nền
tảng của mọi ứng dụng Android applications.
 Android.content : Cho phép truy cập nội dung, phát hành và tin hắn giữa
các ứng dụng và các thành phần trong một ứng dung.
 Android.database : Được dùng để truy cập vào dữ liệu được đưa ra bởi
bộ phận cung cấp nội dung, bao gồm các lớp quản lý cơ sở dữ liệu SQLite.
 Android.opengl : Cho phép tương tác với thư viện đồ họa OpenGL ES 3D.
 Android.os : Giúp ứng dụng truy cập những dịch vụ cơ bản của hệ điều
hành bao gồm tin nhắn, dịch vụ hệ thống và liên lạc nội bộ (inter-process
communication).
 Android.text : Được dùng để vẽ và thao tác văn bản trên màn hình.
 Android.view : Các khối xây dựng cơ bản của giao diện người dùng.
 Android.widget : Một tập hợp rất nhiều thành phần giao diện được xây
dựng sẵn như nút bấm (button), nhãn (label), danh sách hiển thị (list views), quản

9


lý bố cục (layout managers)…
 Android.webkit : Tập hợp các lớp (classes) cho phép trình duyệt web
được nhúng vào ứng dụng.
Trong tầng này còn có một phần không kém phần quan trọng là Android
runtime, bây giờ chúng ta sẽ tìm hiểu các thư viện C/C++ trong tầng này.
Android Runtime chứa Dalvik Virtual Machine (DVM) – một biến thể của
Java Virtual Machine, đặc biệt thiết kế và tối ưu hóa cho Android. DVM giúp mỗi
ứng dụng Android chạy trong chính tiến trình (process) của nó với một đại diện
(instance) của DVM.

Ngoài ra, Android Runtime cũng chứa tập hợp các thư viện quan trọng cho
phép người lập trình viết ứng dụng sử dụng ngôn ngữ lập trình Java.

10


1.1.3. Application Framework
Application Framework cung cấp nhiều dịch vụ cấp cao dưới dạng các lớp
viết bằng Java (Java classes). Lập trình viên được phép sử dụng các lớp này để tạo
ra các ứng dụng.
Android framework chứa các dịch vụ quan trọng như:
 Activity Manager : Quản lý tất cả các phần của vòng đời (lifecycle) ứng
dụng và các hoạt động ngăn xếp (activity stack).
 Content Providers : Cho phép ứng dụng phát hành và chia sẻ dữ liệu với
ứng dụng khác.
 Resource Manager : Cho phép truy cập tới những tài nguyên không phải
là mã nguồn như chuỗi, cài đặt màu, bố cục giao diện.
 Notifications Manager : Giúp ứng dụng hiển thị thông báo và nhắc nhở người
dùng.
 View System : Một tập hợp mở rộng giúp tạo giao diện người dùng.
1.1.4. Tầng ứng dụng
Đây là lớp ứng dụng giao tiếp với người dùng, các ứng dụng cơ bản được
cài đặt đi liền với hệ điều hành như: gọi điện thoại (phone), quản lý danh bạ
(contacts), duyệt web (browser), nhắn tin (sms), lịch làm việc (calendar), đọc email
(email-client), bản đồ (map), quay phim chụp ảnh (camera).
Các ứng dụng được cài thêm như các phần mềm (stock), các trò chơi
(game), từ điển.
Các chương trình có các đặc điểm là:
Viết bằng Java, phần mở rộng là apk.
Khi mỗi ứng dụng được chạy, nó có phiên bản Virtual Machine được dựng

lên phục vụ cho nó. Nó có thể là một Active Program: chương trình có giao diện
với người sử dụng hoặc là một background, chương trình chạy nền hay là dịch vụ.
Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời
11


điểm, có thể có nhiều chương trình chạy một lúc, tuy nhiên, với mỗi ứng dụng thì
có duy nhất một thực thể (instance) được phép chạy mà thôi. Điều đó có tác dụng
hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn.
Các ứng dụng được gán số ID của người sử dụng nhằm phân định quyền
hạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống.
Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di
động khác, android cho phép một ứng dụng của bên thứ ba được phép chạy nền.
1.2. Các thành phần cơ bản của ứng dụng Android
1.2.1. Activity
Activity chính là một cửa sổ chứa giao diện ứng dụng của bạn mà người
dùng có thể tương tác với nó. Mỗi màn hình trên ứng dụng của bạn sẽ là kế thừa
của Activity. Activity dùng các View để hiển thị giao diện ứng dụng người dùng
và đáp ứng lại các yêu cầu từ người dùng.
Có 3 dạng Activity:
 Floating Activity: là dạng Activity nổi, có kích thước không phủ lấ toàn
bộ màn hình.
 Activity Group: là một nhóm các Activity nhúng trong một Activity khác.
 Full screen Activity: là Activity phủ kín toàn bộ màn hình, đây là loại
Activity thường được sử dụng phổ biến nhất.
Vòng đời của một Activity sẽ diễn ra từ lúc khởi động cho đến khi kết thúc
vòng đời của nó. Hệ thống Android sẽ được bắt đầu thực hiện một Activity tương
ứng với từng trạng thái vòng đời của nó. Android cung cấp một số sự kiện để quản
lý các trạng thái vòng đời của Activity như sau:
 onCreate(): sự kiện này được gọi khi Activity được tạo lần đầu tiên.

Trong sự kiện này, bạn phải thực hiện những công việc như tạo giao diện, tải dữ
liệu. Sau sự kiện này là sự kiện onStart() được gọi.
 onRestart(): sự kiện được gọi khi muốn khỏi động lại một activity đã bị
Stop. Sau sự kiện này luôn là sự kiện onStart() được gọi.
12


 onStart(): sự kiện nà được gọi khi giao diện của Activity hiển thị trên
màn hình thiết bị.
 onResume(): sự kiện này được gọi khi Activity bắt đầu tương tác với
người dùng.
 onPause(): khi một Activity khác dành quyền hiển thị và trạng thái focus
thì Activity hiện hành sẽ gọi sự kiện onPause().
 . onStop(): sự kiện này được gọi khi Activity bị che khuất hoàn toàn bởi
một Activity khác và Activity đó cũng dành được focus.

Hình 1.2: Vòng đời của 1 activity
Khi một Activity bị paused hoặc stopped, trạng thái của một Activity vẫn sẽ
được giữ lại. Điều này là đúng vì mỗi đối tượng Activity vẫn còn được giữ lại
trong bộ nhớ khi nó bị paused hoặc stopped. Tất cả các thông tin về Activity cũng
như trạng thái của nó vẫn còn tồn tại trong. Vì vậy, bất cứ thay đổi nào của người
dùng đối với Activity vẫn được giữ lại khi nó trở lại trạng thái hoạt động hoặc chế
độ resume.

13


1.2.2. Intent
Intent là cầu nối giữa các Activity trong ứng dụng android. Intent chính là
người đưa thư, giúp chúng ta triệu gọi cũng như truyền các dữ liệu cần thiết để

thực hiện một Activity từ một Activity khác.

Hình 1.3: Truyền dự liệu cùng intent
1.2.3. Services
Các dịch vụ (services) là thành phần chạy nền và không có bất kỳ giao diện
nào. Chúng có thể thực hiện các hành động tương tự như các hoạt động, nhưng mà
không có bất kỳ giao diện người dùng nào. Dịch vụ là hữu ích với các hành động
(actions) khi mà người dùng cùng một lúc muốn thực hiện trên màn hình nhiều
actions. Services có thể được sử dụng theo 2 cách:
+ Services có thể được bắt đầu và được phép hoạt động cho đến khi một
người nào đó dừng Services lại hoặc Services tự ngắt. Ở chế độ này, Services được
bắt

đầu

bằng

cách

gọi

Context.startService()



dừng

bằng

lệnh


Context.stopService(). Services có thể tự động ngắt bằng lệnh Service.stopSelf()
hoặc Service.stopSelfResult(). Chỉ cần một lệnh stopService() để ngừng Service lại
cho dù lệnh startService() được gọi ra bao nhiêu lần.
+ Service có thể được vận hành theo như đã được lập trình việc sử dụng
một giao diện mà nó định nghĩa. Người dùng thiết lập một đường truyền đến đối
tượng Service mà Services sử dụng và sử dụng đường kết nối đó để thâm nhập
14


vào Service. Kết nối này được thâm nhập bằng cách gọi lệnh
Context.bindService() và được đóng lại bằng cách gọi lệnh Context.unbind Service
(). Nhiều người dùng có thể kết nối tới cùng một thiết bị.
Nếu Service vẫn chưa được khởi chạy, lệnh bindService() có thể tùy ý khởi
động Services.
Hai chế độ này thì không tách biệt toàn bộ. Có thể kết nối với một Service
mà nó đã được bắt đầu với lệnh startService(). Ví dụ, một Service nghe nhạc ở chế
độ nền có thể bắt đầu với lệnh startService() cùng với một đối tượng Intent mà
định dạng được âm nhạc để chơi. Sau đó, có thể là khi người sử dụng muốn kiểm
soát trình chơi nhạc nhạc hoặc biết thêm thông tin về bài hát hiện tại đang chơi, thì
sẽ có một Activity tạo lập một đường truyền tới Service bằng cách gọi bindService
().
Trong trường hợp như thế này, stopService() sẽ không thực sự ngừng
Service cho đến khi liên kết cuối cùng được đóng lại.

15


Hình 1.4: Các phương thức gọi lại của một services
1.2.4. Content Providers

Content Providers là lớp trung gian chia sẻ dữ liệu giữa các ứng dụng. Mặc
định, Android chạy mỗi ứng dụng trong một khuôn thử của riêng nó để tất cả dữ
liệu thuộc về một ứng dụng hoàn toàn độc lập với các ứng dụng khác trong hệ
thống. Mặc dù một lượng nhỏ dữ liệu vẫn được trao đổi giữa các ứng dụng thông
16


qua các Intent, content providers sẽ tốt hơn và thích hợp nhiều cho việc chia sẻ dữ
liệu liên tục giữa các bộ dữ liệu lớn.
Hệ thống Android sử dụng cơ chế này vào mọi lúc. Chẳng hạn như Content
Providers ở đây trình bày tất cả các dữ liệu liên hệ của người dùng một cách đa
dạng trên ứng dụng. Settings Provider trình bày việc cài đặt các ứng dụng khác
nhau trên hệ thống, bao gồm cả việc xây dựng ứng dụng Settings. Media Store
chịu trách nhiệm lưu trữ và chia sẻ các phương tiện khác nhau, chẳng hạn như ảnh
và âm nhạc trên các ứng dụng khác nhau.
Content Providers là các giao diện tương đối đơn giản với các phương thức
tiêu chuẩn như insert(), update(), delete(), and query(). Các phương thức này giống
như các phương thức chuẩn trong cơ sở dữ liệu.
1.2.5. Broadcast Receivers
Broadcast Receivers (có thể gọi là Receiver) là một trong bốn loại thành
phần trong ứng dụng Android. Chức năng dùng để nhận các sự kiện mà các ứng
dụng hoặc hệ thống phát đi.
Có 2 cách phát-nhận đó là:
+ Không có thứ tự: Receiver nào đủ điều kiện thì nhận hết, không phân biệt
và cũng tách rời nhau.
+ Có thứ tự: receiver nào đăng ký ưu tiên hơn thì nhận trước và có thể
truyền thêm thông tin xử lý cho các receiver như sau.
Chu kì sống của Broadcast Receiver: thực ra chu kỳ sống của Broadcast
Receiver chỉ có duy nhất một phương thức onReceive():
+ Khi có sự kiện mà Broadcast Receiver đã đăng ký nhận được phát đi, thì

phương thức onReceive() của Broadcast Receiver đó sẽ được gọi.
+ Sau khi thực thi xong phương thức này, lifecycle của Receiver kết thúc.
+ Ngay khi onReceive() kết thúc, hệ thống coi như receiver đã không còn
hoạt động và có thể kill process chứa receiver này bất cứ lúc nào.
+ Tránh xử lý các code quá lâu trong onReceive().
17


+ Không có xử lý bất đồng bộ chờ callback trong Receiver (cụ thể như hiển
thị Dialog, kết nối các service…).

18


1.2.6. SQLite
SQLite là một dạng CSDL tương tự MySQL, PostgreSQL,… Đặc điểm của
SQLite là gọn, nhẹ, đơn giản. Chương trình gồm 1 file duy nhất vỏn vẹn chưa đến
500kB, không cần cài đặt, không cần cấu hình hay khởi động mà nó có thể sử dụng
ngay. Dữ liệu database cũng được lưu ở một file duy nhất. Không có khái niệm
user, password hay quyền hạn trong SQLite database.
1.2.7. Telephony
Telephony cũng làm một thành phần tương đối quan trọng trong hệ thống
Android. Nó cho phép người lập trình có thể lấy các thông tin của hệ thống như
thông tin SIM, thông tin thiết bị, thông tin mạng. Ngoài ra, chúng ta cũng có thể
cài đặt các thông số cho thiết bị nếu các thông số đó có thể thay đổi được. Tất cả
những điều đó được được quản lý bởi một class Telephony Manager trong
Android.
1.3. Web Service
1.3.1. Tổng quan Web Service
Web Services là một cách chuẩn để tích hợp các ứng dụng trên nền web

(Web-based applications). Các ứng dụng có thể sử dụng các thành phần khác nhau
để tạo thành một dịch vụ, ví dụ như máy chủ chạy một trang web thương mại điện
tử kết nối với cổng thanh toán điện tử qua một API - Application Programming
Interface ( tạo tởi công nghệ .NET thì web services chính là nền máy chủ (IIS Internet Information Services), và các thành phần thanh toán, các thành phần .NET
được coi là component (các thành phầm bên ngoài). Các thành phần này được gọi
bởi phương thức SOAP (Khác phương thức POST, GET) nên không bị gặp phải
firewall khi truy xuất các thành phần bên ngoài máy chủ. Và toàn bộ các thành
phần đó gọi là một Web Services.
Các Web Services cho phép các tổ chức thực hiện truyền thông dữ liệu mà
không cần phải có kiến thức về hệ thống IT phía sau tường lửa. Một số Web
19


Services hiện nay có sẵn miễn phí và càng ngày càng hướng dần vào các doanh
nghiệp.
Một ví dụ về Web Service sẵn có là dịch vụ được cung cấp bởi PayPal cho
phép những người có tài khoản có thể thanh toán hoặc trả một phần hoặc thực hiện
các giao dịch tìm kiếm, và lấy lại các thông tin của từng giao dịch cụ thể.

Hình 1.5: Mô hình ứng dụng của Web Service
1.3.2. Đặc điểm của dịch vụ Web
1.3.2.1. Đặc điểm
Dịch vụ Web cho phép Client và Server tương tác được với nhau ngay cả
trong những môi trường khác nhau. Ví dụ, đặt web server cho ứng dụng trên một
20


máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ
điều hành Windows,ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần
thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này.

Phần lớn kĩ thuật của dịch vụ web được xây dựng dựa trên mã nguồn mở và
được phát triển từ các chuẩn đã được công nhận, ví dụ như XML.
Một dịch vụ web bao gồm có nhiều mô-đun và có thể công bố lên mạng
Internet.
Là sự kết hợp của việc phát triển theo hướng từng thành phần với những
lĩnh vực cụ thể và cơ sở hạ tầng Web, đưa ra những lợi ích cho cả doanh nghiệp,
khách hàng, những nhà cung cấp khác và cả những cá nhân thông qua mạng
Internet.
Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server.
Nó có thể được triển khai bởi một phần mềm ứng dụng phía server ví dụ như PHP,
Oracle Application server hay Microsoft.Net…
1.3.2.2. Ưu và nhược điểm
Ưu điểm:
+ Dịch vụ Web cung cấp khả năng hoạt động rộng lớn với các ứng dụng
phần mềm khác nhau chạy trên những nền tảng khác nhau.
+ Sử dụng các giao thức và chuẩn mở, giao thức và định dạng dữ liệu dựa
trên văn bản (text), giúp các lập trình viên dễ dàng hiểu được.
+ Nâng cao khả năng tái sử dụng.
+ Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép
các tiến trình/chức năng nghiệp vụ đóng gói trong giao diện dịch vụ web.
+ Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần
trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán.
+ Thúc đẩy hệ thống tích hợp,giảm sự phức tạp của hệ thống hạ giá thành
hoạt động,phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các
doanh nghiệp khác.
21


Nhược điểm:
+ Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của dịch vụ Web,

giao diện không thay đổi, có thể lỗi nếu một máy khách không được nâng cấp
,thiếu các giao thức cho công việc vận hành.
+ Có quá nhiều chuẩn cho dịch vụ Web khiến người dùng khó nắm bắt.
+Phải quan tâm nhiều hơn đến bảo mật
1.3.2.3. Các thành phần của Web Service
Web Service được các thành phần cấu thành lên: XML, SOAP, WSDL….
XML ( eXtensible Markup Language)
XML là sự kết hợp nhiều thành phần và dùng các đặc trưng của các thành
phần này để giao tiếp với nhau. Để giải quyết các vấn đề giao tiếp các thành phần
Web Service sử dụng XML là thành phần chính để giao tiếp giữa các thành phần
với nhau và là kiến trúc nền tảng để bắt đầu xây dựng Web Service.
Khái niệm XML
 Là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu
 Là một ngôn ngữ mô tả văn bản với cấu trúc do người dùng định nghĩa
Đặc điểm
 XML là một ngôn ngữ đánh dấu độc lập với phần cứng, phần mềm
platform
 Cho phép các máy tính truyền cấu trúc dữ liệu giữa hệ thống không
đồng nhất
 Về hình thức XML có cấu trúc giống HTML nhưng không tuân theo
một đặc tả như HTML. HTML định nghĩa các thành phần được hiện thị như thế
nào, còn XML lại định nghĩa các thành phần chứa cái gì.
 Các thẻ XML không được định nghĩa trước mà do người lập trình tự
định nghĩa
Cấu trúc XML

22


Một tài liệu XML bao gồm 2 phần:

 Cấu trúc logic: Định nghĩa các phần tử ,các thuộc tính các kiểu dữ
liệu….
 Cấu trúc vật lý : Chứa dữ liệu và các phần tử chứa dữ liệu như text,
image, media….
WSDL (Web Service Description Language)
Khái niệm
 Là một ngôn ngữ dựa trên XML để định nghĩa Web Service
 WSDL định nghĩa cách mô tả Web Service theo cú pháp tổng quát XML
bao gồm các thông tin:
Tên Service
 Giao thức và kiểu mã hóa sẽ được sử dụng khi gọi các hàm Web Service
 Loại thông tin bao gồm thao tác, tham số, nhũng kiểu dữ liệu.
Thành phần
WSDL gồm 2 thành phần chính:
 Phần giao diện: Mô tả giao diện và giao thức kết nối
 Phần thi hành: Mô tả thông tin để truy xuất Web Service
Cấu trúc của WSLD

23


Hình 1.6 : Cấu trúc của WSLD
WSDL định nghĩa các phần tử cơ bản như sau:
Tập tin giao diện – Service Interface
WSDL mô tả 5 loại thông tin chính bao gồm: import, types, message ,
portType, binding.
 Types: WSDL định nghĩa các kiểu dữ liệu của thông điệp gửi .
 Message: Mô tả thông điệp được gửi giữa client và server.
Những định nghĩa message được sử dụng bởi phần tử thi hành service.
Nhiều thao tác có thể tham chiếu tới cùng định nghĩa message.

Thao tác và những message được mô hình riêng rẽ để hỗ trợ tính linh hoạt
và đơn giản hóa việc tái sử dụng lại. Chẳng hạn, hai thao tác với cùng tham số có
thể chia sẻ một định nghĩa message.
 Port type: WSDL mô tả cách gửi và nhận thông điệp.
WSDL định nghĩa bốn kiểu thao tác mà một cổng có thể hỗ trợ :
– One-way: Cổng nhận một message, message đó là message nhập.
– Request-response : Cổng nhận một message và gửi một message phản hồi
– Solicit-response: Cổng gửi một message và nhận về một message

24


– Notification: Cổng gửi một message, message đó là message xuất.
Mỗi kiểu thao tác có cú pháp biến đổi tùy theo: Thứ tự của các message
nhập, xuất và lỗi.
 Binding: Định nghĩa cách các web services kết hợp với nhau.
Một kết hợp bao gồm :
– Những giao thức mở rộng cho những giao tác và những message bao gồm
thông tin URN và mã hóa cho SOAP.
– Mỗi một kết hợp tham chiếu đến một loại cổng, một kiểu cổng (portType)
có thể được sử dụng trong nhiều mối kết hợp. Tất cả các thao tác định nghĩa bên
trong kiểu cổng phải nằm trong phạm vi mối kết hợp.
Tập tin thi hành – Service Implementation
WSDL mô tả 2 loại thông tin chính bao gồm: Service và Port .
 Service : Nó sẽ thực hiện những gì đã được định nghĩa trong tập tin giao
diện và cách gọi Web Services theo thủ tục và phương thức nào.
 Port là một cổng đầu cuối, nó định nghĩa như một tập hợp của binding
và một địa chỉ mạng.
 SOAP (Simple Object Access Protocol)
Khái Niệm

 SOAP là giao thức được dùng để truyền dữ liệu qua internet trong môi
trường phân tán.
 SOAP có thể được sử dụng cùng các giao thức khác như
HTML/HTTPS, FTP….
Đặc trưng
 SOAP được thiết kế đơn giản và dễ mở rộng
 Tất cả các message SOAP đều được mã hóa sử dụng XML
 SOAP sử dụng giao thức truyền dữ liệu riêng
 SOAP Client không giữ bất kì một tham chiếu nào đầy đủ về đối tượng ở xa
25


×