1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng hỗ trợ du lịch việt nam trên nền tảng android

64 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng dụng hỗ trợ du lịch Việt Nam trên nền tảng android
Tác giả Trần Thị Thu Thủy
Người hướng dẫn PGS.TS. Lê Văn Sơn
Trường học Đại học Đà Nẵng - Trường Đại học Sư phạm
Chuyên ngành Công nghệ thông tin
Thể loại Đề tài
Năm xuất bản 2014
Thành phố Đà Nẵng
Định dạng
Số trang 64
Dung lượng 2,4 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Một service là một thành phần của ứng dụng, thể hiện mong muốn ứng dụng thực hiện các hành động trong khi không tương tác với người dùng hoặc cung cấp chức năng cho các ứng dụng khác sử

Trang 1

Đà Nẵng – 2014

1 1.1.1

Trang 2

LỜI CẢM ƠN

Tôi xin chân thành cảm ơn các Thầy Cô trong Khoa Tin, trường Đại học

Sư phạm Đại Học Đà Nẵng đã truyền đạt những kiến thức quý báu cho tôi trong những năm học vừa qua và nhất là đã tạo điều kiện thuận lợi cho chúng tôi học tập, thực hiện đề tài tốt nghiệp này

Đặc biệt,tôi xin chân thành cảm ơn thầy Lê Văn Sơn đã trực tiếp, tận tình giúp đỡ và hướng dẫn tôi trong suốt thời gian thực hiện đề tài

Để có được kết quả như ngày hôm nay,chúng tôi rất biết ơn gia đình Ông

Bà, Cha Mẹ và những người thân trong gia đình đã động viên, khích lệ, tạo mọi điều kiện thuận lợi nhất về vật chất lẫn tinh thần trong suốt quá trình học tập cũng như quá trình thực hiện đề tài tốt nghiệp này

Mặc dù đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Tôi rất mong nhận được sự thông cảm, góp ý và tận tình chỉ bảo của quý Thầy Cô và các bạn

Một lần nữa xin chân thành cám ơn!

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan :

1 Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của Lê Văn Sơn

2 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố

3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm

Sinh viên

Trần Thị Thu Thủy

Trang 4

MỤC LỤC

DANH MỤC HÌNH ẢNH 6

DANH MỤC TỪ VIẾT TẮT 7

DANH MỤC BẢNG BIỂU 8

MỞ ĐẦU 9

1 Tính cấp thiết của đề tài 9

2 Mục đích của đề tài 9

3 Phương pháp nghiên cứu 10

CHƯƠNG 1 - TỔNG QUAN VỀ LẬP TRÌNH ANDROID 11

1.1 Tìm hiểu về hệ điều hành Android 11

1.2 Kiến trúc 12

1.2.1 Tầng ứng dụng 12

1.2.2 Tầng ứng dụng Framework 12

1.2.3 Tầng thư viện 13

1.2.4 Tầng Android Runtime 14

1.2.5 Tầng Linux Kernel 14

1.3 Kiến thức, công cụ cần thiết để phát triển ứng dụng android 15

1.3.1 Kiến thức cần có 15

1.3.2 Công cụ 15

1.4 Tìm hiểu các thành phần của một ứng dụng android 15

1.5 Tìm hiểu các thành phần của một project android 21

1.6 Tìm hiểu các dịch vụ hỗ trợ android 22

1.6.1 Google Map và Google Map API 22

1.6.2 Hệ quản trị CSDL SQLite 24

1.7 Restful web service 25

Trang 5

1.7.1 Web Service 25

1.7.2 Restful Web Service 26

CHƯƠNG 2 - PHÂN TÍCH THIẾT KẾ HỆ THỐNG 28

2.1 Mô tả bài toán 28

2.2 Phân tích hiện trạng du lịch Việt Nam 28

2.2.1 Tổng quan 28

2.2.2 Tiềm năng du lịch Việt Nam 29

2.2.3 Vấn đề nan giải 29

2.3 Phân tích yêu cầu bài toán 30

2.3.1 Người sử dụng 30

2.3.2 Kho dữ liệu 31

2.3.3 Công nghệ 32

2.4 Phân tích khả thi 32

2.4.1 Tính khả dụng 32

2.4.2 Chi phí phát triển 33

2.5 Yêu cầu chức năng 33

2.6 Biểu đồ sử dụng 34

2.6.1 Mức 0 34

2.6.2 Mức 1 34

CHƯƠNG 3 – PHÁT TRIỂN ỨNG DỤNG HỖ TRỢ DU LỊCH 42

3.1 Xây dựng cơ sở dữ liệu 42

3.1.1 Bảng dữ liệu 42

3.1.2 Mô hình quan hệ dữ liệu 50

3.2 Giao diện của ứng dụng 51

3.2.1 Giao diện chính 51

3.2.2 Giao diện giới thiệu về Việt Nam 52

3.2.3 Giao diện thành phô 54

Trang 6

3.2.4 Giao diện đánh dấu địa điểm 57

3.2.5 Giao diện địa danh 58

3.2.6 Giao diện khách sạn 60

3.2.7 Giao diện đăng nhập facebook 61

KẾT LUẬN 62

TÀI LIỆU THAM KHẢO 63

Trang 7

DANH MỤC HÌNH ẢNH

Hình 1: Kiến trúc Android 12

Hình 2: Mô hình hợp tác giữa máy ảo Dalvik và Navite code 14

Hình 3: Lược đồ vòng đời của Activity 17

Hình 4: Sử dụng Intent để trao đổi thông tin giữa hai chương trình 17

Hình 5: Lược đồ vòng đời của Service 19

Hình 6: Ví dụ mô hình dữ liệu thông tin số điện thoại trong máy 20

Hình 7: Các thành phần của URI 20

Hình 8: Cấu trúc thư mục và tệp tin của dự án phần mềm Android trên Eclipse 21

Hình 9: Mô hình Web Service 25

Hình 10: Trao đổi client server 26

Hình 11: Restful web service 27

Hình 12: Use case tổng quát 34

Hình 13: Use case xem danh sách nội dung 35

Hình 14: Use case xem chi tiết nội dung 36

Hình 15: Use case tìm kiếm theo từ khóa 37

Hình 16: Use case tra cứu địa điểm gần 37

Hình 17: Use quản lý nội dung dữ liệu 38

Hình 18: Use case duyệt hình ảnh 39

Hình 19: Use case xem thư viện hình ảnh 39

Hình 20: Use case gửi bình luận 40

Hình 21: Use case chia sẻ hình ảnh 40

Hình 22: Use case xem thông tin liên lạc 41

Hình 23: Use case đánh dấu địa điểm 41

Hình 24: Mô hình quan hệ dữ liệu 50

Hình 25: Giao diện chính 51

Hình 26: Giao diện Việt Nam 52

Hình 27: Giao diện danh mục 53

Hình 28: Giao diện danh mục thành phố 54

Hình 29: Giao diện thành phố 55

Hình 30: Giao diện hình ảnh 56

Hình 31: Giao diện đánh dấu 57

Hình 32: Giao diện địa danh 58

Hình 33: Giao diện khách sạn 60

Hình 34: Giao diện đăng nhập facebook 61

Trang 8

HTTP HyperText Transfer Protocol

IDE Integrated Drive Electronics

IOS Internet Operating System

JDK Java Development Kit

JNI Java Native Interface

JSON JavaScript Object Notation

PHP Hypertext Preprocessor

SMS Short Message Services

SQL Structure Query Language

UI International Unit

UNESCO United Nations Educational Scientific and Cultural Organization

URI Uniform Resource Identifier

URI Uniform Resource Identifier

USD United States Dollars

XML eXtensible Markup Language

Trang 9

DANH MỤC BẢNG BIỂU

Bảng 1 : Bảng các chức năng 33

Bảng 2: Bảng User 42

Bảng 3 : Bảng City 43

Bảng 4 : Bảng Destination 44

Bảng 5 : Bảng Restaurant 45

Bảng 6 : Bảng Hotel 47

Bảng 7 : Bảng Review 47

Bảng 8 : Bảng Gallery 48

Bảng 9 : Bảng Image 49

Bảng 10 :Bảng ShareImage 49

Trang 10

MỞ ĐẦU

1 Tính cấp thiết của đề tài

Ngày nay, khi cuộc sống vật chất đã được đảm bảo thì con người sẽ tìm tới các dịch

vụ nhằm nâng cao đời sống tinh thần và vật chất.Sự phát triển của các ngành công nghiệp dịch vụ không khỏi được đẩy mạnh, trong đó du lịch dịch vụ là một ngành mang lại nhiều tiềm năng trong công cuộc phát triển bền vững của một quốc gia

Nhu cầu du lịch của mọi người đã trở thành phổ biến Ngoài các tua du lịch do các công ty cung cấp thì ngày nay cũng đã xuất hiện nhiều các hình thái du lịch cá nhân, mang tích chất tự do Đối với nước ngoài thì loại hình này đã được phát triển rất lâu, người du lịch bỏ ra chi phí thấp cho một chuyến du lịch và họ sẽ được trải nghiệm hoàn toàn theo cách riêng của mình Đối với nước ta, thì loại hình này đang giai đoạn phát triển, việc nắm bắt loại hình này sẽ giúp cho các địa phương nâng cao phát triển các ngành dịch vụ du lịch và mang lại nguồn lợi to lớn cũng như quảng bá hình ảnh của đất nước

Đồng thời, sự phát triển của khoa học công nghệ ngày càng nhanh chóng Điện thoại di động không còn đơn thuần là thiết bị liên lạc, mà trở thành một công cụ giải trí

đa phương tiện và một vật không thể thiếu của mọi người Đối với người du lịch thì một chiếc điện thoại sẽ hỗ trợ họ rất nhiều trong chuyến du lịch, nhất là những người

du lịch tự do ( không theo các tua du lịch ) Điện thoại giúp họ tìm đường, xác định vị trí, ghi lại những hình ảnh đẹp, chia sẻ cho bạn bè, người thân và còn nhiều lợi ích khác mang lại cho người dùng

Nhằm phục vụ cho các đối tượng du lịch cá nhân, hành trình không theo các tour du lịch do các công ty lữ hành cung cấp và sự kết hợp công nghệ phát triển của điện thoại

thông minh thì , ý tưởng của tôi đưa ra là xây dựng phát triển ứng dụng “Hỗ trợ du

lịch Việt Nam” trên nền tảng Android

2 Mục đích của đề tài

Đề tài nhằm nghiên cứu những vấn đề sau:

- Tìm hiểu về lập trình trên điện thoại di động Android

- Vận dụng được kiến thức đã được học và tìm hiểu được vào việc phát triển một ứng dụng hoàn chỉnh chạy trên hệ điều hành Android

- Hoàn thiện hơn kĩ năng lập trình của bản thân

Trang 11

3 Phương pháp nghiên cứu

- Sử dụng các phương pháp phân tích, thống kê

- Sử dụng những kĩ thuật lập trình để xây dựng ứng dụng “Hỗ trợ du lịch Việt Nam” trên hệ điều hành android

Trang 12

CHƯƠNG 1 - TỔNG QUAN VỀ LẬP TRÌNH ANDROID 1.1 Tìm hiểu về hệ điều hành Android

Hiện nay các nền tảng di động đang phát triển rất đa dạng trong đó có thể kể đến như: IOS, Android, WindowsPhone, Blackbery, Symbyan Trong đó, Android là một nền tảng khả thi và thú vị cho các nhà phát triển

Các thành phần chính của hệ điều hảnh android:

App Drawer: Đây là một thành phần hết sức quan trọng của Android với vai

trò chính là liệt kê tất cả những ứng dụng hiện có trong thiết bị của bạn

Thanh trạng thái: Thanh thông báo trạng thái là đối tượng phía trên cùng của

màn hình, nơi đặt các biểu tượng pin, đồng hồ,

Widget: Khái niệm widget có nghĩa là một thiết bị nhỏ, đính kèm theo một

dụng cụ nào đó Trên Android, bạn có thể hiểu widget chính là những ứng dụng nhỏ gắn trên màn hình chính của Launcher

Lock Screen: Lock Screen là một thành phần thuộc hệ thống của Android

Lock Screen là nơi mà bạn cần kéo thanh trượt (hoặc các động tác tương tự) để

mở khóa máy và bắt đầu sử dụng [1]

Một số thành phần khác: Ngoài các thành phần cơ bản của hệ điều hành

Android được Google đóng gói khi phát hành thì một số tính năng khác cũng được thêm vào tùy theo hãng sản xuất thiết bị chẳng hạn như Flash, Launcher riêng…

Trang 13

1.2.2 Tầng ứng dụng Framework

Bằng cách cung cấp một nền tảng phát triển mở,Android cung cấp cho các nha phát triển khả năng để xây dựng các ứng dụng vô cùng phong phú và sáng tạo Các nhà phát triển đƣợc miễn phí để tận dụng lợi thế của các thiết bị phần cứng,thông tin địa điểm truy cập,dịch vụ chạy nền,thiết lập hệ thống báo động,thêm các thông báo đến các thanh trạng thái và nhiều, nhiều hơn nữa

Các nhà phát triển có thể truy cập vào các API cùng một khuôn khổ đƣợc sử dụng bởi các ứng dụng lõi.Kiến trúc ứng dụng đƣợc thiết kế để đơn giản hóa việc tái sử dụng

Trang 14

các thành phần; bất kỳ ứng dụng có thể xuất bản các khả năng của mình và ứng dụng nào khác sau đó có thể làm cho việc sử dụng những khả năng (tùy thuộc vào chế bảo đảm thi hành theo khuôn khổ).Cơ chế này cũng cho phép các thành phần được thay thế bởi người sử dụng

Nằm bên dưới tất cả các ứng dụng là một tập hợp các dịch vụ và hệ thống,bao gồm

 Một tập phong phú và mở rộng có thể được sử dụng để xây dựng một ứng dụng,bao gồm các danh sách,hộp văn bản,các nút và thậm chí một trình duyệt web nhúng

 Nhà cung cấp nội dung cho phép các ứng dụng để truy cập dữ liệu từ các ứng dụng khác như Contacts hoặc chia sẻ dữ liệu của riêng mình

 Một quản lý tài nguyên,cung cấp quyền truy cập vào tài nguyên phi mã như

 Media Libraries : dựa trên OpenCORE PacketVideo’s sự hỗ trợ các thư viện phát lại và ghi âm của âm thanh và phổ biến nhiều định dạng video,cũng như các tập tin hình ảnh tĩnh

 Surface Manager : quản lý quyền truy cập vào hệ thống con hiền thị và hoàn toàn phù hợp chất 2D và 3D lớp từ nhiều ứng dụng đồ họa

 LibWebCore : một trình duyệt web hiện đại,động cơ có quyền hạn cả hai trình duyệt web của Android

 3D Libraries : một việc thực hiện dựa trên OpenGL ES 1.0 API,các thư viện hoặc sử dụng phần cứng tăng tốc 3D

Trang 15

 SQLite : một kho lưu trữ dữ liệu manh mẽ và nhẹ quan hệ cơ sở dữ liệu có sẵn cho tất cả các ứng dụng

1.2.4 Tầng 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ả 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 (.dex) Đị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ư thread, low-level memory management[2]

1.2.5 Tầng Linux Kernel

Hệ điều hành Android được xây dựng trên bộ nhân Linux 2.6 cho những dịch vụ

hệ thống cốt lõi như: security, memory management, process management, network stack, driver model Bộ nhân này làm 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ô hình hợp tác giữa máy ảo Dalvik và Navite code:

Hình 2: Mô hình hợp tác giữa máy ảo Dalvik và Navite code

JNI: Java Native Interface (Tương tự khái niệm Application Programming Interface)

Trang 16

Java Native Interface: 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 Assembly

Bằng cách sử dụng SGLJNI, 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 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.3 Kiến thức, công cụ cần thiết để phát triển ứng dụng android

- Apache Tomcat v6.0.8 để tạo máy chủ thực thi web service

- Máy điện thoại có cài hệ điều hành android từphiên bản 2.3 đến 4.3, hoặc máy

ảo cài trên máy tính để có thể chạy thử chương trình

1.4 Tìm hiểu các thành phần của một ứng dụng android

Activity

Là thành phần tối quan trọng của bất kỳ một ứng dụng Android nào.Thuật ngữ Activity chỉ một việc mà người dùng có thể thực hiện trong một ứng dụng Android Do

Trang 17

gần như mọi activity đều tương tác với người dùng, lớp Activity đảm nhận việc tạo ra một cửa sổ (window) để người lập trình đặt lên đó một giao diện UI với setContentView(View) Một activity có thể mang nhiều dạng khác nhau: Một cửa sổ toàn màn hình (full screen window), một cửa sổ floating (với windowsIsFloating) hay nằm lồng bên trong 1 activity khác (với ActivityGroup).

Có 2 phương thức mà gần như mọi lớp con của Activity đều phải hiện thực:

 onCreate(Bundle) : Nơi khởi tạo activity Quan trọng hơn, đây chính người lập trình gọi setContentView(int) kèm theo layout để thể hiện UI của riêng mình Đồng thời còn có findViewById(int) giúp gọi các widget (buttons, text boxes, labels, ) để dùng trong UI

 onPause() : Nơi giải quyết sự kiện người dùng rời khỏi activity Mọi dữ liệu được người dùng tạo ra tới thời điểm này cần phải được lưu vào ContentProvider

Vòng đời của một Activity :

Các activity được quản lí dưới dạng các activity stack - First-In-Last-Out: Khi một activity mới được khởi tạo, nó sẽ được đưa lên trên cùng stack, các activity khác muốn chạy trên nền (foreground) trở lại thì cần phải chờ tới khi Activity mới này kết thúc

Một Activity có 4 trạng thái:

Active hay Running: Khi một activity đang chạy trên màn hình

Paused: Khi một activity vẫn đang chạy trên màn hình nhưng đang bị một activity trong suốt (transparent) hay không chiếm toàn màn hình hiển thị phía trên Tuy vẫn lưu trữ dữ liệu, nhưng các paused activity này sẽ bị hệ thống bắt chấm dứt khi đang thiếu bộ nhớ trầm trọng

Stopped: Khi 1 activity bị che khuất hoàn toàn bởi 1 activity khác Tuy vẫn lưu trữ dữ liệu, nhưng các stopped activity này sẽ thường xuyên bị hệ thống bắt chấm dứt

để dành chỗ cho các tiến trình khác

Killed hay Shut down: Khi 1 activity đang paused hay stopped, hệ thống sẽ xóa activity ấy ra khỏi bộ nhớ

Trang 18

Hình 3: Lược đồ vòng đời của Activity

Intent

Intent cung cấp một chức năng cho phép kết nối hai chương trình khác nhau trong quá trình thực thi (runtime) (Cung cấp khả năng cho phép hai chương trình khác nhau

giao tiếp với nhau) Chức năng quan trọng và được sử dụng nhiều nhất của một Intent

là mở một Activity, nơi mà nó có thểđược dùng như một vật kết nối các Activity lại với nhau (Truyền thông tin giữa hai Activity khác nhau)

Hình 4: Sử dụng Intent để trao đổi thông tin giữa hai chương trình

Trang 19

Một service là một thành phần của ứng dụng, thể hiện mong muốn ứng dụng thực hiện các hành động trong khi không tương tác với người dùng hoặc cung cấp chức năng cho các ứng dụng khác sử dụng Nói một cách đơn giản, service là các tác vụ (task) chạy ngầm dưới hệ thống nhằm thực hiện một nhiệm vụ nào đó Mỗi class Service phải chứa thẻ <service> được khai báo trong fileAndroidManifext.xml Services có thể được bắt đầu bởi Context.startService() và Context.bindservice()

Cũng như các đối tượng của ứng dụng khác, services chạy trên luồng (Thread) của tiến trình chính Có nghĩa là nếu service của bạn dự định chạy các hành vi có cường độ lớn hoặc các hành vi có thể gây nghẽn mạch, nó sẽ tự sinh ra luồng (Thread) của chính nó để làm thực hiện các tác vụ được đặc tả trong Service

Cần lưu ý:

Service không phải là một tiến trình độc lập.Đối tượng Service không chạy trên tiến trình (process) của riêng nó (trừ khi có một yêu cầu đặt biệt), Service chạy trên tiến trình của chương trình

Service không phải là một luồng (thread)

Service có chứa 2 đặc trưng cơ bản sau:

Là một chức năng để ứng dụng thông báo với hệ thống về việc mà nó muốn thực hiện ở phía dưới nền (ngay cả khi người dùng không tương tác trực tiếp tới ứng dụng) Điều này tương ứng với việc gọi phương thức Context.startservice(), nó sẽ yêu cầu hệ thống lên lịch cho service để chạy cho đến khi bị chính service hay người nào

đó dừng nó lại

Là một chức năng cho phép ứng dụng để cung cấp các chức năng của nó cho các ứng dụng khác Điều đó tương ứng với việc gọi Context.bindService(), cho phép một long-standing connection được tạo ra để service có thể tương tác với nó

Khi một Service được tạo ra, việc hệ thống cần làm là tạo ra thành phần và gọi hàm onCreate() và bất kỳ lệnh callback thích hợp nào trên luồng chình Nó phụ thuộc vào Service thi hành hành vi thích hợp nào, chẳng hạn tạo luồng thứ hai để thực hiện tiến trình

Vòng đời của 1 Service :

Trang 20

Có 2 lý do để một service được chạy bởi hệ thống Bằng cách gọi phương thức Context.startService() và Context.bindService() Nếu người dùng gọi phương thức Context.startService() thì hệ thống sẽ nhận về một đối tượng service (tạo mới nó và gọi hàm onCreate() nếu cần thiết) và sau đó lại gọi phương thức onStartCommand(Intent, int ,int) với các biến được cung cấp bởi client Service mới được tạo ra này sẽ chạy cho tới khi có lệnh gọi phương thức Context.stopService() hoặc stopSelf() Dù cho một service có được start bao nhiêu lần đi nữa thì nó sẽ bị tắt ngay khi phương thức Context.stopService() hoặc phương thức stopSelf() được gọi.Service có thể dùng phương thức stopSelf(int) để đảm bảo rằng service sẽ không được tắt cho đến khi Intent đã khởi tạo nó được xử lý [7]

Hình 5: Lược đồ vòng đời của Service

Content Provider

Là nơi lưu trữ và cung cấp cách truy cập dữ liệu do các ứng dụng tạo nên Đây

là cách duy nhất mà các ứng dụng có thể chia sẻ dữ liệu của nhau

Trang 21

Android cung cấp sẵn content providers cho 1 số kiểu dữ liệu thông dụng như

âm thanh, video, thông tin sổ điện thoại Người lập trình cũng có thể tự tạo ra các class con (subclass) của Content Provider để lưu trữ kiểu dữ liệu của riêng mình

Content providers sử dụng dữ liệu dưới dạng 1 table đơn giản, trong đó mỗi hàng là 1 record và mỗi cột là dữ liệu của 1 kiểu nhất định

Hình 6: Ví dụ mô hình dữ liệu thông tin số điện thoại trong máy

Mỗi record có 1 trường “_ID” độc nhất để liên kết với các bảng khác

URI (Uniform Resource Identifier)

URI là dãy các ký tự string được dùng để:

Mở 1 trang web trong trình duyệt, bắt đầu với “http://”

Chỉ tới các file tài nguyên có sẵn trong máy (VD: 1 file video, danh sách contacts, ), bắt đầu với "content://"

Hình 7: Các thành phần của URI

A – Tiền tố mặc định của 1 URI, không thay đổi được

B – Xác định content provider Đối với các ứng dụng hãng thứ 3, đây chính là tên đầy đủ của 1 lớp

C – Xác định loại dữ liệu nào cần lấy về Nếu nguồn cung cấp chỉ cho lấy 1 loại duy nhất thì có thể để trống, hoặc nếu có nhiều loại thì có thể phân ra từng phần 1 (land/bus, land/train, sea/ship,…)

Trang 22

D – ID của 1 record, khi cần lấy về chỉ duy nhất 1 record.

Khi tạo 1 content provider, Android tự động tạo 1 constant cho URI của provider đó để đảm bảo code hiệu quả và dễ cập nhật sau này.Constant này - CONTENT_URI - sẽ xác định cho ContentProvider phải liên kết với bảng nào của nguồn cung cấp

1.5 Tìm hiểu các thành phần của một project android

Hình 8: Cấu trúc thƣ mục và tệp tin của dự án phần mềm Android trên Eclipse

AndroidManifest.xml: file XML mô tả ứng dụng và các thành phần đuợc cung

cấp bởi ứng dụng (activities, services, )

Trang 23

build.xml: Một file chứa mã script Ant (ant.apache.com) nhằm compile và cài

đặt ứng dụng lên máy

default.properties: file property tạo bởi script Ant trên

bin/ : nơi chứa ứng dụng sau khi được compile

bin/classes/ : chứa các lớp Java đã được compile

bin/classes.dex : chứa các file executable tạo bởi các lớp Java

bin/yourapp.ap_ : chứa các tài nguyên của ứng dụng, đóng gói thành 1 file zip bin/yourapp-debug.apk hay bin/yourapp-unsigned.apk : chứa chính ứng

dụng Android của ta

libs/ : nơi chứa các file Java JAR ứng dụng yêu cầu (third party)

src/ : nơi chứa mã nguồn Java của ứng dụng

res/ : chứa các tài nguyên của ứng dụng, như các icons, GUI layouts,

res/drawable/ : chứa file hình ảnh (PNG, JPEG, )

res/layout/ : chứa UI layout, dưới dạng XML

res/menu/ : chi tiết các menu, dưới dạng XML

res/raw/ : chứa các file khác (CSV chứa thông tin account, )

res/values/ : chứa các strings, dimensions,

res/zml/ : chứa các file XML khác cần cho ứng dụng

assets/ : nơi chứa các files tĩnh (static) được yêu cầu đi kèm với ứng dụng.

Trang 24

đồ đường xá, đường đi cho xe đạp, cho người đi bộ (những đường đi ngắn hơn 6.2 dặm) và xe hơi, và những địa điểm kinh doanh trong khu vực cũng như khắp nơi trên thế giới Lúc đó chúng ta có thể nhấp và kéo bản đồ để xem ngay các khu vực lân cận Xem hình ảnh vệ tinh của vị trí mong muốn mà bạn có thể thu nhỏ, phóng to và quay Với các thiết bị di động thì Google Map cung cấp một bộ hỗ trợ trên nhiều dòng điện thoại và được phát triển trên nền tảng web.Địa chỉ truy cập

:m.google.com.vn/maps

Google Map hỗ trợ người dùng xem vị trí bản đồ,xác định vị trí hiện tại của mình

(thông qua IP khi kết nối internet hoặc GPS trên điện thoại di động),xem bản đồ giao thông, địa lý, thời tiết,tìm kiếm bằng giọng nói,tìm kiếm các địa điểm công cộng, như: nhà hàng, khách sạn, bệnh viện, chợ ,cho phép người dùng đăng tải vị trí địa điểm của mình,…[3]

b Google Map API

Là một dịch vụ được cung cấp miễn phí cho các lập trình viên để khai thác dữ liệu sẵn có khổng lồ và nhiều tiện ích khác của Google Map Trên các thiết bị di động, ta có thể sử dụng Google Maps API thông qua các Google Maps API webservices

Thành phần chính của Google Map API gồm :

 Directions API : là công cụ tính toán khoảng cách giữa các đối tượng tĩnh trên bản đồ thông qua giao thức HTTP

 Distance Matrix API : là công cụ tính toán thời gian và khoảng cách di

chuyển giữa các điểm trên bản đồ, không mang tính chất chỉ đường

 Elevation API : là công cụ tính toán độ cao của một điểm thông qua vị trí được cung cấp là kinh tuyến và vĩ tuyến

 Geocoding API : là công cụ chuyển đổi trực tiếp từ một địa chỉ cụ thể thành

vị trí trên bản đồ và ngược lại

 Places API : là công cụ trả về thông tin đầy đủ của một địa điểm trên bản đồ được xác định thông qua vị trí trên bản đồ Sử dụng giao thức HTTP để gởi

yêu cầu

Trang 25

 Dữ liệu trả về từ hệ thống dưới dang JSON hoặc XML Sau khi nhận được

dữ liệu trả về, chúng ta phải phân tích cú pháp dữ liệu để có thông tin cần thiết trong ứng dụng

 Trong các ứng dụng Android, chúng ta chủ yếu sử dụng kiểu dữ liệu JSON

vì nó tương đối dễ dàng phân tích cú pháp để lấy được dữ liệu cần thiết nhanh chóng

1.6.2 Hệ quản trị CSDL SQLite

Khi lập trình trên di động hay các thiết bị có dung lượng bộ nhớ hạn chế, người

ta thường dùng SQLite SQLite là một hệ quản trị cơ sở dữ liệu nhúng được hiện thực

từ chuẩn SQL-92.Giống với cái tên của nó, SQLite chiếm dung lượng nhỏ (khoảng 275KB) nên việc truy xuất dữ liệu được nhanh chóng, không chiếm dụng quá nhiều tài nguyên hệ thống Do SQLite là phần mềm mã nguồn mở nên nó không bị giới hạn tác quyền Vì lý do đó mà SQLite được nhiều hãng sử dụng (Adobe, Apple, Google, Sun, Symbian) và các dự án mã nguồn mở (Mozila, PHP, Python)

Đặc biệt, đối với Android, SQLite rất thích hợp để tạo cơ sở dữ liệu cho các ứng dụng trên nền Android.Từ khi SQLite có giao diện SQL thì nó càng được sử dụng dễ dàng và thông dụng hơn

Sqlite tuy nhẹ hơn so với các hệ cơ sở dữ liệu khác nhưng cũng không khác biệt nhiều SQLite cũng sử dụng ngôn ngữ truy vấn SQL (SELECT, INSERT, DELETE…), thích hợp cho các ứng dụng trên điện thoại, đặc biệt là ứng dụng trên hệ điều hành Android vì Android Runtime có thể chứa cả SQLite mà không cần phải chia nhỏ ra [4]

SQLite có một hệ thống câulệnhSQL đầy đủ với các triggers, transactions Các câu truy vấn cũng như các hệ cơ sở dữ liệu khác SQLite như bản thu nhỏ của so với các hệ CSDL khác, vì vậy nó không thể có đầy đủ các chứ năng trên chiếc điện thoại di động của bạn [8]

SQLite là một lựa chọn thích hợp dành cho ứng dụng trên hệ điều hành Android Ngoài dung lượng lưu trữ nhỏ gọn, SQLite còn cho phép sử dụng Unicode, kiểu dữ liệu không được cài đặt trong một số phiên bản Android

Trang 26

1.7 Restful web service

1.7.1 Web Service

Thuật ngữ dịch vụ Web (Web Service) mô tả một cách thức chuẩn để tích hợp các ứng dụng dựa trên nền tảng Web, sử dụng các chuẩn mở XML (Extensible Markup Language), SOAP (Simple Object Access Protocol), WSDL (Web Services Description Language) và UDDI (Universal Description Discovery and Integration) thông qua giao thức Internet

SOAP là một đặc tả kỹ thuật về cách thức đọc và định dạng tài liệu XML giữa dịch vụ yêu cầu và dịch vụ cung cấp trong kiến trúc Web Service.Nó cung cấp một khung ứng dụng thông điệp không phụ thuộc vào hệ điều hành, ngôn ngữ lập trình hay nền tính toán

WSDL là một ngôn ngữ dựa trên XML dùng để mô tả giao diện của Web Service.Nó cung cấp một cách thức chuẩn để mô tả các kiểu dữ liệu được truyền trong các thông điệp thông qua Web Service, các hoạt động được thực hiện trên các thông điệp và ánh

xạ các hoạt động này đến giao thức vận chuyển [5]

Hình 9: Mô hình Web Service

Một công nghệ chính nữa của Web Service đó là UDDI, nó cung cấp một khung ứng dụng về các nghiệp vụ để xuất bản một Web Service, khám phá các Web Service hiện hữu và xây dựng các đăng ký dịch vụ chung

Được sử dụng chủ yếu như một phương tiện để cho các doanh nghiệp giao tiếp với nhau và với khách hàng, Web Service cho phép các tổ chức giao tiếp dữ liệu mà không cần am hiểu về các hệ thống công nghệ thông tin khác

Theo W3C, Web service được thiết kế trong việc hỗ trợ tương tác giữa máy với máy thông qua môi trường mạng Web service thường là các Web API (Application

programming interface) có thể truy cập qua môi trường mạng, ví dụ như Internet, và được thực hiện trên một hệ thống từ xa được yêu cầu các dịch vụ

Trang 27

Hình 10: Trao đổi client server

1.7.2 Restful Web Service

Restful web service là kiểu dịch vụ web được xây dựng dựa trên nền kiến trúc REST

và phương thức HTTP

REST (Representational State Transfer) đã được chọn sử dụng rộng rãi thay cho Web service dựa trên SOAP và WSDL vì nó đơn giản và dễ sử dụng hơn rất nhiều REST định nghĩa các quy tắc kiến trúc để bạn thiết kế Web services chú trọng vào tài nguyên hệ thống, bao gồm các trạng thái tài nguyên được định dạng như thế nào và được chuyển tải qua HTTP thông qua số lượng lớn người dùng và được viết bởi những ngôn ngữ khác nhau Nếu tính theo số dịch vụ mạng sử dụng, REST đã nổi lên trong vài năm qua như là một mô hình thiết kế dịch vụ chiếm ưu thế Trong thực tế, REST đã

có những ảnh hưởng lớn và gần như thay thế SOAP và WSDL vì nó đơn giản và dễ sử dụng hơn rất nhiều

Điểm quan trọng trong thiết kế của REST là sự tồn tại của tài nguyên(resource) và được tham chiếu bởi các định danh URI.Để thực hiện thao tác với các tài nguyên này, các thành phần mạng phải kết nối với nhau thông qua giao thức HTTP và thực hiện trao đổi các thành phần thể hiện của tài nguyên

RESTful Web Services là một web API Nó là một tập hợp các tài nguyên, được định nghĩa bởi các khía cạnh:

 Kiểu dữ liệu MIME được hỗ trợ bởi web API.Thường thì kiểu dữ liệu này là JSON nhưng cũng có thể là bất kỳ kiểu MIME hợp lệ nào khác

 Một tập hợp các phương thức được hỗ trợ bởi web API sử dụng các phương thức sẵn có của HTTP(GET, POST, PUT hoặc DELETE)

 API phải là các liên kết siêu văn bản

Trang 28

Dữ liệu đƣợc truyền trực tiếp trên HTTP và đƣợc truy cập thông qua HTTP theo đúng định dạng MIME mà không cần thông qua dạng SOAP – giảm bớt sự phức tạp –

vì đơn giản chúng ta sẽ coi dữ liệu và chức năng nhƣ là tham số truyền hay dữ liệu đính kèm trong HTTP [6]

Cơ chế hoạt động :

 Client gửi request yêu cầu resources thông qua HTTP

 Web services dựa trên request để đáp ứng yêu cầu và response kết quả trả về

 Response đƣợc trả về theo đúng định dạng yêu cầu của client

 Client xử lý kết quả từ response để đáp ứng yêu cầu của mình

Hình 11: Restful web service

Trang 29

CHƯƠNG 2 - PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Trong chương này sẽ mô tả bài toán,giới thiệu về thực trạng du lịch Việt Nam từ đó xác định đưa ra các loại người dùng và nhu cầu sử dụng cho từng đối tượng người dùng.Các yếu tố này là cơ sở đểcó cách nhìn tổng quát cho hệ thống là tiên đề triển khai ứng dụng chúng ta sau này

2.1 Mô tả bài toán

Đối tượng gồm các khách du lịch (đi hoặc không đi theo tua du lịch), các công ty khai thác các tua du lịch

 Mục đích

 Ứng dụng cung cấp các địa điểm du lịch ở từng vùng cho người du lịch

 Người du lịch có thể tìm kiếm các địa điểm du lịch theo vị trí hiện tại của họ hoặc theo từng vùng Thông qua đó người du lịch có thể đánh giá và bình luận địa điểm này

 Người du lịch có thể chia sẻ hình ảnh về các địa điểm mình đã đi qua

 Người du lịch sẽ tìm thấy những điểm đến nổi tiếng nhất một cách dễ dàng nhất thông qua sàn lọc của hệ thống

Doanh thu ngành du lịch Việt Nam năm 2009 đạt từ 68.000 đến 70.000 tỷ đồng Theo dự báo của Tổng cục du lịch Việt Nam, năm 2015 ngành du lịch Việt Nam sẽ thu hút 7-8 triệu lượt khách quốc tế, 32-35 triệu khách nội địa, con số tương ứng năm

Trang 30

2020 là 11-12 triệu khách quốc tế, 45-48 triệu khách nội địa Doanh thu từ du lịch sẽ đạt 18-19 tỷ USD năm 2020 ( Theo nguồn http://vietnamtourism.gov.vn)

Tuy nhiên, ngành du lịch Việt Nam từ nhiều năm nay, cũng đang bị báo động về nạn "chặt chém", bắt nạt du khách, hạ tầng cơ sở yếu kém và chất lượng dịch vụ kém, tạo ấn tượng xấu với du khách

2.2.2 Tiềm năng du lịch Việt Nam

Về di tích : Việt Nam có hơn 40.000 di tích, thắng cảnh trong đó có hơn 3000 di

tích được xếp hạng di tích quốc gia và hơn 5000 di tích được xếp hạng cấp tỉnh Việt Nam có 117 bảo tàng trong đó các bộ, ngành quản lý 38, các địa phương quản lý 79

Về thắng cảnh: Việt Nam được UNESCO công nhận 8 khu dự trữ sinh quyển thế

giới, 30 vườn quốc gia, 21 khu du lịch quốc gia Việt Nam đứng thứ 27 trong số 156 quốc gia có biển trên thế giới với 125 bãi tắm biển, hầu hết là các bãi tắm đẹp Việt Nam là 1/12 quốc gia có vịnh đẹp nhất thế giới là vịnh Hạ Long và vịnh Nha Trang

Về văn hóa:Việt Nam có 54 dân tộc anh em, mỗi dân tộc đều có những nét đặc

trưng về văn hoá, phong tục tập quán và lối sống riêng Ngành du lịch và các địa phương đã nỗ lực xây dựng được một số điểm du lịch độc đáo

2.2.3 Vấn đề nan giải

Du lịch Việt Nam đang đối mặt với nhiều vấn đề yếu kém như ô nhiễm môi trường tại các điểm du lịch, nhiều di tích không được bảo quản đúng mức, gây hư hỏng nghiêm trọng hay bị sửa lại khác xa mẫu cổ và luôn thu phí vào cửa, tình trạng chèo kéo, tăng giá phòng tùy tiện, chất lượng hạ tầng cơ sở và giao thông thấp, dịch vụ kém, trong khi đó công tác quản lý chưa đạt hiệu quả

Năm 2012, lần nữa, những tin tức tiêu cực và kinh nghiệm xấu về du lịch Việt Nam được đăng tải trên nhiều báo chí, phản ánh “Nạn lừa đảo du khách rất đáng báo

động”, chất lượng dịch vụ kém và du khách đua nhau tố các chiêu 'chặt chém, chưa có

dấu hiệu thay đổi Thêm nữa, nạn ô nhiễm môi trường lại tăng lên, theo kết quả của báo

cáo thường niên năm 2012 mang tên The Environmental Performance Index (EPI) của

hai trung tâm nghiên cứu môi trường thuộc Đại học Yale và Columbia của Mỹ thực hiện, về ảnh hưởng của chất lượng không khí, Việt Nam đứng thứ 123 trong bảng xếp hạng 132 quốc gia khảo sát, được xem là có không khí bẩn thứ 10 thế giới

Trang 31

2.3 Phân tích yêu cầu bài toán

2.3.1 Người sử dụng

Người sử dụng là đối tượng quan trọng của hệ thống

a Đối tượng người sử dụng

Đối tượng sử dụng là người du lịch, đây chính là đối tượng sử dụng chiếm số lượng lớn nhất và quan trọng nhất của hệ thống

Người du lịchbao gồm các tất cả mọi người, đối tượng này có thể đi theo các tour

du lịch hoặc không theo tour du lịch hoặc chỉ tham khảo các địa điểm du lịch

Tập trung vào đối tượng người du lịch tự do ( không đi theo các tour du lịch đã định trước) Ưu điểm của đối tượng này:

 Thường không định trước các địa điểm cần tới

 Phí bỏ ra để đi du lịch và tìm kiếm các địa điểm cần tới là ít

 Chiếm số lượng lớn người dân

 Đối tượng này cũng có thể là các người du lịch từ nước ngoài

b Mục đích sử dụng

Mục đích lớn của hệ thống là hướng tới đại đa số người dùng.Hệ thống đi kèm với việc xây dựng kho dữ liệu là phát triển một ứng dụng trên điện thoại di động, cụ thể là Android Và người sử dụng sẽ được:

 Cung cấp các địa điểm du lịch theo các tiêu chí khác nhau

 Tìm kiếm và tra cứu các địa điểm du lịch

 Đánh giá và bình luận về các địa điểm du lịch

 Chia sẻ hình ảnh tương ứng với địa điểm mình đã đi qua

Ngoài ra, người sử dụng cũng góp phần xây dựng kho dữ liệu thông qua việc:

 Chia sẻ hình ảnh

 Đánh giá, bình luận để thông qua đó hệ thống có thể lọc để có thể giới thiệu tới người dùng những nơi thú vị nhất một cách nhanh nhất

Trang 32

2.3.2 Kho dữ liệu

a Xây dựng

Kho dữ liệu được được cung cấp:

 Nguồn dữ liệu của hệ thống, là dữ liệu cung cấp ban đầu của hệ thống, trong quá trình hoạt động

 Nguồn dữ liệu của người dùng, là thông tin về hình ảnh du lịch do người dùng đăng tải

Dữ liệu của kho dữ liệu chính là cơ sở dữ liệu các địa điểm được người dùng cung cấp thông qua các địa điểm mà họ đã đi qua.Bên cạnh đó dữ liệu sẽ được lọc thô thông qua bình luận và đánh giá của người dùng về một địa điểm nào đó

Quá trình xây dựng dữ liệu bao gồm các bước sau:

1 Người dùng đăng tải chia sẻ hình ảnh kèm với thông tin về một địa điểm du lịch nào đó mà họ đã đi qua Thông tin này mang tích chất dữ liệu thô ban đầu

2 Hệ thống sẽ lưu trữ thông tin

3 Tiến hành lọc bằng tay, do người quản lý hệ thống đảm nhiệm

4 Tiến hành lưu trữ vào cơ sở dữ liệu của kho dữ liệu

Do môi trường xây dựng dữ liệu chính là điện thoại di động nên dữ liệu phải được chuẩn hóa theo các tiêu chí sau:

 Mã hóa unicode utf-8 (để hiển thị tiếng Việt)

 Thông tin dữ liệu phải ngắn (phù hợp với trạng thái bộ nhớ của điện thoại)

 Các tham số về vị trí bản đồ, đánh giá, bình luận phải chính xác

c Khai thác

Dữ liệu của kho sẽ được khai thác thông qua ứng dụng chính trên điện thoại di động

do hệ thống cung cấp Qua đó, người du lịch có thể đăng nhập bằng tài khoản

Facebook để chia sẻ các thông tin về các địa điểm du lịch

Việc lấy dữ liệu sẽ thông qua môi trường Internet, như vậy việc khai thác sẽ là bất

cứ ở đâu và bất cứ lúc nào

Ngày đăng: 22/05/2021, 10:18

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w