1. Trang chủ
  2. » Cao đẳng - Đại học

XÂY DỰNG ỨNG DỤNG BẢN ĐỒ ĐỊA ĐIỂM DU LỊCH HỘI AN TRÊN ANDROID - Full 10 điểm

53 0 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

Định dạng
Số trang 53
Dung lượng 2,37 MB

Cấu trúc

  • Chương 1. CHƯƠNG MỞ ĐẦU (7)
    • 1.1. Lý do chọn đề tài (7)
    • 1.2. Mục tiêu và nhiệm vụ (7)
    • 1.3. Đối tƣợng nghiên cứu và phạm vi hệ thống (8)
    • 1.4. Phương pháp nghiên cứu (8)
    • 1.5. Ý nghĩa thực tiễn (8)
  • Chương 2. CƠ SỞ LÝ THUYẾT (9)
    • 2.1. Giới thiệu về Android (9)
      • 2.1.1. Khái niệm về Android (9)
      • 2.1.2. Tổng quan cấu trúc của Android (10)
      • 2.1.3. Sơ lược các phiên bản Android (0)
      • 2.1.4. Các thành phần cơ bản của ứng dụng Android (11)
    • 2.2. Lập trình trên hệ điều hành Android (14)
      • 2.2.1. Ngôn ngữ Java (14)
      • 2.2.2. JSON (16)
      • 2.2.3. Ngôn ngữ XML (17)
      • 2.2.4. Ngôn ngữ PHP (18)
    • 2.3. Các dịch vụ của Google với lập trình MapView (19)
      • 2.3.1. Google Maps (19)
      • 2.3.2. Google Places API (19)
      • 2.3.3. Google Directions API (19)
      • 2.3.4. Google Geocoding API (19)
    • 2.4. Máy ảo Dalvik và Android SDK (19)
      • 2.4.1. Máy ảo Dalvik (19)
      • 2.4.2. Android SDK (20)
      • 2.4.3. Android Emulator (21)
  • Chương 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG (22)
    • 3.1.1. Yêu cầu chức năng (22)
    • 3.1.2. Yêu cầu phi chức năng (22)
    • 3.1.3. Yêu cầu hệ thống (22)
    • 3.2. Phân tích thiết kế (22)
      • 3.2.1. Mô hình hóa yêu cầu (22)
      • 3.2.2. Mô hình hóa khái niệm (25)
      • 3.2.3. Mô hình hóa tương tác (27)
      • 3.2.4. Mô hình hóa hành vi (34)
      • 3.2.5. Thiết kế chi tiết biểu đồ lớp (37)
      • 3.2.6. Thiết kế kiến trúc vật lý (37)
  • Chương 4. XÂY DỰNG ỨNG DỤNG (39)
    • 4.1. Cách thức xây dựng chương trình (39)
      • 4.1.1. Xây dựng chức năng xử lý của WebService (39)
      • 4.1.2. Truyền dữ liệu qua các form (40)
      • 4.1.3. Truy vấn và lấy dữ liệu từ hệ thống Services của Google (42)
      • 4.1.4. Đọc dữ liệu từ file JSON (42)
      • 4.1.5. Hiển thị MapView (43)
      • 4.1.6. Sử dụng tài nguyên GPS và Internet của hệ thống (44)
      • 4.1.7. Đánh dấu vị trí trên MapView (44)
      • 4.1.8. Sử dụng Google Directions API để vẽ đường (45)
    • 4.2. Giao diện ứng dụng (46)
  • TÀI LIỆU THAM KHẢO (52)

Nội dung

Trang i LỜI CẢM ƠN Trong thời đại số hiện nay, thị trường điện thoại di động, đặc biệt là các dòng điện thoại thông minh ngày càng phát triển và phổ biến Trong xu hướng đó điện thoại thông minh dần thay thế cho PC trong giải quyết các yêu cầu công việc, các hoạt động giải trí thông qua các ứng dụng trên nền tảng di dộng Hiện nay hầu hết các dòng điện thoại đều tích hợp ứng dụng bản đồ, nằm giúp chúng ta thuận tiện trong việc tra cứu địa điểm, tìm kiếm đường đi, hay xác định vị trí của một người dùng hoặc là một người dùng nào khác thông qua hệ thống định vị toàn cầu GPS Du lịch hiện nay là một ngành rất phát triển tại Việt Nam, đặc biệt là các địa danh nổi tiếng như Vịnh Hạ Long, Huế, Hội An…vv Ngày càng thu hút lượng khách tới tham quan du lịch Tuy nhiên các một hạn chế là du khách thường gặp khó khăn trong việc tìm các địa điểm tham quan tại một địa điểm nào đó, cũng như một số thông tin về các địa điểm đó Việc cầm theo bản đồ đối với nhiều du khách có thể là bất tiện Vì vậy em muốn phát triển và xây dựng một ứng dụng bản đồ du lịch trong một địa điểm du lịch, nhằm cung cấp thông tin địa điểm một cách cụ thể, chính xác tạo thuận lợi cho khách du lịch thông qua nền tảng di động Android hiện đang rất phổ biến trên hầu hết các dòng điện thoại thông minh hiện n ay Do thời gian hạn chế nên đồ án không hoàn thành hết các chức năng như dự định ban đầu đ đặt ra Trong quá trình thực hiện thì không thể tránh kh i nh ng sai sót, mong thầy cô và các bạn góp ý để em hoàn thiện tốt hơn Trong thời gian làm đồ án tuy gặp không ít khó khăn nhưng được sự giúp đỡ tận tình của thầy cô trong bộ môn lập trình – Khoa Khoa Học Máy Tính đ giúp em hoàn thành đồ án này Em xin chân thành cảm ơn giảng viên Võ Hoàng Phương Dung - người trực tiếp hướng dẫn tận tình và giúp đỡ em hoành thành đồ án Một lần n a em cũng xin gửi lời cảm ơn chân thành tới các thấy cô trong khoa nh ng người đ cung cấp nền tảng kiến thức để em hoàn thành đồ án này Em xin chân thành cảm ơn! Trang ii MỤC LỤC LỜI CẢM ƠN i MỤC LỤC ii DANH MỤC TỪ VIẾT TẮT iv DANH MỤC HÌNH ẢNH v Chƣơng 1 CHƢƠNG MỞ ĐẦU 1 1 1 Lý do chọn đề tài 1 1 2 Mục tiêu và nhiệm vụ 1 1 3 Đối tƣợng nghiên cứu và phạm vi hệ thống 2 1 4 Phƣơng pháp nghiên cứu 2 1 5 Ý nghĩa thực tiễn 2 Chƣơng 2 CƠ SỞ LÝ THUYẾT 3 2 1 Giới thiệu về Android 3 2 1 1 Khái niệm về Android 3 2 1 2 Tổng quan cấu trúc của Android 4 2 1 3 Sơ lược các phiên bản Android 5 2 1 4 Các thành phần cơ bản của ứng dụng Android 5 2 2 L ậ p trình trên h ệ điề u hành Android 8 2 2 1 Ngôn ng ữ Java 8 2 2 2 JSON 10 2 2 3 Ngôn ngữ XML 11 2 2 4 Ngôn ngữ PHP 12 2 3 Các dịch vụ của Google với lập trình MapView 13 2 3 1 Google Maps 13 2 3 2 Google Places API 13 2 3 3 Google Directions API 13 2 3 4 Google Geocoding API 13 2 4 Máy ảo Dalvik và Android SDK 13 2 4 1 Máy ảo Dalvik 13 2 4 2 Android SDK 14 2 4 3 Android Emulator 15 Chƣơng 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 16 Trang iii 3 1 Mô tả hệ thống 16 3 1 1 Yêu cầu chức năng 16 3 1 2 Yêu cầu phi chức năng 16 3 1 3 Yêu cầu hệ thống 16 3 2 Phân tích thiết kế 16 3 2 1 Mô hình hóa yêu cầu 16 3 2 2 Mô hình hóa khái niệm 19 3 2 3 Mô hình hóa tương tác 21 3 2 4 Mô hình hóa hành vi 28 3 2 5 Thiết kế chi tiết biểu đồ lớp 31 3 2 6 Thiết kế kiến trúc vật lý 31 Chƣơng 4 XÂY DỰNG ỨNG DỤNG 33 4 1 Cách thức xây dựng chƣơng trình 33 4 1 1 Xây dựng chức năng xử lý của WebService 33 4 1 2 Truyền dữ liệu qua các form 34 4 1 3 Truy vấn và lấy dữ liệu từ hệ thống Services của Google 36 4 1 4 Đọc dữ liệu từ file JSON 36 4 1 5 Hiển thị MapView 37 4 1 6 Sử dụng tài nguyên GPS và Internet của hệ thống 38 4 1 7 Đánh dấu vị trí trên MapView 38 4 1 8 Sử dụng Google Directions API để vẽ đường 39 4 2 Giao diện ứng dụng 40 TÀI LIỆU THAM KHẢO vii NHẬN XÉT CỦA GIẢNG VIÊN viii Trang iv DANH MỤC TỪ VIẾT TẮT  API: Application Programming Interface (Giao diện lập trình ứng dụng)  CSDL: Cơ sở d liệu  GPS: Global Positioning System ( Hệ thống định vị toàn cầu )  HD: High- Definition (Truyền hình độ nét cao)  HTML: Hyper Text Markup Languag e (Ngôn ng Đánh dấu Siêu văn bản)  JSON: Java Script Object Notation (Định dạng trao đổi d liệu cực nhẹ)  OPP: Object- Oriented Programming (Lập trình hướng đối tượng)  OHA: Open Handset Alliance (Liên minh thiết bị cầm tay mở rộng)  XML: eXtensible Markup L anguage (Ngôn ng Đánh dấu mở rộng)  SDK: Software Development Kit (Bộ công cụ phát triển phần mềm) Trang v DANH MỤC HÌNH ẢNH Số hiệu hình vẽ Tên hình vẽ Trang Hình 2 1: Logo Android 3 Hình 2 2: Kiến trúc Android 4 Hình 2 3: Chu trình sống của 1 Activity 8 Hình 2 4: Android Emulator 15 Hình 3 1: Biểu đồ trường hợp sử dụng 18 Hình 3 2: Biểu đồ use case cập nhật danh sách địa đi ểm 18 Hình 3 2: Hình 3 2: Biểu đồ use case cập nhật các loại địa điểm 18 Hình 3 4: Biểu đồ use case tìm kiếm các địa điểm 19 Hình 3 5: Các lớp biên 19 Hình 3 6: Các lớp điều khiển 20 Hình 3 7: Các lớp thực thể 20 Hình 3 8 Biểu đồ trình tự mở hệ thống 21 Hình 3 9: Biểu đồ trình tự đóng hệ thống 21 Hình 3 10: Biểu đồ trình tự cập nhật địa điểm 22 Hình 3 11: Biểu đồ trình tự cập nhật các loại địa điểm 22 Hình 3 12: Biểu đồ trình tự tìm kiếm qua webservices 23 Hình 3 13: Biểu đồ trình tự tìm kiếm qua google places 23 Hình 3 14: Biểu đồ trình tự xem vị trí địa điểm 24 Hình 3 15: Biểu đồ cộng tác mở hệ thống 24 Hình 3 16: Biểu đồ cộng tác đóng hệ thống 25 Hình 3 17: Biểu đồ cộng tác cập nhật địa điểm 25 Hình 3 18: Biểu đồ cộng tác cập n hật các loại địa điểm 26 Hình 3 19: Biểu đồ cộng tác tìm kiếm qua webservices 26 Hình 3 20: Biểu đồ cộng tác tìm kiếm qua go ogle places 27 Hình 3 21: Biểu đồ cộng tác xem vị trí địa điểm 27 Hình 3 22: Biểu đồ mô trạng thái mở hệ thống 28 Hình 3 23: Biểu đồ trạng thái cập nhật địa điểm 28 Trang vi Hình 3 24: Biểu đồ trạng thái tìm kiếm địa điểm 28 Hình 3 25: Biểu đồ trạng thái xem vị trí địa điểm 29 Hình 3 26: Biểu đồ hoạt mở hệ thống 29 Hình 3 27: Biểu đồ hoạt động cập nhật địa điểm 29 Hình 3 28 : Biểu đồ hoạt động tìm kiếm 30 Hình 3 29: Biểu đồ hoạt động xem vị trí địa điểm 30 Hình 3 30: Chi tiết biểu đồ lớp 31 Hình 3 31: Biểu đồ thành phần 31 Hình 3 32: Biểu đồ triển khai 32 Hình 4 1: Quá trình xử lý của web services 33 Hình 4 2: Mô hìn h trao đổi d liệu gi a hai Activity 34 Hình 4 3 Cấu trúc của một Intent 35 Hình 4 4: Quá trình truy vấn và lấy d liệu từ hệ thống Services của Google 36 Hình 4 5: Mô hình xác định của một mảng giá trị trong JSON 36 Hình 4 6: Quá trình lấy key Map API 37 Hình 4 7: Quy trình đánh dấu vị trí lên MapView 38 Hình 4 8: Một file JSON trả về các thông tin của Google Direction API 39 Hình 4 9: Giao diện chính của chương trình 40 Hình 4 10: Giao diện danh sách các địa điểm và tìm kiếm 41 Hình 4 11: Kết quả tìm kiếm và hiển thi lên bản đồ 41 Hình 4 12: Vị trí của người dùng với các địa điểm du lịch và nhà hàng 42 Hình 4 13: Vị trí của người dùng với các quán café và khách sạn 42 Hình 4 14: Giao diện vẽ đường đi hiển thị địa chỉ sau khi vẽ 43 Hình 4 15: Kích chọn chia sẻ và giao diện chia sẻ facebook 43 Hình 4 16: Giao diện đăng nhập và tiến hành chia sẻ 44 Hình 4 17: Kết quả chia sẻ trên facebook qua ứng dụng 44 Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 1 Chƣơng 1 CHƢƠNG MỞ ĐẦU 1 1 Lý do chọn đề tài Ngày nay các thiết bị số cầm tay như điện điện thoại di động, điện thoại thông minh, máy tính bảng có rất nhiều trên thị trường Với giá thành ngày càng rẻ và các tiện ích mà nó đem lại, các thiết bị đó giờ dần trở nên phổ biến Có rất nhiều nền tảng được sử dụng để điều hành các thiết bị như iOS , Windows Phone, Android …vv T rong đó Android là một nền tảng điều hành di động được chính nhà phát triển là Google cung cấp mở nguồn m , cùng với đó các thiết bị di động mạnh mẽ với khả năng xử lý các vụ ngày càng nhanh hơn với các bộ vi xử lý khủng là điều kiện để các lập trình viên có thể tiếp cận và tận dụng tối đa nh ng gì mà Android đem lại trên nền tảng các thiết bị với phần cứng ngày càng mạnh mẽ hiện nay Android nhanh chóng trở thành hệ điều hành thu hút nhiều lập trình viên nhất và chiếm một thị phần lớn trong thị trường di động thông minh hiện nay Việc sử dụng các thiết bị số ngoài khả năng hỗ trợ con người trong công việc, giải trí mà còn giúp cho con người tiết kiệm thời gian hơn vào nhiều công việc thực tiễn như giải trí, học tập, du lịch…vv Du lịch hiện nay là một ngành rất phát triển tại Việt Nam, đặc biệt là các địa danh nổi tiếng như Vịnh Hạ Long, Huế, Hội An…vv Ngày càng thu hút lượng khách tới tham quan du lịch Tuy nhiên các một hạn chế là du khách thường gặp khó khăn trong việc tìm các địa điểm tham quan tại một địa điểm nào đó, cũng như một số thông tin về các địa điểm đó Việc cầm theo bản đồ đối với nhiều du khách có thể là bất tiện Vì vậy em muốn phát triển và xây dựng một ứng dụng bản đồ du lịch trong một địa điểm du lịch, nhằm cung cấp thông tin địa điểm một cách cụ thể, chính xác tạo thuận lợi cho khách du lịch thông qua nền tảng di động Android hiện đang rất phổ biến trên hầu hết các dòng điện thoại thông minh hiện nay 1 2 Mục tiêu và nhiệm vụ  Mục tiêu: Tìm hiểu về các công nghệ lập trình cần thiết trên nền tả ng Android để hoàn thành được ứng dụng có thể tìm kiếm hiện thị vị trí các thông tin cần thiết về một địa điểm du lịch o Hiểu về nguyên lý hoạt động của Android, các thành phần của hệ thống cũng như của một ứng dụng thực thi trên nền Android Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 2 o Tìm hiểu và áp dụng được các công nghệ lập trình trên nền Android như ngôn ng JAVA, tương tác với các tài nguyên hệ thống (GPS,Internet, TouchScreen), sử dụng các dịch vụ của Google như Google Map, Google Places API, Google Directions API, Google Geocoding API o Tìm hiểu về xây dưng một dịch vụ web trên nền tảng php sử dụng hệ cơ sở d liệu MySQL  Nhiệm vụ: Đọc các tài liệu liên quan về bộ thư viện lập trình trên nền Android Tìm hiểu các dịch vụ liên quan đến ứng dụng 1 3 Đối tƣợng nghiên cứu và phạm vi hệ thống  Đối tượng : o Ngôn ng JAVA, PHP, JSON, XML o Hệ cơ sở d liệu MySQL o Công cụ Android SDK & Eclipse o Hệ điều hành và tài nguyên hệ thống Android o Các dịch vụ của google như Google Map, Google Places API, Google Directions API, Google Geocoding API  Phạm vi: Đề tài dừng lại ở khuôn khổ hiện thị lên bản đồ tìm kiếm các địa điểm và thông tin trong phạm vi nh của thành phố Hội An Sử dụng mapview để tìm kiếm và dẫn đường cho người dùng Ứng dụng được viết trên nền tảng Android 2 2 1 4 Phƣơng pháp nghiên cứu Đọc tham khảo các liệu trên mạng, các sách viết về Android và tham khảo qua giáo viên hướng dẫn 1 5 Ý nghĩa thực tiễn Chương trình có thể áp dụng vào trong cuộc sống, sử dụng để tìm kiếm hiển thị các thống tin về địa điểm du lịch dành cho các du khách Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 3 Chƣơng 2 CƠ SỞ LÝ THUYẾT 2 1 Giới thiệu về Android 2 1 1 Khái niệm về Android Hình 2 1: Logo Android Android là hệ điều hành trên điện thoại di động ( và hiện nay là cả trên một số đầu phát HD, HD player) phát triển bởi Google và dựa trên nền tảng Linux Trước đây, Android được phát triển bởi công ty liên hợp Android ( sau đó được Google mua lại vào năm 2005) Theo NPD, thiết bị di động sử dụng hệ điều hành Android bán được tại Mỹ trong quý II năm 2010 xếp vị trí đầu tiên với 33%, thứ 2 là BB os với 28% và iOS ở vị trí thứ 3 với 22% Android có một cộng đồng nh ng nhà phát triển rất lớn viết các ứng dụng cho hệ điều hành của mình Hiện tại có khoảng 70,000 ứng dụng cho Android và vào khoảng 100,000 ứng dụng đ được đệ trình, điều này khiến Android trở thành hệ điều hành di động có môi trường phát triển lớn thứ 2 Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ng Java Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay m nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đích tạo nên một chuẩn mở cho điện thoại di động cho tương lai Google công bố hầu hết các m ngồn của Android theo bản cấp phép Apache Hệ điều hành Android bao gồm 12 triệu dòng m , 3 triệu dòng XML, 2 8 triệu dòng m C, 2 1 triệu m Java và 1 75 triệu dòng m C++ Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 4 2 1 2 Tổng quan cấu trúc của Android Android bao gồm ba thành phần 1 M ộ t h ệ đi ề u hành m ở , mi ễ n phí cho các thi ế t b ị di d ộ ng 2 M ộ t n ề n t ả ng mã ngu ồ n m ở cho phát tri ể n các ứ ng d ụ ng 3 Thi ế t b ị ch ạ y h ệ đi ề u hành Android và các ứ ng d ụ ng Android Một cách chi tiết Android bao gồm các thành phần quan trọng sau: 1 M ộ t thi ế t k ế ph ầ n c ứ ng cho thi ế t b ị di đ ộ ng h ỗ tr ợ b ộ ph ầ n m ề m 2 M ộ t nhân viên đi ề u hành Linux cung c ấ p giao di ệ n m ứ c th ấ p v ớ i ph ầ n c ứ ng, qu ả n lý b ộ nh ớ và ki ể m soát ti ế n trình T ấ t c ả đ ề u t ố i ưu h óa cho thi ệ t b ị di đ ộ ng 3 Thư vi ệ n mã ngu ồ n m ở cho phát tri ể n ứ ng d ụ ng bao g ồ m SQLite, Webkit, OpenGL và qu ả n lí đa phương ti ệ n 4 M ộ t h ệ th ố ng th ự c thi và lưu tr cho ứ ng d ụ ng Android bao g ồ m máy ả o Dalvik và các thư vi ệ n c ở b ả n cung c ấ p ch ứ c năng đ ặ c thù ch o Android H ệ th ố ng th ụ c thi đư ợ c các thi ế t k ế nh g ọ n và hi ệ u qu ả khi s ử d ụ ng trên các thi ế t b ị di đ ộ ng 5 M ộ t ki ế n trúc ứ ng d ụ ng cung c ấ p các d ị ch v ụ h ệ th ố ng cho t ầ ng ứ ng d ụ ng bao g ồ m qu ả n lý c ử a s ổ , qu ả n lý v ị trí, cung c ấ p n ộ i dung và các c ả m bi ế n 6 M ộ t s ố ki ế n trúc giao di ệ n ngư ờ i dùng đ ể lưu tr và ch ạ y các ứ ng d ụ ng 7 M ộ t s ố ứ ng d ụ ng đư ợ c cài s ẵ n coi như m ộ t ph ầ n c ủ a b ộ ứ ng d ụ ng 8 M ộ t b ộ phát tri ể n ứ ng d ụ ng bao g ồ m các công c ụ và tài li ệ u Hình 2 2: Kiến trúc Android Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 5 2 1 3 Sơ lƣợc các phiên bản Android Androi d là một nền tảng mới và phát triển nhanh Các phiên bản thông thường được phát hành sau khoảng sáu tháng Sau đây là danh sách các phiên bản chính và sự thay đổi lớn trong mỗi phiên bản Android  OHA giới thiệu Android (5 -11-2007)  Phát hành SDK (12-11-2007)  Apple pie Android 1 0 (23/09/2008) : Phát hành phiên bản Android 1 0 trên điện thoại Android đầu tiên – HTC Dream (G1)  Banana Bread- Android 1 1 (9-2- 2009): Phát hành phiên bản cập nhật 1 1 riêng cho T-Mobie G1  Cupcake - Android 1 5 (30/4/2009)  Donut - Android 1 6 (15/9/2009)  Éclair - Android 2 0 (26/10/2009)  Froyo - Android 2 2 (20/5/2010)  Gingerbear - Android 2 3 (6/12/2010)  Honeycomb - Android 3 0 (22/2/2011)  Ice Cream Sandwich 4 0 (16/12/2011)  Jelly Bean – Android 4 1 (9/7/2012)  Jelly Bean - Andro id 4 2 (13/11/2012) 2 1 4 Các thành phần cơ bản của ứng dụng Android Ứng dụng Android bao gồm nhiều thành phần liên kết với nhau được giới hạn trong kiến trúc ứng dụng Kiến trúc ứng dụng mô tả chi tiết mỗi thành phần và sự tương tác gi a các thành phần này cũng như siêu d liệu về yêu cầu phần cứng Các thành phần sau đây tạo nên một ứng dụng Android:  Activity: là l ớ p th ể hi ệ n ứ ng d ụ ng M ỗ i màn hình trong ứ ng d ụ ng là m ộ t m ở r ộ ng c ủ a l ớ p Activity Các Activity s ử d ụ ng các View t ạ o thành giao di ệ n đ ồ h ọ a tương tác ngư ờ i dùng đ ể th ể h i ệ n thông tin và ph ả n h ồ i hành đ ộ ng c ủ a ngư ờ i dùng  Service: là thành ph ầ n ch ạ y ẩ n, c ậ p nh ậ t ngu ồ n d li ệ u và th ể hi ể n các Activity, kích ho ạ t các Notification Các Service thư ờ ng th ự c hi ệ n x ử lí thông thư ờ ng như ti ế p t ụ c Activity sau khi các Activity này không ho ạ t đ ộ ng ho ặ c hi ể n th ị Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 6  Content Provider: là thành ph ầ n lưu tr d li ệ u chia s ẻ Content Provider qu ả n lí và chia s ẻ c ở s ở d li ệ u c ủ a ứ ng d ụ ng Chúng đư ợ c coi như là phương ti ệ n chia s ẻ d li ệ u gi a các ứ ng d ụ ng  Intent: là c ấ u trúc truy ề n thông đ i ệ p gi a các ứ ng d ụ ng Chúng ta có th ể s ử d ụ ng Intent đ ể truy ề n m ộ t thông tin t ớ i toàn h ệ th ố ng hay t ớ i Activity hay Service đ ị nh trư ớ c đ ể th ự c thi m ộ t ho ạ t đ ộ ng H ệ th ố ng sau đó s ẽ xác đ ị nh đ ố i tư ợ ng nào s ẽ th ự c hi ệ n các ho ạ t đ ộ ng phù h ợ p  Broadcast Recei ver: là nơi nhậ n các Intent Chúng ta có th ể t ự t ạ o m ộ t Broadcast Rece iver để ứ ng d ụ ng có th ể nh ận đượ c các Intent phù h ợ p v ớ i b ộ l ọc đặt trướ c Broadcast Receiver t ự độ ng b ắt đầ u khi ứ ng d ụ ng ph ả n h ồ i v ớ i Intent nh ận đượ c và bi ế n ứ ng d ụ ng tr ở thành hướ ng s ự ki ệ n m ộ t cách hoàn h ả o  Widget: thành ph ầ n tr ự c quan c ủ a ứ ng d ụ ng có th ể them vào màn hình chính Là m ộ t d ạ ng Broadcast Rece iver, Widget cho phép ngườ i dùng t ạ o ra các ứ ng d ụng động, tương tác đượ c nhúng ngay trên màn hình chính  Notification: là thành ph ần thông báo cho ngườ i dùng H ộ p tho ạ i thông báo cho người dùng mà không gián đoạ n các Activity hi ệ n th ời Đây là kĩ thuậ t thông báo cho ngườ i dùng n ằ m trong m ộ t Service hay m ộ t Broadcast Receiver Ví d ụ khi nh ận đượ c m ộ t tin nh ắ n hay cu ộ c g ọi đế n có th ể thông báo cho ngườ i dùng b ằng đèn nháy hay bằng âm thanh… Một ứng dụng không nhất thiết phải có hết các thành phần trên nhưng để có một giao diện người dùng thì ít nhất ứng dụng đó phải có Activity M đ được biên dịch của các thành phần của ứng dụng, tài nguyên liên quan như thư viện, hình ảnh và các d liệu cần thiết khác được đóng gói trong một file apk duy nhất chính là dạng file thực thi của ứng dụng Android Như đ trình bày ở trên, Activity là thành phần quan trọng nhất và đóng vai trò chính trong việc xây dựng ứng dụng Android Hệ điều hành Android quản lí ứng dụng dưới dạng stack: khi một Activity mới được khởi tạo, nó được xếp lên đầu stack và trở thành running activity, các Activity trước đó sẽ bị tạm ngừng và chỉ hoạt động trở lại khi Activity mới được giải phóng  Activity có 4 tr ạ ng thái: o Active (running): Activity đang hi ể n th ị trên màn hình o Pause: Activity v ẫ n hi ể n th ị nhưng không th ể tương tác Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 7 o Stop: Activity b ị thay th ế hoàn toàn b ở i Activity m ớ i s ẽ ti ế n đ ế n tr ạ ng thái stop o Killed: Khi h ệ th ố ng thi ế u b ộ nh ớ , nó s ẽ gi ả i phóng các ti ế n trình theo nguyên t ắc ưu tiên Các Activity ở tr ạ ng thái stop ho ặ c paused cũng có th ể b ị g ải phóng và khi nó đượ c hi ể n th ị l ạ i thì các Activity này ph ả i kh ởi độ ng l ạ i hoàn toàn và ph ụ c h ồ i tr ạng thái trước đó Tùy từng sự kiện mà các phương thức được gọi để đảm bảo trạng thái các Activity được hoạt động đúng Chi tiết từng phương thức và sự kiện thây đổi trạng thái tương ứng  onCreate(): Phương th ứ c này kh ở i t ạ o Activity Nó có th ể b qua tr ạ ng thái cũ đ ể tr ở l ạ i ho ạ t đ ộ ng Phương th ứ c ti ế p theo luôn là onStart()  onRestart(): Đư ợ c g ọ i sau khi m ộ t Activity mu ố n b ắ t đ ầ u tr ở l ạ i  onStart(): Đư ợ c g ọ i khi ứ ng d ụ ng chuy ể n sang visible nhưng chưa tương tác đư ợ c v ớ i ngư ờ i dùng  onResume(): Activity có tương tác v ớ i ngư ờ i s ử d ụ ng và có th ể nh ậ n thông tin đ ầ u vào Ki ể u ti ế n trình c ủ a ứ ng d ụ ng đư ợ c chuy ể n sang d ạ ng hi ể n th ị  onPause(): N ế u ứ ng d ụ ng không còn tương tác hay thi ế t b ị không ho ạ t đ ộ ng, phương th ứ c này đư ợ c g ọ i va ki ể u ti ế n trình ứ ng d ụ ng s ẽ đư ợ c chuy ể n sang d ạ n g visible Sau khi th ự c hi ệ n phương th ứ c này, h ệ th ố ng cho phép gi ả i phóng ứ ng d ụ ng b ấ t kì lúc nào Các thao tác s ử d ụ ng CPU và d li ệ u đ ề u đư ợ c lưu l ạ i Activity s ẽ có th ể đư ợ c ho ạ t đ ộ ng tr ở l ạ i ho ặ c d ừ ng l ạ i  onStop(): Khi Activity không còn tương tác n a thì ki ể u thi ế n trình đư ợ c chuy ể n sang ch ạ y n ề n và ứ ng d ụ ng s ẽ có th ể b ị gi ả i phóng ho ặ c kh ở i đ ộ ng l ạ i  onDestroy(): Phương thứ c cu ối cùng này đượ c h ệ th ố ng g ọi trướ c khi gi ả i phóng ứ ng d ụ ng hay ứ ng d ụ ng lo ạ i b Activity Ti ế n trình c ủ a ứ ng d ụ ng có th ể chuy ể n sang ki ể u r ỗ ng n ế u h ệ th ố ng mu ố n gi l ạ i ứ ng d ụng để ti ế p t ụ c l ạ i ứ ng d ụ ng cho l ầ n sau Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 8 Hình 2 3: Chu trình sống của 1 Activity 2 2 L ậ p trình trên h ệ điề u hành Android 2 2 1 Ngôn ng ữ Java 2 2 1 1 T ổ ng quan v ề ngôn ng ữ Java Java là một ngôn ng lập trình dạng hướng đối tượng (OOP) Khác với phần lớn ngôn ng lập trình thông thường, thay vì biên dịch m nguồn thành m máy hoặc thông dịch mà nguồn khi chạy, Java được thiết kế để biên dịch m nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi chạy Bằng cách này, Java thường chạy chậm hơn nh ng ngôn ng lập trình thông dịch khác như C++, Python, Perl, PHP, C# Vào năm 1991, nhóm các kỹ sư của Sun Microsystems có ý định thiết kế một ngôn ng lập trình để điều khiển các thiết bị điện tử như tivi, máy giặt, lò nướng… Mặc dù C và C++ có khả năng làm việc này nhưng trình biên dịch lại phụ thuộc vào từng loại CPU Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rất đắt, vì vậy để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém Do đó nhu cầ thực tế đòi h i một ngôn ng chạy nhanh, gọn, hiệu quả và độc lập thiết bị tức là có thể chạy trên Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 9 nhiều loại CPU khác nhau, dưới các môi trường khác nhau “Oak”đ ra đời và vào năm 1995 được đổi tên thành Java 2 2 1 2 M ộ t s ố tính ch ấ t ngôn ng ữ Java Cú pháp Java được vay mượ n nhi ề u t ừ C và C++ nhưng có cú pháp hướng đố i tượng đơn giản hơn và ít tính năng xử lý c ấ p th ấp hơn Do đó việ c vi ế t m ột chương trình b ằ ng Java d ễ hơn, đơn giản hơn, đỡ t ố n công s ử a l ỗi hơn Dùng bộ th ử vi ệ n chu ẩ n KFC, nhi ều đoạ n code Java ch ỉ m ấ t vài dòng trong khi C ph ả i m ấ t c ả trang gi ấ y Đơn giả n: Nh ng ngườ i thi ế t k ế mong mu ố n phát tri ể n m ộ t ngôn ng d ễ h ọ c và quen thu ộ c v ới đa số ngườ i l ậ p trình Do v ậ y Java lo ạ i b các đặc trưng phứ c t ạ p c ủa C và C++ như:  Lo ạ i b thao tác con tr , thao tác đ ị nh nghĩa ch ồ ng toán t ử  Không cho phép đa k ế th ừ a mà s ử d ụ ng các giao di ệ n,  Không s ử d ụ ng l ệ nh “goto” cũng như file header ( h)/  Lo ạ i b c ấ u trúc “struct” và “union” Hƣớng đối tƣợ ng : Java là ngôn ng l ậ p trình thu ần hướng đối tượ ng, m ọi chương trình vi ết trên Java đề u ph ải đượ c xây d ựng trên các đối tượ ng N ế u trong C/C++ ta có th ể t ạo ra các hàm (chương trình con không gắ n v ới đối tượ ng nào) thì trong Java ta ch ỉ có th ể t ạo ra các phương thức (chương trình con gắ n li ề n v ớ i m ộ t l ớ p c ụ th ể ) Tron g Java không cho phép các đối tượng có tính năng đa kế th ừa mà đượ c th ấ y th ế b ằ ng các giao di ệ n (interface) M ạ nh m ẽ :  Java là ngôn ng yêu c ầ u ch ặ t ch ẽ v ề ki ể u d li ệ u  Ki ể u d li ệ u ph ả i khai báo tư ờ ng minh  Java không s ử d ụ ng con tr và các phép toán con tr  Java ki ể m tra t ấ t c ả các truy nh ậ p đ ế n m ả ng, chu ỗ i khi th ự c thi đ ể đ ả m b ả o r ằ ng các truy nh ậ p đó không ra ngoài gi ớ i h ạ n kích thư ớ c  Cơ ch ế b ẫ y l ỗ i c ủ a Java giúp đ ở n gi ả n hóa quá trình x ử lý l ỗ i và ph ụ c h ồ i sau l ỗ i B ả o m ậ t: Java cung c ấ p m ột môi trườ ng qu ả n lý th ực thi chương trình vớ i nhi ề u m ức để ki ể m soát tính an toàn:  Ở m ứ c th ứ nh ấ t, d li ệ u và các phương th ứ c đư ợ c đóng gói bên trong l ớ p Chúng ta ch ỉ đư ợ c truy xu ấ t thông qua các giao di ệ n mà l ớ p cung c ấ p Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 10  Ở m ứ c th ứ hai, trình biên d ị ch ki ể m soát đ ể đ ả m b ả o mã là an toàn và tuân theo các nguyên t ắ c c ủ a Java  M ứ c th ứ ba đư ợ c đ ả m b ả o b ở i trình thông d ị ch, chúng ki ể m soát xem bytecode có đ ả m b ả o các quy t ắ c an toàn trư ớ c khi đư ợ c th ự c thi không  M ứ c th ứ tư ki ể m soát vi ệ c n ạ p các l ớ p vào b ộ nh ớ đ ể giám sát vi ệ c vi ph ạ m gi ớ i h ạ n truy xu ấ t trư ớ c khi n ạ p vào h ệ th ố ng Phân tán: Java đượ c thi ế t k ế để h ỗ tr ợ các ứ ng d ụ ng ch ạ y trên m ạ ng b ằ ng các l ớ p m ạ ng (java net) Hơn n a, Java h ỗ tr ợ nhi ề u n ề n ch ạy khác nhau nên chúng đượ c s ử d ụ ng r ộng r i như là công cụ phát tri ể n trên Internet- nơi sử d ụ ng nhi ề u n ề n khác nhau Đa luồ n: Chương trình Java cung cấ p gi ải pháp đa luồng để th ự c thi các công vi ệ c đồ ng th ời chúng cũng cung cấ p gi ải pháp đồ ng b ộ gi a các lu ồng Đặ c tính h ỗ tr ợ đa luồ ng này cho phép xây d ự ng các ứ ng d ụ ng trên m ạ ng ch ạ y hi ệ u qu ả Linh độ ng: Java đượ c thi ế t k ế như mộ t ngôn ng động để đáp ứ ng cho nh ng môi trườ ng m ở Các chương trình Java chứ a r ấ t nhi ề u thông tin th ự c thi nh ằ m ki ể m soát và truy nh ập đối tượ ng lúc ch ạy Điề u này cho phép kh ả năng liên kết m độ ng 2 2 2 JSON JSON (JavaScript Object Noation) là một chuẩn dể định dạng d liệu Rất dễ dàng đọc, viết và phân tích Nó dựa trên cơ sở tập hợp của ngôn ng JavaScript, tiêu chuẩn ECMA - 262 phiên bản 3 tháng 12 năm 1999 Khi sử dụng JSON có thể truy vấn trực tiếp giá trị theo tên (khóa) được định nghĩ trong JSON Đứng về mặt tố độ của ứng dụng di dộng đây là một ưu điểm rất lớn JSON đƣợc xây dựng trên 2 cấu trúc:  Là tập hợp của các cặp tên và giá trị name – value  Là một tập hợp các giá trị đ được sắp xếp Các đặc điểm của JSON:  JSON là văn bản trơn không (không có định dạng(màu sắc, cỡ ch …))  JSON là “tự mô tả”(người dùng có thể hiểu được)  JSON là phân cấp (có cấu trúc cây)  JSON có thể được phân tích cú pháp (parse) bởi JavaScript  D liệu JSON có thể được truyền đi bằng AJAX  Không có thẻ kết thúc Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 11  Ngắn hơn  Nhanh hơn để đọc và ghi  Có thể được phân tích cú pháp bằng hàm dựng sẵn trong JavaScript là eval()  Sử dụng mảng (Array)  Không dùng các từ reserve 2 2 3 Ngôn ngữ XML XML là một ngôn ng đánh dấu mà bạn có thể sử dụng để tạo ra thẻ riêng của mình Nó được tạo neen bởi Liên minh mạng toàn cầu nhằm khắc phục nh ng hạn chế của HTML – ngôn ng đánh dấu siêu văn bản, là cở sở của mọi trang Web Giống như HTML, XML cũng được dựa trên GSML – Standard Generalized Markup Language Mặc dù GSML được sử dụng trong ngành công nghiệp xuất bản trong nhiều thập kỉ, nhưng sự phức tạp của nó đều khiến nh ng ai từng sử dụng nó mà không có các nào khác phải thấy mệt m i Các đặc điểm của XML:  D ễ dàng vi ế t đư ợ c các chương trình x ử l ý d li ệ u  Tài li ệ u XML d ễ đ ọ c và có tính h ợ p lý cao  XML d ễ dàng đư ợ c s ử d ụ ng trên Internet  XML h ỗ tr ợ nhi ề u ứ ng d ụ ng  Không đ ặ t n ặ ng tính hình th ứ c trong n ộ i dung th ẻ Các loại văn bản XML:  Văn b ả n không h ợ p l ệ : không theo nguyên t ắ c cú pháp đư ợ c quy đ ị nh b ở i đ ặ c tính k ỹ thu ậ t XML  Văn b ả n h ợ p l ệ : tuân theo nguyên t ắ c cú pháp XML và quy đ ị nh trong DTD ho ặ c lư ợ c đ ồ  Văn b ả n chu ẩ n: tu ân theo quy t ắ c cú pháp XML nhưng không có DTD ho ặ c lư ợ c đ ồ Một tài liệu XML đƣợc chia thành hai phần chính:  Ph ầ n khai báo: k hai báo cho tài li ệ u XML o Khai báo phiên b ả n, b ả ng mã ký t ự s ử d ụ ng trong tài li ệ u o Đ ị nh nghĩa ki ể u cho tài li ệ u  Ph ầ n thân: ch ứ a n ộ i dung d li ệ u Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 12 o G ồ m m ộ t hay nhi ề u ph ầ n t ử o M ỗ i ph ầ n t ử đư ợ c ch ứ a trong m ộ t c ặ p th ẻ o Ph ầ n t ử đầ u tiên là ph ầ n t ử g ố c 2 2 4 Ngôn ngữ PH P Tóm tắt sơ lƣợc về PHP:  PHP được phát triển từ một sản phẩm có tên là PHP/FI PHP/FI do Ramus Lerdorf tạo ra năm 1995 Ramus đ quyết định công bố m nguồn của PHP/FI cho mọi người xem, sử dụng cũng như sửa các lỗi trong nó đồng thời cải tiến m nguồn  V ào năm 1997, PHP/FI 2 0, lần viết lại thứ hai của phiên bản C PHP/FI 2 0 được chính thức công bố vào tháng 11 năm 1997  PHP 3 0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi với các phiên bản PHP mà chúng ta được biết ngày nay Nó đ được An di Gutmans và Zeev Suraski tạo ra năm 1997 PHP 3 0 đ chính thức được công bố vào tháng 6 năm 1998, sau thời gian 9 tháng được cộng đông kiểm nghiệm  PHP 4 0 đ chính thức được công bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3 0 ra đời Ngoài tố độ xử lý được cải thiện rất nhiều, PHP 4 0 đem đến các tính năng chủ yếu khác gồm có sự hỗ trợ nhiều mấy chủ Web hơn, hỗ trợ phiên làm việ HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử dụng nhập vào đ bảo mật hơn và cung cấp một vài cấu trúc ngôn ng mới  PHP 5 0 bản chính thức đ ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi khá dài các phiên bản kiểm tra thử bao gồm Beta 4, RC 1, RC 2, RC 3 Mặc dù coi đây là phiên bản sản xuất đầu tiên nhưng PHP 5 0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP  Hiện nay bản tiếp theo của PHP đang được phát triển, PHP 6 được kì vong sẽ lâp đầy khiếm khuyết của PHP ở phiển bản hiện tại Lý do chọn ngôn ngữ PHP:  Viết m PHP trở nên khá trực quan và dễ dàng trong việc xây dựng giao diện ứng dụng HTTP  Rất thích hợp với web có thể dễ dàng nhúng trang HTML Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 13  Tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nh gọn  Dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ng khác 2 3 Các dịch vụ của Google với lập trình MapView Để làm việc tốt với hệ thống bản đồ của Google, thì cần sử dụng một số các dịch vụ cần thiết để lập trình Điểm chung của các dịch vụ này là đều chạy trên môi trường web và đều trả kết quả qua định dạng JSON hoặc là XML 2 3 1 Google Maps Google Maps là một dịch vụ ứng dụng và công nghệ bởi Google và hỗ trợ nhiều dịch vụ dựa vào bản đồ nhứ Google Ride Finder và một số có thể dùng để nhúng vào các trang web của bên thứ ba thông qua Google Maps API Nó cho phép thấy bản đồ đường sá, đường đi cho xe đạp, cho người đi bộ 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 2 3 2 Google Places API Google Places API là một dịch vụ của Google INC mà khi sử dụng chúng ta sẽ nhận được các thông tin về các địa điểm đ được đánh dấu trên bản đồ Google Map s bởi các tổ chức, công ty và cá nhân ở khắp nơi trên thế giới Để sử dụng được dịch vụ này chúng ta phải đăng ký API key dịch vụ Google Places với Google 2 3 3 Google Directions API Google Directions API là một dịch vụ của Google INC mà khi sử dụng chúng ta s ẽ đưa vào tọa độ 2 địa điểm đầu cuối rồi sau đó sẽ được thông tin về khoảng cách gi a 2 điểm, tọa độ GPS, thời gian đi lại dự kiến với các phương tiện như xe máy, ô tô hay là đi bộ 2 3 4 Google Geocoding API Đây là dịch vụ n a của Google cho phép chúng ta xác định các địa điểm đi qua trên đường đi gi a 2 vị trí xác định 2 4 Máy ảo Dalvik và Android SDK 2 4 1 Máy ảo Dalvik Các ứng dụng Android và các thành phần cơ bản hầu hết được viết bằng Java Thay vì sử dụng máy ảo Java, Android sử dụng máy ảo riêng Máy ảo của Androi d được thiết kế và tối ưu cho các hệ thống nh , không tương thích với máy ảo Java của Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 14 JavaMe Nh ng hệ thống nh này có dung lượng RAM nh , CPU chậm và hầu hết không có chỗ để trao đổi d liệu bù đắp cho dung lượng bộ nhớ nh Đây là điểm khác biệt gi Android với các hệ điều hành di động khác như Symbian, iOS, webOS Ngôn ng lập trình sử dụng chính là C, C++ và objective C, trong khi với webOS sử dụng chủ yếu ngôn ng web như Javascript hay HTML Trình biên dịch byte code là máy ảo Dalvik Thay vì sử dụng dạng byte code thông thường, Dalvik có định dạng riêng để phù hợp với yêu cầu đối với thiết bị Android M của Android nh hơn so với m của Java và file dex được tạo ra cũng nh 2 4 2 Android SDK Android SDK là bộ công cụ phát triển phần mềm cho phép lập trình viên tạo ra các ứng dụng cho các thiết bị sử dụng nền tảng Android Android SDK bao gồm nền tảng Android, các công cụ, chương trình mẫu và các tài liệu hỗ trợ Nó cũng là thành phần bổ sung trong bộ phát triển Java và có thể tích hợp vào Eclipse Android chứa các gói hỗ trợ các chức năng tính toán cơ bản như quản lý xâu, quản lý vào ra, tính toán từ các gói cơ bản trong Java:  Java lang – l ớ p ngôn ng cơ b ả n c ủ a Java  Java io – qu ả n lý vào ra  Java net – qu ả n lí k ế t n ố i m ạ ng  Java text – ti ệ n ích x ử lý văn b ả n  Java math – h ỗ tr ợ tính toán  Java sercurity – qu ả n lý các thành ph ầ n b ả o m ậ t  Java xml – l ớ p v ề các XML  Org apache – các l ớ p liên quan HTML Ngoài ra Android còn có các lớp riêng như:  android app – truy c ậ p mô hình ứ ng d ụ ng c ủ a Android  android blu etooth – ch ứ c năng Bluetooth c ủ a Android  android content – qu ả n lý d li ệ u trong Android  a ndroid net – ch ứ a các l ớ p Uri dùng đ ể truy c ậ p d li ệ u  a ndroid grap hics – các thành ph ầ n đ ồ h ọ a  android location – các d ị ch v ụ liên quan đ ế n v ị trí  android onpen gl – các l ớ p OpenGL Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 15  android view – ch ứ a các thành ph ầ n giao di ệ n  android webkit – ch ứ a các ch ứ c năng c ủ a trình duy ệ t web  android widget – các thành ph ầ n giao di ệ n khác Ở đây chúng ta xem xét lập trình Android với Eclipse vì Eclipse cung cấp phong phú c ác thành phần hỗ trợ biên soạn java và môi trường debug mà còn có thể quản lý và điều khiển các yếu tố khác của ứng dụng Android trực tiếp từ Eclipse IDE 2 4 3 Android Emulator Android SDK cung cấp một bộ giả lập thiết bị di động ảo Máy ảo này cho phép chúng t a phát triển và kiểm tra các ứng dụng mà không cần thiết bị Android thật Máy ảo Android có đầy đủ các thành phần từ phần cứng đến phần mềm giống như một thiết bị thật ngoại trừ nó không thể thực hiện được một cuộc gọi Máy ảo Android cho phép sử dụng chuột để định hướng hay bàn phím đẻ tạo các sự kiện Người dùng có thể cài đặt kiểm thử phần mềm trên máy ảo với từng phiên bản khác nhau của Android như nghe nhạc, xem video hay vào mạng Máy bảo cũng có khả năng debug Truy cập vào đầu ra của nhận, giả lập các ngắt khi nhận cuộc gọi hay tin nhắn thậm chí là các ảnh hưởng độ trễ của mạng và ngắt trên kênh truyền d liệu Hình 2 4: Android Emulator Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 16 Chƣơng 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 3 1 Mô tả hệ thống Hệ thống được xây dựng t heo mô hình trao đổi d liệu client – ser ver Trong đó ứng dụng phía thiết bị android là máy client tạo các truy vấn lên 2 máy chủ là máy chủ web của ứng dụng và máy chủ các dịch vụ cần thiết của google để lấy d liệu phù hợp 3 1 1 Yêu cầu chức năng Các chức năng của hệ thống bao gồm  M ở h ệ th ố ng  Đóng h ệ th ố ng  Tìm ki ế m đ ị a đi ể m  C ậ p nh ậ t DS đ ị a đi ể m  C ậ p nh ậ t DS các lo ạ i hình đ ị a đi ể m  Hi ể n đ ị a đi ể m (xem v ị trí đ ị a đi ể m) 3 1 2 Yêu cầu phi chức năng  V ậ n hành t ố t  Chương trình đơn gi ả n, thân thi ệ n v ớ i ngư ờ i s ử d ụ ng  Sai s ố nh so v ớ i d li ệ u l ớ n 3 1 3 Yêu cầu hệ thống  S ử d ụ ng h ệ đi ề u hành Android phiên b ả n b ằ ng ho ặ c m ớ i hơn 2 2 3 2 Phân tích thiết kế 3 2 1 Mô hình hóa yêu cầu  Xác đ ị nh các tác nhân  Ngư ờ i s ử d ụ ng: Là ngư ờ i tr ự c ti ế p s ử d ụ ng ứ ng d ụ ng đ ể bi ế t đư ợ c v ị trí các đ ị a đi ể m danh th ắ ng, hay các khu v ự c ph ụ c v ụ cho du l ị ch … vv  Qu ả n tr ị viên: Là ngườ i tr ự c ti ế p s ử d ụ ng ph ầ n m ềm để c ậ p nh ậ t danh sách các địa điể m  Các trư ờ ng h ợ p s ử d ụ ng  M ở h ệ th ố ng  Đóng h ệ th ố ng  C ậ p nh ậ t DS đ ị a đi ể m  C ậ p nh ậ t DS lo ạ i đ ị a đi ể m Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 17  Tìm đ ị a đi ể m  Xem v ị trí các đ ị a đi ể m  Đ ặ c t ả các trư ờ ng h ợ p s ử d ụ ng  M ở h ệ th ố ng  Tác nhân: ngư ờ i s ử d ụ ng, Qu ả n tr ị viên  Mô t ả : Ngư ờ i s ử d ụ ng s ẽ m ở ứ ng d ụ ng đ ể xem các v ị trí các đ ị a đi ể m mu ố n t ớ i , qu ả n tr ị viên m ở đ ể xem xét đ ồ ng th ờ i c ậ p nh ậ t các ch ứ c năng c ầ n thi ế t khi c ầ n  Đóng h ệ th ố ng  Tác nhân: Ngư ờ i s ử d ụ ng, qu ả n tr ị viên  Mô t ả : K ế t thúc phiên làm vi ệ c ngư ờ i s ử d ụ ng và qu ả n tr ị viên đóng h ệ th ố ng  C ậ p nh ậ t DS đ ị a đi ể m  Tác nhân: qu ả n tr ị viên  Mô t ả : C ậ p nh ậ t danh sách các đ ị a đi ể m m ớ i  C ậ p nh ậ t DS lo ạ i đ ị a đi ể m  Tác nhân: qu ả n tr ị viên  Mô t ả : C ậ p nh ậ t danh sách phân lo ạ i cách đ ị a đi ể m theo các tiêu chí khác nhau  Tì m ki ế m đ ị a đi ể m  Tác nhân: ngư ờ i s ử d ụ ng  Mô t ả : Tìm ki ế m các đ ị a đi ể m trên ứ ng d ụ ng thông qua d li ệ u đư ợ c l ấ y t ừ webservice ho ặ c google places  Xem v ị trí các đ ị a đi ể m  Tác nhân: ngư ờ i s ử d ụ ng  Mô t ả : Ngư ờ i s ử d ụ ng vào gia o di ệ n b ả n đ ồ đ ể xem v ị trí đ ị a đi ể m c ầ n t ớ i Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 18 Bi ểu đồ trƣờ ng h ợ p s ử d ụ ng (USE CASE) Tim dia diem Xem dia diem Nguoi su dung Dong he thong Mo he thong Cap nhat DM dia diem Quan tri vien Cap nhat DM loai dia diem Hình 3 1: Biểu đồ trường hợp sử dụng  Bi ểu đồ use case c ậ p nh ật danh sách địa điể m < < extend> > Cap nhat DM dia diem them dia diem cap nhat dia diem xoa dia diem < < extend> > < < extend> > Hình 3 2: Biểu đồ use case cập nhật danh sách địa điểm  Bi ểu đồ use case c ậ p nh ậ t các lo ạ i đ ị a đi ể m < < extend> > Cap nhat DM loai dia diem them loai dia diem cap nhat loai dia diem xoa loai dia diem < < extend> > < < extend> > Hình 3 3: Biểu đồ use case cập nhật các loại địa điểm Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 19  Bi ểu đồ tìm ki ế m các đ ị a đi ể m tim qua web services Tim dia diem tim qua google places < < extend> > < < extend> > Hình 3 4: Biểu đồ use case tìm kiếm các địa điểm 3 2 2 Mô hình hóa khái niệm  Biểu đồ lớp  Các l ớ p biên FrmMo he thong FrmDong he thong FrmTim qua webservices FrmTim qua google places Frm cap nhat dia diem Frm cap nhat loai dia diem Frm xem dia diem qua ban do Hình 3 5 : Các lớp biên Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 20  Các l ớ p đi ề u khi ể n Ctl Mo he thong Ctl Dong he thong Ctl cap nhat dia diem Ctl cap nhat loai dia diem Ctl Tim qua google places Ctl Tim qua webservices Ctl xem dia diem qua ban do Hình 3 6 : Các lớp điều khiển  Các l ớ p th ự c th ể Hình 3 7 : Các lớp thực thể Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 21 3 2 3 Mô hình hóa tƣơng tác  Bi ể u đ ồ trình t ự  Bi ể u đ ồ trình t ự m ở h ệ th ố ng : NSD : NSD : Quan tri vien : Quan tri vien : Frm Mo he thong : Frm Mo he thong : Ctl Mo he thong : Ctl Mo he thong 1 : Khoi dong he thong () 2: Khoi dong he thong() 3: Thuc hien() Hình 3 8 Biểu đồ trình tự mở hệ thống  Bi ể u đ ồ trình t ự đóng h ệ th ố ng : NSD : NSD : Quan tri vien : Quan tri vien : Frm Dong he thong : Frm Dong he thong : Ctl Dong he thong : Ctl Dong he thong 1 : Dong he thong() 2: Dong he thong() 3: Thuc hien () Hình 3 9 : Biểu đồ trình tự đóng hệ thống Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 22  Bi ể u đ ồ trình t ự c ậ p nh ậ p đ ị a đi ể m : Quan tri vien : Quan tri vien : Frm cap nhat dia diem : Frm cap nhat dia diem : Ctl cap nhat dia diem : Ctl cap nhat dia diem : Diadiem : Diadiem 1 : Them dia diem() 2: Thuc hien() 3: Kiem tra() 4:Luu() 5: Thong bao () Hình 3 10 : Biểu đồ trình tự cập nhật địa điểm  Bi ể u đ ồ trình t ự c ậ p nh ậ t các lo ạ i đ ị a đi ể m : Quan tri vien : Quan tri vien : Frm cap nhat loai dia diem : Frm cap nhat loai dia diem : Ctl cap nhat loai dia diem : Ctl cap nhat loai dia diem : Loaidiadiem : Loaidiadiem 1 : cap nhat loai() 2: thuc hien() 3: kiem tra() 4: luu() 5: thong bao() Hình 3 11 : Biểu đồ trình tự cập nhật các loại địa điểm Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 23  Bi ể u đ ồ trình tìm ki ế m qua webservice s : Nguoi su dung : Nguoi su dung : FrmTim qua webservices : FrmTim qua webservices : Ctl Tim qua webservices : Ctl Tim qua webservices : Diadiem : Diadiem 1 : yeu cau tim kiem 2: thuc hien() 3: tao truy van SQL() 4:Cung cap thong tin() 5: Thong bao ket qua() Hình 3 12: Biểu đồ trình tự tìm kiếm qua webservice s  Bi ể u đ ồ trình t ự tìm ki ế m qua google place s : Nguoi su dung : Nguoi su dung : FrmTim qua google places : FrmTim qua google places : Ctl Tim qua google places : Ctl Tim qua google places CSDL G oogle Places CSDL G oogle Places 1 : Y eu cau tim kiem() 2: Thuc hien() 3: Tao truy van() 4: Cung cap thong tin() 5: Thong bao ket qua() Hình 3 13 : Biểu đồ trình tự tìm kiếm qua google place s Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 24  Biểu đồ trình tự xem vị trí địa điểm : Nguoi su dung : Nguoi su dung : Frm xem dia diem qua ban do : Frm xem dia diem qua ban do : Ctl xem dia diem qua ban do : Ctl xem dia diem qua ban do : Diadiem : Diadiem 1 : Y eu cau() 2: Xu ly() 4: Cung cap thong tin() 5: Hien thi() Hình 3 14 : Biểu đồ trình tự xem vị trí địa điểm  Bi ể u đ ồ c ộ ng tác  Bi ể u đ ồ c ộ ng tác m ở h ệ th ố ng : Frm Mo he thong : NSD : Quan tri vien : Ctl Mo he thong 1 : 1 : Khoi dong he thong () 2: 2: Khoi dong he thong() 3: 3: Thuc hien() Hình 3 15 : Biểu đồ cộng tác mở hệ thống Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 25  Bi ể u đ ồ c ộ ng tác đóng h ệ th ố ng : Ctl Dong he thong : Frm Dong he thong : NSD : Quan tri vien 3: 3: Thuc hien () 1 : 1 : Dong he thong() 2: 2: Dong he thong() Hình 3 16 : Biểu đồ cộng tác đóng hệ thống  Bi ể u đ ồ c ộ ng tác c ậ p nh ậ t đ ị a đi ể m : Quan tri vien : Frm cap nhat dia diem : Ctl cap nhat dia diem : Diadiem 3: 3: Kiem tra() 1 : 1 : Them dia diem() 2: 2: Thuc hien() 5: 5: Thong bao () 4: 4:Luu() Hình 3 17 : Biểu đồ cộng tác cập nhật địa điểm Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 26  Bi ể u đ ồ c ộ ng tác c ậ p nh ậ t các lo ạ i đ ị a đi ể m : Loaidiadiem : Quan tri vien : Frm cap nhat loai dia diem : Ctl cap nhat loai dia diem 3: 3: kiem tra() 1 : 1 : cap nhat loai() 2: 2: thuc hien() 5: 5: thong bao() 4: 4: luu() Hình 3 18 : Biểu đồ cộng tác cập nhật các loại địa điểm  Bi ể u đ ồ c ộ ng tác tìm ki ế m qua webservice s : Nguoi su dung : FrmTim qua webservices : Ctl Tim qua webservices : Diadiem 3: 3: tao truy van SQL() 1 : 1 : yeu cau tim kiem 2: 2: thuc hien() 5: 5: Thong bao ket qua() 4: 4:Cung cap thong tin() Hình 3 19 : Biểu đồ cộng tác tìm kiếm qua webservice s Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 27  Bi ể u đ ồ c ộ ng tác tìm ki ế m qua google place s : Nguoi su dung : FrmTim qua google places : Ctl Tim qua google places CSDL G oogle Places 3: 3: Tao truy van() 1 : 1 : Y eu cau tim kiem() 2: 2: Thuc hien() 5: 5: Thong bao ket qua() 4: 4: Cung cap thong tin() Hình 3 20 : Biểu đồ cộng tác tìm kiếm qua googl e places  Biểu đồ cộng tác xem vị trí địa điểm : Nguoi su dung : Frm xem dia diem qua ban do : Ctl xem dia diem qua ban do : Diadiem 1 : 1 : Y eu cau() 2: 2: Xu ly() 3: 4: Cung cap thong tin() 4: 5: Hien thi() Hình 3 21 : Biểu đồ cộng tác xem vị trí địa điểm Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 28 3 2 4 Mô hình hóa hành vi  Bi ể u đ ồ tr ạ ng thái  M ở h ệ th ố ng Thuc hien Nguoi su dung mo he thong su dung Hình 3 22 : Biểu đồ mô trạng thái mở hệ thống  C ậ p nh ật địa điể m Cho nhap thong tin Nhap thong tin Cap nhat vao CSDL Cap nhat danh sach dia diem Nhap tiep Nhap Ket thuc nhap Xu ly cap nhap Ket thuc cap nhat Hình 3 23 : Biểu đồ trạng thái cập nhật địa điểm  Tìm ki ế m đ ị a đi ể m Cho thong tin tim kiem Nhap cac thong tin tim kiem Cho lay ket qua Hien thi ket qua tra ve Tim kiem Nhap tiep Truy van CSDL Xu ly ket qua Ket thuc Hình 3 24: Biểu đồ trạng thái tìm kiếm địa điểm Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 29  Xem vị trí đia điểm Cho yeu cau xem Xu ly yeu cau Lay thong tin tu CSDL Hien thi ket qua tra ve Nguoi dung xem Ket thuc xu ly Ket thuc Hình 3 25 : Biểu đồ trạng thái xem vị trí địa điểm  Bi ểu đồ ho ạt độ ng  M ở h ệ th ố ng Mo he thong Hình 3 26 : Biểu đồ hoạt mở hệ thống  C ậ p nh ật địa điể m Cap nhat cac dia diem Them Hieu chinh Xoa Luu thong tin K iem tra thong tin Hop le Khong hop le Hình 3 27 : Biểu đồ hoạt động cập nhật địa điểm Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 30  Tìm ki ế m Nhap thong tin tim kiem Xy ly Hien thi ket qua Hình 3 28 : Biểu đồ hoạt động tìm kiếm  Xem vị trí địa điểm Xem dia diem Ban do Hien thi dia diem Hình 3 29 : Biểu đồ hoạt động xem vị trí địa điểm Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 31 3 2 5 Thiết kế chi tiết biểu đồ lớp Hình 3 30 : Chi tiết biểu đồ lớp 3 2 6 Thiết kế kiến trúc vật lý  Biểu đồ thành phần Phía client là ứng dụng được triển khai trên các thiết bị chạy hệ điều hành Android Gửi các truy vấn lấy d liệu tới web server chạy các service s của ứng dụng Phía server là ứng dụng được triển khai với ngôn ng PHP và cơ sở d liệu MySQL Gồm các xử lý gửi d liệu được yêu cầu của máy client Android Library O bject Services O bject Client PHP Control O bject Service O bject Chuc nang danh muc O bject Chuc nang tim kiem dia diem O bject chuc nang xem dia diem Main Hình 3 31 : Biểu đồ thành phần  Biểu đồ triển khai  Google Web Services: Máy chủ dịch vụ của Google  Application Web Services: Máy chủ dịch vụ của ứng dụng Triển khai dịch vụ trên máy chủ Linux, sử dụng ngôn ng PHP và CSDL MySQL Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 32  Client Ung Dung: Thiết bị sử dụng ứng dụng tìm kiếm, triển khai trên hệ điều hành Android G oogle W eb Services Application W eb Services Client Ung Dung TCP/IP TCP/IP Hình 3 32 : Biểu đồ triển khai Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 33 Chƣơng 4 XÂY DỰNG ỨNG DỤNG 4 1 Cách thức xây dựng chƣơng trình 4 1 1 Xây dựng chức năng xử lý của WebService s Chính năng chính của web service s là trả về các kết quả truy vấn về danh sách các địa điểm để hiển thị lên bản đồ và kết quả tìm kiếm của ứng dụng Có cách thức hoạt động là từ ứng dụng gửi các truy vấn có điều kiện , web services xử lý rồi trả về kết quả tương ứng Hình 4 1: Quá trình xử lý của web service s Việc gửi các giá trị truy vấn lên web services của ứng dụng thông qua các giá trị $_REQUEST từ ứng dụng Android Để làm đƣợc điều đó từ phía ứng dụng phải sử dụng một đối tƣợng có kiểu BasicName ValuePair để tạo ra các biến REQUEST thông qua phƣơng thức add (“tên biến_request”,”giá trị”) nameValuePair add (new BasicNameValuePair(“danhthang”,”dt”)) Sau khi khai báo các biến $_REQUEST thì tiến hành xác định URL truy vấn và gán các biến NameValuePair cho URL đó rồi tiến hành thực thi DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost setEntity(newUrlEncodedFormEntity(nameValuePair)); Tiếp theo ở phía web services, php có nhiệm vụ nhận các yêu cầu đó sau đó truy vấn vào cơ sở d liệu, lấy ra d liệu phù hợp với truy vấn rồi tiến hành xuất kết quả D liệu đầu ra được php xử lý thành dạng ngôn ng JSON đ đề cập Bắt đầu Nhận các giá trị gửi đi ( NameValuePair) HttpClient PHP Control Xuất kết quả Kết thúc Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 34 Ví dụ: 4 1 2 Truyền dữ liệu qua các form Trong Android việc truyền d liệu qua các form để sử dụng, ta dùng hai đối tượng là Intent và Bundle Android trao đổi d liệu gi a các activity thông qua cơ chế Intent Hình 4 2 : Mô hình trao đổi d liệu gi a hai Activity Activity A Activity B Intent Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 35 Để trao đổi d liệu thì Intent thường mang theo một danh sách các đối số được đặt tên chứa d liệu (Bundle) Hình 4 3: Cấu trúc của một Intent Cấu trúc của một Bundle là một cơ chế đơn giản để truyền d liệu với mỗi biến Bundle sử dụng một dạng cặp (“name”, value) Với các phương thức để truyền và lấy như “put XY”,get”XY” Intent i = new Intent(DanhSach this , MapHeThong class ); Bundle bun = new Bundle(); bun putString("_x", xx); bun putString("_y", yy); i putExtras(bun); startActivity(i); Khởi tạo một Intent là i với activity gửi là DanhSach, activity nhận là MapHeThong Tiếp đến khởi tạo một Bundle là “ bun ” lấy các giá trị từ một cặp dạng (“name”, value) Sau đó truyền d liệu đến form nhận là MapHeThong thông qua lệnh chuyển activity Bundle extras= getIntent() getExtras(); String tdx_list=extras getString("_x"); String tdy_list=extras getString("_y"); Tại activity nhận ta tiến hành lấy gi liệu đ được gửi getExtras(); Intent Bundle 1 Bundle 2 Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 36 4 1 3 Truy vấn và lấy dữ liệu từ hệ thống Services của Google Khi truy vấn vào hệ thống Google Places API kết quả trả lại cho ta là một file XML hoặc là JSON dựa vào một giá trị đưa ra trong câu truy vấn Hình 4 4: Quá trình truy vấn và lấy d liệu từ hệ thống Services của Google Cấu trúc URL truy vấn trong đó các thuộc tính vẽ đường đi thông qua tọa độ điểm đầu và cuối Trong chương trình sẽ tạo một HttpClient để thực thi URL truy vấn và các đối tượng Response, Entity để lấy d liệu 4 1 4 Đọc dữ liệu từ file JSON Như đ đề cập trước khi truy vấn vào hệ thống Google Service và WebService của wusng dụng kết quả mà ta nhận được là một file XML hoặc JSON dựa vào giá trị output trong câu truy vấn Sau khi đ có d liệu dưới dạng file JSOn thì tiến hành tách các d liệu cần thiết Cấu trúc file JSON xác định các mảng giá trị dựa vào một cặp thẻ đóng mở “[”,“]” Vì thế để lấy được d liệu thì khải báo một mảng JSONArray được định nghĩa sẵn và được gán d liệu thông qua phương thức getJSONArra y() Hình 4 5 : Mô hình xác định của một mảng giá trị trong JSON HttpURL truy vấn HttpClient Google Web Services Google Place Database JSON, XML Output Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android Võ Minh Trí – CCLT04C- Khoa Học Máy Tính Trang 37 JSONArray array = json getJSONArray (“khóa_trƣớc _cặp_thẻ”); Cấu trúc các thẻ d liệu trong mảng là cấu trúc cây vì thế để truy cập đến các thẻ con trong mảng, phải sử dụng phương thức getJSONObject () JSONObject c = array getJSONObject (“tên_ thẻ”); Sau đó lấy d liệu thông qua các phương thức getString (“tên_thẻ”) String name = c getString(“tendd”); 4 1 5 Hiển thị MapView Google cung cấp cho lập trình mộ MapActivity, để hiển thi một mapVi ew ta chỉ cần lấy key MapAPI rồi đưa vào ứng dụng Hiện nay google chính thức không mở dịch vụ cho MapAPI n a hiện tại hỗ trợ cho các API V2, V3 Đối với API V2,V3 hiện chỉ chạy trên nền tảng thật Android Ở đây chúng ta xét về API Hình 4 6: Quá trình lấy key Map API Sau khi có được API key thêm đoạn m vào file xml layout cần hiển thị Xây dựng

CHƯƠNG MỞ ĐẦU

Lý do chọn đề tài

Ngày nay các thiết bị số cầm tay như điện điện thoại di động, điện thoại thông minh, máy tính bảng có rất nhiều trên thị trường Với giá thành ngày càng rẻ và các tiện ích mà nó đem lại, các thiết bị đó giờ dần trở nên phổ biến Có rất nhiều nền tảng được sử dụng để điều hành các thiết bị như iOS , Windows Phone, Android …vv Trong đó Android là một nền tảng điều hành di động được chính nhà phát triển là Google cung cấp mở nguồn m , cùng với đó các thiết bị di động mạnh mẽ với khả năng xử lý các vụ ngày càng nhanh hơn với các bộ vi xử lý khủng là điều kiện để các lập trình viên có thể tiếp cận và tận dụng tối đa nh ng gì mà Android đem lại trên nền tảng các thiết bị với phần cứng ngày càng mạnh mẽ hiện nay Android nhanh chóng trở thành hệ điều hành thu hút nhiều lập trình viên nhất và chiếm một thị phần lớn trong thị trường di động thông minh hiện nay

Việc sử dụng các thiết bị số ngoài khả năng hỗ trợ con người trong công việc, giải trí mà còn giúp cho con người tiết kiệm thời gian hơn vào nhiều công việc thực tiễn như giải trí, học tập, du lịch…vv

Du lịch hiện nay là một ngành rất phát triển tại Việt Nam, đặc biệt là các địa danh nổi tiếng như Vịnh Hạ Long, Huế, Hội An…vv Ngày càng thu hút lượng khách tới tham quan du lịch Tuy nhiên các một hạn chế là du khách thường gặp khó khăn trong việc tìm các địa điểm tham quan tại một địa điểm nào đó, cũng như một số thông tin về các địa điểm đó Việc cầm theo bản đồ đối với nhiều du khách có thể là bất tiện

Vì vậy em muốn phát triển và xây dựng một ứng dụng bản đồ du lịch trong một địa điểm du lịch, nhằm cung cấp thông tin địa điểm một cách cụ thể, chính xác tạo thuận lợi cho khách du lịch thông qua nền tảng di động Android hiện đang rất phổ biến trên hầu hết các dòng điện thoại thông minh hiện nay.

Mục tiêu và nhiệm vụ

 Mục tiêu: Tìm hiểu về các công nghệ lập trình cần thiết trên nền tảng Android để hoàn thành được ứng dụng có thể tìm kiếm hiện thị vị trí các thông tin cần thiết về một địa điểm du lịch o Hiểu về nguyên lý hoạt động của Android, các thành phần của hệ thống cũng như của một ứng dụng thực thi trên nền Android o Tìm hiểu và áp dụng được các công nghệ lập trình trên nền Android như ngôn ng JAVA, tương tác với các tài nguyên hệ thống (GPS,Internet, TouchScreen), sử dụng các dịch vụ của Google như Google Map, Google Places API, Google Directions API, Google Geocoding API o Tìm hiểu về xây dưng một dịch vụ web trên nền tảng php sử dụng hệ cơ sở d liệu MySQL

 Nhiệm vụ: Đọc các tài liệu liên quan về bộ thư viện lập trình trên nền Android Tìm hiểu các dịch vụ liên quan đến ứng dụng.

Đối tƣợng nghiên cứu và phạm vi hệ thống

 Đối tượng : o Ngôn ng JAVA, PHP, JSON, XML o Hệ cơ sở d liệu MySQL o Công cụ Android SDK & Eclipse o Hệ điều hành và tài nguyên hệ thống Android o Các dịch vụ của google như Google Map, Google Places API, Google

Directions API, Google Geocoding API

 Phạm vi: Đề tài dừng lại ở khuôn khổ hiện thị lên bản đồ tìm kiếm các địa điểm và thông tin trong phạm vi nh của thành phố Hội An

Sử dụng mapview để tìm kiếm và dẫn đường cho người dùng Ứng dụng được viết trên nền tảng Android 2.2

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

Đọc tham khảo các liệu trên mạng, các sách viết về Android và tham khảo qua giáo viên hướng dẫn

Ý nghĩa thực tiễn

Chương trình có thể áp dụng vào trong cuộc sống, sử dụng để tìm kiếm hiển thị các thống tin về địa điểm du lịch dành cho các du khách.

CƠ SỞ LÝ THUYẾT

Giới thiệu về Android

Hình 2.1: Logo Android Android là hệ điều hành trên điện thoại di động ( và hiện nay là cả trên một số đầu phát HD, HD player) phát triển bởi Google và dựa trên nền tảng Linux Trước đây, Android được phát triển bởi công ty liên hợp Android ( sau đó được Google mua lại vào năm 2005) Theo NPD, thiết bị di động sử dụng hệ điều hành Android bán được tại Mỹ trong quý II năm 2010 xếp vị trí đầu tiên với 33%, thứ 2 là BB os với 28% và iOS ở vị trí thứ 3 với 22% Android có một cộng đồng nh ng nhà phát triển rất lớn viết các ứng dụng cho hệ điều hành của mình Hiện tại có khoảng 70,000 ứng dụng cho Android và vào khoảng 100,000 ứng dụng đ được đệ trình, điều này khiến Android trở thành hệ điều hành di động có môi trường phát triển lớn thứ 2 Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ng Java Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay m nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đích tạo nên một chuẩn mở cho điện thoại di động cho tương lai Google công bố hầu hết các m ngồn của Android theo bản cấp phép Apache Hệ điều hành Android bao gồm 12 triệu dòng m , 3 triệu dòng XML, 2.8 triệu dòng m C, 2.1 triệu m Java và 1.75 triệu dòng m C++

2.1.2 Tổng quan cấu trúc của Android

Android bao gồm ba thành phần

1 Một hệ điều hành mở, miễn phí cho các thiết bị di dộng

2 Một nền tảng mã nguồn mở cho phát triển các ứng dụng

3 Thiết bị chạy hệ điều hành Android và các ứng dụng Android

Một cách chi tiết Android bao gồm các thành phần quan trọng sau:

1 Một thiết kế phần cứng cho thiết bị di động hỗ trợ bộ phần mềm

2 Một nhân viên điều hành Linux cung cấp giao diện mức thấp với phần cứng, quản lý bộ nhớ và kiểm soát tiến trình Tất cả đều tối ưu hóa cho thiệt bị di động

3 Thư viện mã nguồn mở cho phát triển ứng dụng bao gồm SQLite, Webkit, OpenGL và quản lí đa phương tiện

4 Một hệ thống thực thi và lưu tr cho ứng dụng Android bao gồm máy ảo Dalvik và các thư viện cở bản cung cấp chức năng đặc thù cho Android Hệ thống thục thi được các thiết kế nh gọn và hiệu quả khi sử dụng trên các thiết bị di động

5 Một kiến trúc ứng dụng cung cấp các dịch vụ hệ thống cho tầng ứng dụng bao gồm quản lý cửa sổ, quản lý vị trí, cung cấp nội dung và các cảm biến

6 Một số kiến trúc giao diện người dùng để lưu tr và chạy các ứng dụng

7 Một số ứng dụng được cài sẵn coi như một phần của bộ ứng dụng

8 Một bộ phát triển ứng dụng bao gồm các công cụ và tài liệu

2.1.3 Sơ lƣợc các phiên bản Android

Android là một nền tảng mới và phát triển nhanh Các phiên bản thông thường được phát hành sau khoảng sáu tháng Sau đây là danh sách các phiên bản chính và sự thay đổi lớn trong mỗi phiên bản Android

 Apple pie Android 1.0 (23/09/2008) : Phát hành phiên bản Android 1.0 trên điện thoại Android đầu tiên – HTC Dream (G1)

 Banana Bread- Android 1.1 (9-2-2009): Phát hành phiên bản cập nhật 1.1 riêng cho T-Mobie G1

2.1.4 Các thành phần cơ bản của ứng dụng Android Ứng dụng Android bao gồm nhiều thành phần liên kết với nhau được giới hạn trong kiến trúc ứng dụng Kiến trúc ứng dụng mô tả chi tiết mỗi thành phần và sự tương tác gi a các thành phần này cũng như siêu d liệu về yêu cầu phần cứng

Các thành phần sau đây tạo nên một ứng dụng Android:

 Activity: là lớp thể hiện ứng dụng Mỗi màn hình trong ứng dụng là một mở rộng của lớp Activity Các Activity sử dụng các View tạo thành giao diện đồ họa tương tác người dùng để thể hiện thông tin và phản hồi hành động của người dùng

 Service: là thành phần chạy ẩn, cập nhật nguồn d liệu và thể hiển các Activity, kích hoạt các Notification Các Service thường thực hiện xử lí thông thường như tiếp tục Activity sau khi các Activity này không hoạt động hoặc hiển thị

 Content Provider: là thành phần lưu tr d liệu chia sẻ Content Provider quản lí và chia sẻ cở sở d liệu của ứng dụng Chúng được coi như là phương tiện chia sẻ d liệu gi a các ứng dụng

 Intent: là cấu trúc truyền thông điệp gi a các ứng dụng Chúng ta có thể sử dụng Intent để truyền một thông tin tới toàn hệ thống hay tới Activity hay Service định trước để thực thi một hoạt động Hệ thống sau đó sẽ xác định đối tượng nào sẽ thực hiện các hoạt động phù hợp

 Broadcast Receiver: là nơi nhận các Intent Chúng ta có thể tự tạo một Broadcast Receiver để ứng dụng có thể nhận được các Intent phù hợp với bộ lọc đặt trước Broadcast Receiver tự động bắt đầu khi ứng dụng phản hồi với

Intent nhận được và biến ứng dụng trở thành hướng sự kiện một cách hoàn hảo

 Widget: thành phần trực quan của ứng dụng có thể them vào màn hình chính

Là một dạng Broadcast Receiver, Widget cho phép người dùng tạo ra các ứng dụng động, tương tác được nhúng ngay trên màn hình chính

 Notification: là thành phần thông báo cho người dùng Hộp thoại thông báo cho người dùng mà không gián đoạn các Activity hiện thời Đây là kĩ thuật thông báo cho người dùng nằm trong một Service hay một Broadcast Receiver Ví dụ khi nhận được một tin nhắn hay cuộc gọi đến có thể thông báo cho người dùng bằng đèn nháy hay bằng âm thanh…

Một ứng dụng không nhất thiết phải có hết các thành phần trên nhưng để có một giao diện người dùng thì ít nhất ứng dụng đó phải có Activity M đ được biên dịch của các thành phần của ứng dụng, tài nguyên liên quan như thư viện, hình ảnh và các d liệu cần thiết khác được đóng gói trong một file apk duy nhất chính là dạng file thực thi của ứng dụng Android

Như đ trình bày ở trên, Activity là thành phần quan trọng nhất và đóng vai trò chính trong việc xây dựng ứng dụng Android Hệ điều hành Android quản lí ứng dụng dưới dạng stack: khi một Activity mới được khởi tạo, nó được xếp lên đầu stack và trở thành running activity, các Activity trước đó sẽ bị tạm ngừng và chỉ hoạt động trở lại khi Activity mới được giải phóng

 Activity có 4 trạng thái: o Active (running): Activity đang hiển thị trên màn hình o Pause: Activity vẫn hiển thị nhưng không thể tương tác o Stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop o Killed: Khi hệ thống thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo nguyên tắc ưu tiên Các Activity ở trạng thái stop hoặc paused cũng có thể bị gải phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn toàn và phục hồi trạng thái trước đó

Lập trình trên hệ điều hành Android

2.2.1.1 Tổng quan về ngôn ngữ Java

Java là một ngôn ng lập trình dạng hướng đối tượng (OOP) Khác với phần lớn ngôn ng lập trình thông thường, thay vì biên dịch m nguồn thành m máy hoặc thông dịch mà nguồn khi chạy, Java được thiết kế để biên dịch m nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi chạy Bằng cách này, Java thường chạy chậm hơn nh ng ngôn ng lập trình thông dịch khác như C++, Python, Perl, PHP, C#

Vào năm 1991, nhóm các kỹ sư của Sun Microsystems có ý định thiết kế một ngôn ng lập trình để điều khiển các thiết bị điện tử như tivi, máy giặt, lò nướng… Mặc dù C và C++ có khả năng làm việc này nhưng trình biên dịch lại phụ thuộc vào từng loại CPU

Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rất đắt, vì vậy để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém Do đó nhu cầ thực tế đòi h i một ngôn ng chạy nhanh, gọn, hiệu quả và độc lập thiết bị tức là có thể chạy trên nhiều loại CPU khác nhau, dưới các môi trường khác nhau “Oak”đ ra đời và vào năm 1995 được đổi tên thành Java

2.2.1.2 Một số tính chất ngôn ngữ Java

Cú pháp Java được vay mượn nhiều từ C và C++ nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn Do đó việc viết một chương trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn Dùng bộ thử viện chuẩn KFC, nhiều đoạn code Java chỉ mất vài dòng trong khi C phải mất cả trang giấy Đơn giản: Nh ng người thiết kế mong muốn phát triển một ngôn ng dễ học và quen thuộc với đa số người lập trình Do vậy Java loại b các đặc trưng phức tạp của C và C++ như:

 Loại b thao tác con tr , thao tác định nghĩa chồng toán tử

 Không cho phép đa kế thừa mà sử dụng các giao diện,

 Không sử dụng lệnh “goto” cũng như file header (.h)/

 Loại b cấu trúc “struct” và “union”

Hướng đối tượng: Java là ngôn ng lập trình thuần hướng đối tượng, mọi chương trình viết trên Java đều phải được xây dựng trên các đối tượng Nếu trong C/C++ ta có thể tạo ra các hàm (chương trình con không gắn với đối tượng nào) thì trong Java ta chỉ có thể tạo ra các phương thức (chương trình con gắn liền với một lớp cụ thể) Trong Java không cho phép các đối tượng có tính năng đa kế thừa mà được thấy thế bằng các giao diện (interface)

 Java là ngôn ng yêu cầu chặt chẽ về kiểu d liệu

 Kiểu d liệu phải khai báo tường minh

 Java không sử dụng con tr và các phép toán con tr

 Java kiểm tra tất cả các truy nhập đến mảng, chuỗi khi thực thi để đảm bảo rằng các truy nhập đó không ra ngoài giới hạn kích thước

 Cơ chế bẫy lỗi của Java giúp đởn giản hóa quá trình xử lý lỗi và phục hồi sau lỗi

Bảo mật: Java cung cấp một môi trường quản lý thực thi chương trình với nhiều mức để kiểm soát tính an toàn:

 Ở mức thứ nhất, d liệu và các phương thức được đóng gói bên trong lớp Chúng ta chỉ được truy xuất thông qua các giao diện mà lớp cung cấp

 Ở mức thứ hai, trình biên dịch kiểm soát để đảm bảo mã là an toàn và tuân theo các nguyên tắc của Java

 Mức thứ ba được đảm bảo bởi trình thông dịch, chúng kiểm soát xem bytecode có đảm bảo các quy tắc an toàn trước khi được thực thi không

 Mức thứ tư kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống

Phân tán: Java được thiết kế để hỗ trợ các ứng dụng chạy trên mạng bằng các lớp mạng (java.net) Hơn n a, Java hỗ trợ nhiều nền chạy khác nhau nên chúng được sử dụng rộng r i như là công cụ phát triển trên Internet- nơi sử dụng nhiều nền khác nhau Đa luồn: Chương trình Java cung cấp giải pháp đa luồng để thực thi các công việc đồng thời chúng cũng cung cấp giải pháp đồng bộ gi a các luồng Đặc tính hỗ trợ đa luồng này cho phép xây dựng các ứng dụng trên mạng chạy hiệu quả

Linh động: Java được thiết kế như một ngôn ng động để đáp ứng cho nh ng môi trường mở Các chương trình Java chứa rất nhiều thông tin thực thi nhằm kiểm soát và truy nhập đối tượng lúc chạy Điều này cho phép khả năng liên kết m động

JSON (JavaScript Object Noation) là một chuẩn dể định dạng d liệu Rất dễ dàng đọc, viết và phân tích Nó dựa trên cơ sở tập hợp của ngôn ng JavaScript, tiêu chuẩn ECMA- 262 phiên bản 3 tháng 12 năm 1999 Khi sử dụng JSON có thể truy vấn trực tiếp giá trị theo tên (khóa) được định nghĩ trong JSON Đứng về mặt tố độ của ứng dụng di dộng đây là một ưu điểm rất lớn

JSON đƣợc xây dựng trên 2 cấu trúc:

 Là tập hợp của các cặp tên và giá trị name – value

 Là một tập hợp các giá trị đ được sắp xếp

Các đặc điểm của JSON:

 JSON là văn bản trơn không (không có định dạng(màu sắc, cỡ ch …))

 JSON là “tự mô tả”(người dùng có thể hiểu được)

 JSON là phân cấp (có cấu trúc cây)

 JSON có thể được phân tích cú pháp (parse) bởi JavaScript

 D liệu JSON có thể được truyền đi bằng AJAX

 Không có thẻ kết thúc

 Nhanh hơn để đọc và ghi

 Có thể được phân tích cú pháp bằng hàm dựng sẵn trong JavaScript là eval()

 Không dùng các từ reserve

XML là một ngôn ng đánh dấu mà bạn có thể sử dụng để tạo ra thẻ riêng của mình Nó được tạo neen bởi Liên minh mạng toàn cầu nhằm khắc phục nh ng hạn chế của HTML – ngôn ng đánh dấu siêu văn bản, là cở sở của mọi trang Web Giống như HTML, XML cũng được dựa trên GSML – Standard Generalized Markup Language Mặc dù GSML được sử dụng trong ngành công nghiệp xuất bản trong nhiều thập kỉ, nhưng sự phức tạp của nó đều khiến nh ng ai từng sử dụng nó mà không có các nào khác phải thấy mệt m i

Các đặc điểm của XML:

 Dễ dàng viết được các chương trình xử lý d liệu

 Tài liệu XML dễ đọc và có tính hợp lý cao

 XML dễ dàng được sử dụng trên Internet

 XML hỗ trợ nhiều ứng dụng

 Không đặt nặng tính hình thức trong nội dung thẻ

Các loại văn bản XML:

 Văn bản không hợp lệ: không theo nguyên tắc cú pháp được quy định bởi đặc tính kỹ thuật XML

 Văn bản hợp lệ: tuân theo nguyên tắc cú pháp XML và quy định trong

 Văn bản chuẩn: tuân theo quy tắc cú pháp XML nhưng không có DTD hoặc lược đồ

Một tài liệu XML đƣợc chia thành hai phần chính:

 Phần khai báo: khai báo cho tài liệu XML o Khai báo phiên bản, bảng mã ký tự sử dụng trong tài liệu o Định nghĩa kiểu cho tài liệu

 Phần thân: chứa nội dung d liệu o Gồm một hay nhiều phần tử o Mỗi phần tử được chứa trong một cặp thẻ o Phần tử đầu tiên là phần tử gốc

Tóm tắt sơ lƣợc về PHP:

 PHP được phát triển từ một sản phẩm có tên là PHP/FI PHP/FI do Ramus Lerdorf tạo ra năm 1995 Ramus đ quyết định công bố m nguồn của PHP/FI cho mọi người xem, sử dụng cũng như sửa các lỗi trong nó đồng thời cải tiến m nguồn

 Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C PHP/FI 2.0 được chính thức công bố vào tháng 11 năm 1997

 PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi với các phiên bản PHP mà chúng ta được biết ngày nay Nó đ được Andi Gutmans và Zeev Suraski tạo ra năm 1997 PHP 3.0 đ chính thức được công bố vào tháng 6 năm 1998, sau thời gian 9 tháng được cộng đông kiểm nghiệm

 PHP 4.0 đ chính thức được công bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời Ngoài tố độ xử lý được cải thiện rất nhiều, PHP 4.0 đem đến các tính năng chủ yếu khác gồm có sự hỗ trợ nhiều mấy chủ Web hơn, hỗ trợ phiên làm việ HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử dụng nhập vào đ bảo mật hơn và cung cấp một vài cấu trúc ngôn ng mới

 PHP 5.0 bản chính thức đ ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi khá dài các phiên bản kiểm tra thử bao gồm Beta 4, RC 1, RC 2, RC

3 Mặc dù coi đây là phiên bản sản xuất đầu tiên nhưng PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP

 Hiện nay bản tiếp theo của PHP đang được phát triển, PHP 6 được kì vong sẽ lâp đầy khiếm khuyết của PHP ở phiển bản hiện tại

Lý do chọn ngôn ngữ PHP:

 Viết m PHP trở nên khá trực quan và dễ dàng trong việc xây dựng giao diện ứng dụng HTTP

 Rất thích hợp với web có thể dễ dàng nhúng trang HTML

 Tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nh gọn

 Dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ng khác.

Các dịch vụ của Google với lập trình MapView

Để làm việc tốt với hệ thống bản đồ của Google, thì cần sử dụng một số các dịch vụ cần thiết để lập trình Điểm chung của các dịch vụ này là đều chạy trên môi trường web và đều trả kết quả qua định dạng JSON hoặc là XML

Google Maps là một dịch vụ ứng dụng và công nghệ bởi Google và hỗ trợ nhiều dịch vụ dựa vào bản đồ nhứ Google Ride Finder và một số có thể dùng để nhúng vào các trang web của bên thứ ba thông qua Google Maps API Nó cho phép thấy bản đồ đường sá, đường đi cho xe đạp, cho người đi bộ 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

Google Places API là một dịch vụ của Google INC mà khi sử dụng chúng ta sẽ nhận được các thông tin về các địa điểm đ được đánh dấu trên bản đồ Google Maps bởi các tổ chức, công ty và cá nhân ở khắp nơi trên thế giới Để sử dụng được dịch vụ này chúng ta phải đăng ký API key dịch vụ Google Places với Google

Google Directions API là một dịch vụ của Google INC mà khi sử dụng chúng ta sẽ đưa vào tọa độ 2 địa điểm đầu cuối rồi sau đó sẽ được thông tin về khoảng cách gi a 2 điểm, tọa độ GPS, thời gian đi lại dự kiến với các phương tiện như xe máy, ô tô hay là đi bộ

2.3.4 Google Geocoding API Đây là dịch vụ n a của Google cho phép chúng ta xác định các địa điểm đi qua trên đường đi gi a 2 vị trí xác định.

Máy ảo Dalvik và Android SDK

Các ứng dụng Android và các thành phần cơ bản hầu hết được viết bằng Java Thay vì sử dụng máy ảo Java, Android sử dụng máy ảo riêng Máy ảo của Android được thiết kế và tối ưu cho các hệ thống nh , không tương thích với máy ảo Java của

JavaMe Nh ng hệ thống nh này có dung lượng RAM nh , CPU chậm và hầu hết không có chỗ để trao đổi d liệu bù đắp cho dung lượng bộ nhớ nh Đây là điểm khác biệt gi Android với các hệ điều hành di động khác như Symbian, iOS, webOS Ngôn ng lập trình sử dụng chính là C, C++ và objective C, trong khi với webOS sử dụng chủ yếu ngôn ng web như Javascript hay HTML

Trình biên dịch byte code là máy ảo Dalvik Thay vì sử dụng dạng byte code thông thường, Dalvik có định dạng riêng để phù hợp với yêu cầu đối với thiết bị Android M của Android nh hơn so với m của Java và file dex được tạo ra cũng nh

Android SDK là bộ công cụ phát triển phần mềm cho phép lập trình viên tạo ra các ứng dụng cho các thiết bị sử dụng nền tảng Android Android SDK bao gồm nền tảng Android, các công cụ, chương trình mẫu và các tài liệu hỗ trợ Nó cũng là thành phần bổ sung trong bộ phát triển Java và có thể tích hợp vào Eclipse

Android chứa các gói hỗ trợ các chức năng tính toán cơ bản như quản lý xâu, quản lý vào ra, tính toán từ các gói cơ bản trong Java:

 Java.lang – lớp ngôn ng cơ bản của Java

 Java.io – quản lý vào ra

 Java.net – quản lí kết nối mạng

 Java.text – tiện ích xử lý văn bản

 Java.math – hỗ trợ tính toán

 Java.sercurity – quản lý các thành phần bảo mật

 Java.xml – lớp về các XML

 Org.apache – các lớp liên quan HTML

Ngoài ra Android còn có các lớp riêng như:

 android.app – truy cập mô hình ứng dụng của Android

 android.bluetooth – chức năng Bluetooth của Android

 android.content – quản lý d liệu trong Android

 android.net – chứa các lớp Uri dùng để truy cập d liệu

 android.graphics – các thành phần đồ họa

 android.location – các dịch vụ liên quan đến vị trí

 android.onpengl – các lớp OpenGL

 android.view – chứa các thành phần giao diện

 android.webkit – chứa các chức năng của trình duyệt web

 android.widget – các thành phần giao diện khác Ở đây chúng ta xem xét lập trình Android với Eclipse vì Eclipse cung cấp phong phú các thành phần hỗ trợ biên soạn java và môi trường debug mà còn có thể quản lý và điều khiển các yếu tố khác của ứng dụng Android trực tiếp từ Eclipse IDE

Android SDK cung cấp một bộ giả lập thiết bị di động ảo Máy ảo này cho phép chúng ta phát triển và kiểm tra các ứng dụng mà không cần thiết bị Android thật Máy ảo Android có đầy đủ các thành phần từ phần cứng đến phần mềm giống như một thiết bị thật ngoại trừ nó không thể thực hiện được một cuộc gọi Máy ảo Android cho phép sử dụng chuột để định hướng hay bàn phím đẻ tạo các sự kiện Người dùng có thể cài đặt kiểm thử phần mềm trên máy ảo với từng phiên bản khác nhau của Android như nghe nhạc, xem video hay vào mạng Máy bảo cũng có khả năng debug Truy cập vào đầu ra của nhận, giả lập các ngắt khi nhận cuộc gọi hay tin nhắn thậm chí là các ảnh hưởng độ trễ của mạng và ngắt trên kênh truyền d liệu

PHÂN TÍCH THIẾT KẾ HỆ THỐNG

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

Các chức năng của hệ thống bao gồm

 Cập nhật DS địa điểm

 Cập nhật DS các loại hình địa điểm

 Hiển địa điểm (xem vị trí địa điểm)

Yêu cầu phi chức năng

 Chương trình đơn giản, thân thiện với người sử dụng

 Sai số nh so với d liệu lớn

Yêu cầu hệ thống

 Sử dụng hệ điều hành Android phiên bản bằng hoặc mới hơn 2.2

Phân tích thiết kế

3.2.1 Mô hình hóa yêu cầu

 Xác định các tác nhân

 Người sử dụng: Là người trực tiếp sử dụng ứng dụng để biết được vị trí các địa điểm danh thắng, hay các khu vực phục vụ cho du lịch…vv

 Quản trị viên: Là người trực tiếp sử dụng phần mềm để cập nhật danh sách các địa điểm

 Các trường hợp sử dụng

 Cập nhật DS địa điểm

 Cập nhật DS loại địa điểm

 Xem vị trí các địa điểm

 Đặc tả các trường hợp sử dụng

 Tác nhân: người sử dụng, Quản trị viên

 Mô tả: Người sử dụng sẽ mở ứng dụng để xem các vị trí các địa điểm muốn tới, quản trị viên mở để xem xét đồng thời cập nhật các chức năng cần thiết khi cần

 Tác nhân: Người sử dụng, quản trị viên

 Mô tả: Kết thúc phiên làm việc người sử dụng và quản trị viên đóng hệ thống

 Cập nhật DS địa điểm

 Tác nhân: quản trị viên

 Mô tả: Cập nhật danh sách các địa điểm mới

 Cập nhật DS loại địa điểm

 Tác nhân: quản trị viên

 Mô tả: Cập nhật danh sách phân loại cách địa điểm theo các tiêu chí khác nhau

 Tác nhân: người sử dụng

 Mô tả: Tìm kiếm các địa điểm trên ứng dụng thông qua d liệu được lấy từ webservice hoặc google places

 Xem vị trí các địa điểm

 Tác nhân: người sử dụng

 Mô tả: Người sử dụng vào giao diện bản đồ để xem vị trí địa điểm cần tới

Biểu đồ trường hợp sử dụng (USE CASE)

Cap nhat DM dia diem

Cap nhat DM loai dia diem

Hình 3.1: Biểu đồ trường hợp sử dụng

 Biểu đồ use case cập nhật danh sách địa điểm

Cap nhat DM dia diem them dia diem cap nhat dia diem xoa dia diem

Hình 3.2: Biểu đồ use case cập nhật danh sách địa điểm

 Biểu đồ use case cập nhật các loại địa điểm

Cap nhat DM loai dia diem them loai dia diem cap nhat loai dia diem xoa loai dia diem

Hình 3.3: Biểu đồ use case cập nhật các loại địa điểm

 Biểu đồ tìm kiếm các địa điểm tim qua web services

Tim dia diem tim qua google places

Hình 3.4: Biểu đồ use case tìm kiếm các địa điểm

3.2.2 Mô hình hóa khái niệm

FrmMo he thong FrmDong he thong FrmTim qua webservices

FrmTim qua google places Frm cap nhat dia diem Frm cap nhat loai dia diem

Frm xem dia diem qua ban do

Ctl Mo he thong Ctl Dong he thong Ctl cap nhat dia diem

Ctl cap nhat loai dia diem Ctl Tim qua google places

Ctl xem dia diem qua ban do

Hình 3.6: Các lớp điều khiển

Hình 3.7: Các lớp thực thể

3.2.3 Mô hình hóa tương tác

 Biểu đồ trình tự mở hệ thống

: NSD : Quan tri vien : Quan tri vien : Frm Mo he thong : Frm Mo he thong : Ctl Mo he thong : Ctl Mo he thong

Hình 3.8 Biểu đồ trình tự mở hệ thống

 Biểu đồ trình tự đóng hệ thống

: NSD : Quan tri vien : Quan tri vien : Frm Dong he thong : Frm Dong he thong : Ctl Dong he thong : Ctl Dong he thong

Hình 3.9: Biểu đồ trình tự đóng hệ thống

 Biểu đồ trình tự cập nhập địa điểm

: Quan tri vien : Frm cap nhat dia diem : Frm cap nhat dia diem : Ctl cap nhat dia diem : Ctl cap nhat dia diem : Diadiem : Diadiem

Hình 3.10: Biểu đồ trình tự cập nhật địa điểm

 Biểu đồ trình tự cập nhật các loại địa điểm

: Quan tri vien : Frm cap nhat loai dia diem : Frm cap nhat loai dia diem : Ctl cap nhat loai dia diem

: Ctl cap nhat loai dia diem

Hình 3.11: Biểu đồ trình tự cập nhật các loại địa điểm

 Biểu đồ trình tìm kiếm qua webservices

: Nguoi su dung : FrmTim qua webservices : FrmTim qua webservices : Ctl Tim qua webservices

: Ctl Tim qua webservices : Diadiem : Diadiem

4:Cung cap thong tin() 5: Thong bao ket qua()

Hình 3.12: Biểu đồ trình tự tìm kiếm qua webservices

 Biểu đồ trình tự tìm kiếm qua google places

: Nguoi su dung : FrmTim qua google places : FrmTim qua google places : Ctl Tim qua google places

: Ctl Tim qua google places CSDL Google

Hình 3.13: Biểu đồ trình tự tìm kiếm qua google places

 Biểu đồ trình tự xem vị trí địa điểm

: Frm xem dia diem qua ban do

: Frm xem dia diem qua ban do : Ctl xem dia diem qua ban do

: Ctl xem dia diem qua ban do

Hình 3.14: Biểu đồ trình tự xem vị trí địa điểm

 Biểu đồ cộng tác mở hệ thống

Hình 3.15: Biểu đồ cộng tác mở hệ thống

 Biểu đồ cộng tác đóng hệ thống

: Ctl Dong he thong : Frm Dong he thong

1 : 1 : Dong he thong() 2: 2: Dong he thong()

Hình 3.16: Biểu đồ cộng tác đóng hệ thống

 Biểu đồ cộng tác cập nhật địa điểm

: Quan tri vien : Frm cap nhat dia diem

: Ctl cap nhat dia diem : Diadiem

Hình 3.17: Biểu đồ cộng tác cập nhật địa điểm

 Biểu đồ cộng tác cập nhật các loại địa điểm

: Quan tri vien : Frm cap nhat loai dia diem

: Ctl cap nhat loai dia diem

Hình 3.18: Biểu đồ cộng tác cập nhật các loại địa điểm

 Biểu đồ cộng tác tìm kiếm qua webservices

: Nguoi su dung : FrmTim qua webservices

2: 2: thuc hien() 5: 5: Thong bao ket qua()

Hình 3.19: Biểu đồ cộng tác tìm kiếm qua webservices

 Biểu đồ cộng tác tìm kiếm qua google places

: Nguoi su dung : FrmTim qua google places

: Ctl Tim qua google places

CSDL Google Places 3: 3: Tao truy van()

2: 2: Thuc hien() 5: 5: Thong bao ket qua()

Hình 3.20: Biểu đồ cộng tác tìm kiếm qua google places

 Biểu đồ cộng tác xem vị trí địa điểm

: Nguoi su dung : Frm xem dia diem qua ban do

: Ctl xem dia diem qua ban do : Diadiem

3: 4: Cung cap thong tin() 4: 5: Hien thi()

Hình 3.21: Biểu đồ cộng tác xem vị trí địa điểm

3.2.4 Mô hình hóa hành vi

Thuc hien Nguoi su dung mo he thong su dung

Hình 3.22: Biểu đồ mô trạng thái mở hệ thống

Cho nhap thong tin Nhap thong tin

Cap nhat danh sach dia diem

Xu ly cap nhap Ket thuc cap nhat

Hình 3.23: Biểu đồ trạng thái cập nhật địa điểm

Cho thong tin tim kiem Nhap cac thong tin tim kiem

Hien thi ket qua tra ve

Xu ly ket qua Ket thuc

Hình 3.24: Biểu đồ trạng thái tìm kiếm địa điểm

 Xem vị trí đia điểm

Cho yeu cau xem Xu ly yeu cau

Lay thong tin tu CSDL

Hien thi ket qua tra ve

Ket thuc xu ly Ket thuc

Hình 3.25: Biểu đồ trạng thái xem vị trí địa điểm

Hình 3.26: Biểu đồ hoạt mở hệ thống

Cap nhat cac dia diem

Hình 3.27: Biểu đồ hoạt động cập nhật địa điểm

Nhap thong tin tim kiem

Hình 3.28: Biểu đồ hoạt động tìm kiếm

 Xem vị trí địa điểm

Hình 3.29: Biểu đồ hoạt động xem vị trí địa điểm

3.2.5 Thiết kế chi tiết biểu đồ lớp

Hình 3.30: Chi tiết biểu đồ lớp

3.2.6 Thiết kế kiến trúc vật lý

Phía client là ứng dụng được triển khai trên các thiết bị chạy hệ điều hành

Android Gửi các truy vấn lấy d liệu tới web server chạy các services của ứng dụng

Phía server là ứng dụng được triển khai với ngôn ng PHP và cơ sở d liệu MySQL Gồm các xử lý gửi d liệu được yêu cầu của máy client

Object Chuc nang danh muc

Object Chuc nang tim kiem dia diem

Object chuc nang xem dia diem

Hình 3.31: Biểu đồ thành phần

 Google Web Services: Máy chủ dịch vụ của Google

 Application Web Services: Máy chủ dịch vụ của ứng dụng Triển khai dịch vụ trên máy chủ Linux, sử dụng ngôn ng PHP và CSDL MySQL

 Client Ung Dung: Thiết bị sử dụng ứng dụng tìm kiếm, triển khai trên hệ điều hành Android

Google W eb Services Application W eb Services

Hình 3.32: Biểu đồ triển khai

XÂY DỰNG ỨNG DỤNG

Cách thức xây dựng chương trình

4.1.1 Xây dựng chức năng xử lý của WebServices

Chính năng chính của web services là trả về các kết quả truy vấn về danh sách các địa điểm để hiển thị lên bản đồ và kết quả tìm kiếm của ứng dụng

Có cách thức hoạt động là từ ứng dụng gửi các truy vấn có điều kiện , web services xử lý rồi trả về kết quả tương ứng

Hình 4.1: Quá trình xử lý của web services

Việc gửi các giá trị truy vấn lên web services của ứng dụng thông qua các giá trị $_REQUEST từ ứng dụng Android Để làm đƣợc điều đó từ phía ứng dụng phải sử dụng một đối tƣợng có kiểu BasicNameValuePair để tạo ra các biến REQUEST thông qua phương thức add (“tên biến_request”,”giá trị”) nameValuePair.add (new BasicNameValuePair(“danhthang”,”dt”))

Sau khi khai báo các biến $_REQUEST thì tiến hành xác định URL truy vấn và gán các biến NameValuePair cho URL đó rồi tiến hành thực thi

HttpPost httpPost = new HttpPost(url); httpPost.setEntity(newUrlEncodedFormEntity(nameValuePair));

Tiếp theo ở phía web services, php có nhiệm vụ nhận các yêu cầu đó sau đó truy vấn vào cơ sở d liệu, lấy ra d liệu phù hợp với truy vấn rồi tiến hành xuất kết quả D liệu đầu ra được php xử lý thành dạng ngôn ng JSON đ đề cập

Bắt đầu Nhận các giá trị gửi đi

PHP Control Xuất kết quả

Ngày đăng: 26/02/2024, 06:12

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

TÀI LIỆU LIÊN QUAN