Đăng ký Đăng nhập
Trang chủ 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ài liệu 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

.PDF
113
115
140

Mô tả:

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() và 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
- Xem thêm -

Tài liệu liên quan