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

xây dựng ứng dụng tìm đường đi bằng xe buýt tối ưu theo nhiều tiêu chí trên điện thoại windows phone 8

127 80 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 127
Dung lượng 3,2 MB

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

Nội dung

Với một chiếc smartphone nhỏ, gọn trong tay, người sử dụng có thể làm mọi điều mình thích, từ các chức năng cơ bản, truyền thống như nghe, gọi, nhắn tin,…đến các chức năng nâng cao như:

Trang 1

TRƯỜNG ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH

Thuộc nhóm ngành khoa học: Công nghệ thông tin

Thành phố Hồ Chí Minh, tháng 3 năm 2014

Trang 2

TRƯỜNG ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH

Thuộc nhóm ngành khoa học: Công nghệ thông tin

Dân tộc: Kinh

Lớp, khoa: lớp TH10A3, khoa Công Nghệ Thông Tin

Năm thứ: 4 /Số năm đào tạo: 4

Ngành học: Khoa học máy tính

Người hướng dẫn: ThS HỒ QUANG KHẢI

Thành phố Hồ Chí Minh, tháng 3 năm 2014

Trang 3

TÓM TẮT CÔNG TRÌNH

Hiện nay, nhu cầu đi lại bằng xe buýt của người dân ngày càng tăng cao kéo theo

đó là nhu cần tìm các tuyến xe buýt, trạm dừng, đường đi cũng tăng lên đáng kể Tuy nhiên, với một bản đồ lưu thông xe buýt bằng giấy như hiện nay, việc tìm kiếm một tuyến

xe buýt gây rất nhiều khó khăn cho người dân trong việc đi lại, đặc biệt đối với học sinh, sinh viên, người dân mới đến thành phố Còn đối với người dân đã “quen” với việc sử dụng dịch vụ xe buýt thì nhu cầu cần tìm một lộ trình theo ý mình như thời gian đi nhanh nhất, ít tốn chi phí nhất, thời gian đi bộ ngắn nhất hoặc số lần chuyển tuyến ít nhất là một điều rất cần thiết Do đó, cần phải có một tiện ích hỗ trợ người dùng tìm đường đi bằng xe buýt theo nhiều tiêu chí giúp cho việc đi lại của người dân nhanh chóng và hiệu quả hơn

Những năm gần đây, ngành điện thoại di động phát triển vượt bậc Smartphone ra đời làm thay đổi nhận thức của con người về điện thoại di động Với một chiếc smartphone nhỏ, gọn trong tay, người sử dụng có thể làm mọi điều mình thích, từ các chức năng cơ bản, truyền thống như nghe, gọi, nhắn tin,…đến các chức năng nâng cao như: lướt web, xem phim, nghe nhạc, định vị GPS, xem bản đồ trực tuyến,…Song, số lượng các phần mềm hỗ trợ người dùng tìm đường đi bằng xe buýt là rất ít và còn nhiều hạn chế

Xuất phát từ thực tế đi lại và các giải pháp công nghệ hiện có, nhóm nghiên cứu đề tài quyết định xây dựng một ứng dụng tìm đường đi bằng xe buýt trên smartphone chạy

hệ điều hành Windows Phone 8, tối ưu theo bốn tiêu chí là thời gian đi nhanh nhất, ít tốn chi phí nhất, thời gian đi bộ ít nhất và số tuyến đi ít nhất Ứng dụng là sự kết hợp giữa dữ liệu về các tuyến xe buýt, trạm dừng với bản đồ Goolge Maps và truy xuất thông tin từ các cổng Google Maps API Web Services để tạo nên ứng dụng hoàn chỉnh kết hợp với giao diện đẹp, giúp cho việc đi lại của người dùng dễ dàng, nhanh chóng và hiệu quả

Đề tài được thực hiện trong khoảng thời gian từ tháng 11/2013 đến cuối tháng 03/2014 Đây là kết quả nghiên cứu của nhóm trong suốt quá trình tìm kiếm, thu thập dữ liệu các tuyến xe, trạm dừng với mục tiêu là xây dựng một ứng dụng tìm đường đi bằng

xe buýt theo nhiều tiêu chí, bên cạnh đó, ứng dụng cũng phải có chức năng cho phép người dùng tra cứu thông tin, tìm kiếm trạm dừng, định vị cá nhân,…

Tuy đã rất cố gắng, tìm hiểu, học hỏi để thực hiện đề tài, song do khả năng vận dụng còn hạn chế, thời gian thực hiện không nhiều, lượng kiến thức tiếp thu còn hẹp nên phần báo cáo và ứng dụng của nhóm còn nhiều thiếu sót Nhóm nghiên cứu đề tài xin ghi nhận tất cả ý kiến đóng góp từ quý Thầy (Cô), các bạn sinh viên,…để ứng dụng ngày càng hoàn thiện hơn

Nhóm nghiên cứu đề tài

Trang 4

MỤC LỤC

TÓM TẮT CÔNG TRÌNH i

DANH MỤC CÁC BẢNG v

DANH MỤC HÌNH ẢNH vi

DANH MỤC CHỮ VIẾT TẮT viii

THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI ix

THÔNG TIN VỀ SINH VIÊN CHỊU TRÁCH NHIỆM THỰC HIỆN ĐỀ TÀI xii

CHƯƠNG 1: TỔNG QUAN 1

1.1 Đặt vấn đề 1

1.1.1 Thực trạng giao thông hiện nay 1

1.1.2 Các giải pháp công nghệ hiện có 1

1.1.3 Lý do chọn đề tài 3

1.2 Mục tiêu đề tài 3

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

1.4 Đối tượng và phạm vi nghiên cứu 3

1.5 Đóng góp của đề tài 4

1.5.1 Đóng góp về mặt kinh tế - xã hội 4

1.5.2 Đóng góp về mặt khoa học 4

CHƯƠNG 2: NỘI DUNG NGHIÊN CỨU 5

2.1 Tổng quan về lập trình Windows Phone 8 5

2.1.1 Bố cục của một ứng dụng 5

2.1.2 Tìm hiểu XAML trong lập trình Windows Phone 5

2.1.3 Ngôn ngữ C# trong việc xây dựng ứng dụng trên Windows Phone 6

2.1.4 Tìm hiểu LINQ To SQL 12

2.2 Sử dụng GPS và A-GPS trên Windows Phone 14

2.2.1 Tổng quan về GPS 14

2.2.2 Tổng quan về A-GPS 15

2.2.3 Sử dụng GPS trên Windows Phone 16

2.3 Sử dụng Google Maps trong ứng dụng Windows Phone 8 19

2.3.1 Giới thiệu Control Maps trong Windows Phone 8 19

Trang 5

2.3.2 So sánh Bing Maps và Google Maps 20

2.3.3 Chuyển đổi Bing Maps sang Google Maps 21

2.4 Google Maps API Web Services 24

2.4.1 Cú pháp sử dụng 24

2.4.2 Xử lý kết quả trả về 25

2.4.3 Google Direction API Service 26

2.4.4 Google Geocoding API Service 31

2.4.5 Google Reverse Geocoding API Service 33

2.4.6 Google Place Autocomplete API Service 35

2.4.7 Google Place API Nearby Search Service 38

2.4.8 Google Place API Radar Search Service 38

2.4.9 Google Place Details API Service 41

2.5 Áp dụng công thức hình cầu của cosines (Spherical Law of Cosines) 43

2.5.1 Giới thiệu 43

2.5.2 Vận dụng 43

2.6 Xây dựng phương thức giải mã tọa độ 45

2.6.1 Tính cấp bách của vấn đề 45

2.6.2 Cơ sở của việc xây dựng phương thức giải mã 46

2.6.3 Phương thức giải mã tọa độ 50

CHƯƠNG 3: NỘI DUNG THỰC HIỆN ĐỀ TÀI 55

3.1 Giới thiệu ứng dụng 55

3.2 Tổ chức cơ sở dữ liệu 56

3.2.1 Dữ liệu cục bộ (Local Database) 56

3.2.2 Dữ liệu từ Google Maps API Web Services: 59

3.3 Hiện thực ứng dụng 59

3.3.1 Hiển thị danh sách tuyến xe lên trang tuyến xe 59

3.3.2 Hiển thị thông tin của tuyến xe lên trang thông tin 61

3.3.3 Hiển thị danh sách trạm dừng theo từng tuyến 62

3.3.4 Hiển thị lộ trình xe buýt lên bản đồ 65

3.3.5 Định vị cá nhân 69

3.3.6 Sử dụng pushpin trong ứng dụng 70

Trang 7

3.3.7 Chức năng tìm kiếm trạm dừng 75

3.3.8 Tìm đường đi bằng xe buýt 86

CHƯƠNG 4: KẾT LUẬN 100

4.1 Kết quả đạt được 100

4.2 Những hạn chế 100

4.3 Hướng phát triển 100

TÀI LIỆU THAM KHẢO 101

PHỤ LỤC 102

Trang 9

v

DANH MỤC CÁC BẢNG

Bảng 2.1: Bảng mô tả một số kiểu dữ liệu đã được xây dựng sẵn 7

Bảng 2.2: Bảng tóm tắt các thuộc tính truy cập của một lớp trong C# 12

Bảng 2.3: Bảng so sánh A-GPS và GPS trên một số lĩnh vực 16

Bảng 2.4: Bảng so sánh GeoCoordinateWatcher class và Geolocator class 17

Bảng 3.1: Bảng TUYENXE 57

Bảng 3.2: Bảng TRAMDUNG 58

Bảng 3.3: Bảng LUOT 58

Bảng 3.4: Bảng LOTRINH 58

Bảng 3.5: Bảng các thuộc tính của pushpin 71

Trang 10

DANH MỤC HÌNH ẢNH

Hình 2.1: Cách thức hoạt động của A-GPS 15

Hình 2.2: So sánh Bing Maps với Google Maps 22

Hình 2.3: Minh họa chức năng AutoComplete 35

Hình 2.4: Lược đồ xây dựng phương thức vẽ hình tròn từ một điểm và bán kính 44

Hình 2.5: Lược đồ 11 bước mã hóa thành phần points 47

Hình 2.6: Sơ đồ 11 bước giải mã tọa độ 51

Hình 2.7: Lược đồ xây dựng phương thức giải mã tọa độ 52

Hình 3.1: Sơ đồ chức năng của ứng dụng 55

Hình 3.2: Sơ đồ liên kết cơ sở dữ liệu của ứng dụng 56

Hình 3.3: Mô hình client – server của ứng dụng 59

Hình 3.4: Giao diện trang tuyến xe 59

Hình 3.5: Sơ đồ phân tích chức năng trang tuyến xe 61

Hình 3.6: Sơ đồ phân tích chức năng hiển thị thông tin tuyến xe 61

Hình 3.7: Sơ đồ phân tích chức năng hiển thị trạm dừng theo tuyến xe 62

Hình 3.8: Giao diện trang trạm dừng 63

Hình 3.9: Giao diện hiển thị danh sách trạm dừng lên bản đồ 64

Hình 3.10: Sơ đồ phân tích chức năng hiển thị lộ trình lên bản đồ 65

Hình 3.11: Sơ đồ xây dựng hàm vẽ lộ trình của tuyến xe buýt lên bản đồ 66

Hình 3.12: Vẽ lộ trình tuyến xe lên bản đồ 69

Hình 3.13: Chức năng định vị cá nhân 29

Hình 3.14: Hiển thị vị trí người dùng lên bản đồ 70

Hình 3.15: Các pushpin được sử dụng trong ứng dụng 71

Hình 3.16: Sơ đồ phân tích chức năng tìm kiếm trạm dừng theo mã trạm 75

Hình 3.17: Giao diện chức năng tìm kiếm trạm dừng theo mã trạm 78

Trang 11

vii

Hình 3.18: Sơ đồ phân tích chức năng tìm kiếm trạm dừng từ một điểm với bán kính 79

Hình 3.19: Sơ đồ phân tích chức năng nhập địa chỉ tại hộp tìm kiếm 80

Hình 3.20: Xác định vị trí tìm trạm dừng 82

Hình 3.21: Xác định bán kính tìm kiếm 83

Hình 3.22: Kết quả tìm trạm dừng 86

Hình 3.23: Sơ đồ phân tích chức năng tìm đường 87

Trang 12

DANH MỤC CHỮ VIẾT TẮT

LINQ Language Integrated Query

Trang 13

ix

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC MỞ TP.HCM

THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI

1 Thông tin chung:

- Tên đề tài: xây dựng ứng dụng tìm đường đi bằng xe buýt tối ưu theo nhiều tiêu chí trên điện thoại Windows Phone 8

- Sinh viên thực hiện:

1) Lê Hữu Tài

Lớp: TH10A3 Khoa: CNTT Năm thứ: 4 Số năm đào tạo: 4 2) Huỳnh Ngọc Huy

Lớp: TH10A4 Khoa: CNTT Năm thứ: 4 Số năm đào tạo: 4

- Người hướng dẫn: Ths Hồ Quang Khải

2 Mục tiêu đề tài:

Xây dựng một ứng dụng tìm đường đi bằng xe buýt trên smartphone chạy hệ điều hành Windows Phone 8 với các chức năng sau:

 Xem thông tin các tuyến xe buýt và danh sách các trạm dừng trên từng tuyến

 Hiển thị lộ trình của các tuyến xe lên Google Maps

 Tìm kiếm trạm dừng theo hai cơ chế: tìm kiếm chính xác thông qua mã trạm hoặc tìm kiếm tương đối từ một điểm với bán kính chỉ định

 Định vị GPS, cho phép hiển thị vị trí của người dùng lên Google Maps

 Tìm đường đi bằng xe buýt tối ưu theo bốn tiêu chí: thời gian đi nhanh nhất, ít tốn chi phí nhất, thời gian đi bộ ít nhất và số tuyến đi ít nhất

3 Tính mới và sáng tạo:

 Xây dựng thành công một ứng dụng hoàn chỉnh trên hệ điều hành Windows Phone

8 – phiên bản hệ điều hành Windows Phone mới nhất hiện nay của Microsoft

 Chuyển đổi thành công bản đồ Bing Maps mặc định của Microsoft thành Google Maps vốn không được hỗ trợ cho Windows Phone

 Sử dụng thành công việc truy xuất thông tin dữ liệu từ Google Maps API vốn không hỗ trợ cho các nhà lập trình Windows Phone bằng cách sử dụng các cổng Web Services

 Chức năng tìm đường đi của ứng dụng tối ưu theo nhiều tiêu chí, giúp người dùng

có nhiều sự lựa chọn hơn so với các sản phẩm phần mềm hiện có

Trang 15

x

4 Kết quả nghiên cứu:

Xây dựng thành công ứng dụng tìm đường đi bằng xe buýt trên hệ điều hành Windows Phone 8 với đầy đủ tính năng sau:

 Định vị GPS: hiển thị vị trí người dùng lên bản đồ

 Xem thông tin tuyến xe, danh sách trạm dừng kết hợp với việc hiển thị lộ trình của từng tuyến lên bản đồ

 Tìm kiếm trạm dừng theo mã trạm, tìm kiếm trạm dừng từ một điểm với bán kính chỉ định

 Chức năng tìm đường với nhiều tùy chọn phong phú: hiển thị tất cả kết quả tìm được hoặc tối ưu theo bốn tiêu chí: thời gian đi nhanh nhất, tốn chi phí ít nhất, thời gian đi bộ ít nhất và số tuyến đi ít nhất

5 Đóng góp về mặt kinh tế - xã hội, giáo dục và đào tạo, an ninh, quốc phòng và khả năng áp dụng của đề tài:

 Ứng dụng giúp người dùng có cái nhìn bao quát và toàn diện thông tin của các tuyến xe, lộ trình di chuyển cũng như tất cả các trạm dừng mà tuyến xe sẽ đi qua

 Ứng dụng giúp việc tìm đường đi bằng xe buýt của người dùng trở nên dễ dàng, nhanh chóng và hiệu quả Điều này có ý nghĩa rất lớn trong tình hình giao thông phức tạp như hiện nay, đặc biệt là đối với học sinh, sinh viên, người lao động mới đến thành phố sinh sống và học tập

 Chức năng tìm đường của ứng dụng tối ưu theo nhiều tiêu chí giúp người dùng chủ động hơn, an tâm hơn khi sử dụng xe buýt là phương tiện để đi lại hằng ngày

 Ứng dụng là tiện ích hỗ trợ hơn nữa việc “gắn kết” giữa người dùng với phương tiện xe buýt, góp phần vào chủ trương của thành phố trong việc hạn chế số lượng

xe gắn máy, khuyến khích người dân đi xe buýt nhằm giảm tình trạng ách tắc giao thông , kẹt xe thường xuyên vào giờ cao điểm như hiện nay

 Ứng dụng chạy trên smartphone với giao diện đẹp, dễ sử dụng, độ chính xác cao

do đó hấp dẫn được người sử dụng, đáp ứng được yêu cầu mọi lúc, mọi nơi

 Chức năng tìm đường của ứng dụng giúp người dùng có thể tìm đường đi trong phạm vi lãnh thổ đất nước, ở những nơi có sử dụng phương tiện đi lại bằng xe buýt CSDL của ứng dụng hiện chỉ phục vụ người dùng xem thông tin về các tuyến

xe trong phạm vi thành phố Hồ Chí Minh, nhưng có thể được mở rộng để lưu thông tin cho các tỉnh, thành trong cả nước

Trang 17

xi

6 Công bố khoa học của sinh viên từ kết quả nghiên cứu của đề tài (ghi rõ tên tạp chí

nếu có) hoặc nhận xét, đánh giá của cơ sở đã áp dụng các kết quả nghiên cứu (nếu có):

Ngày tháng năm

Sinh viên chịu trách nhiệm chính

thực hiện đề tài

(ký, họ và tên)

Nhận xét của người hướng dẫn về những đóng góp khoa học của sinh viên thực hiện

đề tài (phần này do người hướng dẫn ghi):

Trang 19

I SƠ LƯỢC VỀ SINH VIÊN:

Họ và tên: LÊ HỮU TÀI

Sinh ngày: 11 tháng 07 năm 1991

Nơi sinh: Tỉnh Long An

Lớp: TH10A3 Khóa: 2010-2014

Khoa: Công nghệ thông tin

Địa chỉ liên hệ: Ấp 4, xã Long Hậu, huyện Cần Giuộc, tỉnh Long An

Điện thoại: 01644636260 Email: lhtai91@gmail.com

II QUÁ TRÌNH HỌC TẬP (kê khai thành tích của sinh viên từ năm thứ 1 đến năm

Trang 23

Trang 1

CHƯƠNG 1: TỔNG QUAN 1.1 Đặt vấn đề

1.1.1 Thực trạng giao thông hiện nay

Thành phố Hồ Chí Minh cùng với thủ đô Hà Nội và các thành phố lớn chính là động lực để phát triển cả về kinh tế, văn hóa, xã hội, thương mại, khoa học, giáo dục, v.v… cho đất nước Tuy nhiên, hệ thống giao thông tại đây rất phức tạp với kết cấu đường xá chằn chịt, gây khó khăn cho người dân trong việc đi lại Vấn nạn kẹt xe, tình trạng ách tách giao thông xảy ra thường xuyên vào giờ cao điểm gây bức xúc trong nhân dân Vấn đề trên đòi hỏi cần phải có một giải pháp để giải quyết bài toán về giao thông

Hằng năm, các thành phố lớn đón nhận hàng ngàn học sinh, sinh viên, công nhân, người dân từ nhiều tỉnh, thành trong cả nước về học tập, sinh sống và làm việc Số lượng

xe máy quá đông được xem là một trong những nguyên nhân gây nên tình trạng kẹt xe tại đây Do đó, để kéo giảm tình trạng ùn tắc giao thông đòi hỏi cần có một giải pháp hạn chế

số lượng xe gắn máy trên đường nhưng đồng thời phải bảo đảm không ảnh hưởng đến việc đi lại của người dân

Những năm qua, thành phố tập trung vào việc hoàn thiện và nâng cao chất lượng của loại hình đi lại bằng phương tiện xe buýt Thực tế hiện nay, nhu cầu đi lại bằng xe buýt của người dân ngày càng tăng cao kéo theo đó là nhu cầu tìm các tuyến xe buýt, trạm dừng, đường đi cũng tăng lên đáng kể

Tuy nhiên, bên cạnh những mặt đạt được, vẫn còn có nhiều hạn chế khiến phương tiện này chưa thật sự trở thành người bạn đồng hành của nhân dân trong việc đi lại hằng ngày Thông tin về các tuyến xe, trạm dừng chưa thật sự đáp ứng được yêu cầu đa dạng, mọi lúc, mọi nơi của người dùng Một bản đồ xe buýt bằng giấy với vô số các tuyến xe gây khó khăn cho người dân trong việc đi lại nhất là đối với học sinh, sinh viên, người dân mới đến thành phố Còn đối với người dân đã “quen” với việc sử dụng dịch vụ xe buýt thì nhu cầu cần tìm một lộ trình theo ý mình như thời gian đi nhanh nhất, ít tốn chi phí nhất, thời gian đi bộ ít nhất hoặc số tuyến đi ít nhất là một điều rất cần thiết

Thực trạng trên đòi hỏi cần phải có một giải pháp giúp người dân trong việc tìm kiếm thông tin các tuyến xe, trạm dừng và tìm đường đi bằng xe buýt theo nhiều tiêu chí một cách chính xác, nhanh chóng và hiệu quả

1.1.2 Các giải pháp công nghệ hiện có

Mặc dù có nhiều phương pháp, cách thức để hỗ trợ cho việc đi lại, song không phải phương pháp nào cũng mang lại hiệu quả tốt nhất Việc sử dụng bản đồ giao thông bằng giấy gây rất nhiều khó khăn cho người dân nhưng đôi khi lại không chính xác Trong khi

đó, nếu sử dụng bản đồ online thì phải cần đến máy tính bàn, laptop, máy tính bảng…những sản phẩm này mặc dù cho hiệu quả tốt nhưng lại không phù hợp khi giao thông vì quá cồng kềnh, lại kém an toàn cho người sử dụng Vấn đề đặt ra là cần phải có

Trang 24

một thiết bị vừa gọn, nhẹ nhưng phải có khả năng hỗ trợ bản đồ, hỗ trợ việc tìm đường đi nhanh chóng, hiệu quả cho người sử dụng

Những năm gần đây, ngành điện thoại di động phát triển vượt bậc Smartphone ra đời làm thay đổi nhận thức của con người về điện thoại di động Với một chiếc smartphone nhỏ, gọn trong tay, người sử dụng có thể làm mọi điều mình thích, từ các chức năng cơ bản, truyền thống như nghe, gọi, nhắn tin,…đến các chức năng nâng cao như lướt web, xem phim, nghe nhạc, định vị GPS, xem bản đồ trực tuyến,… Smartphone dần dần trở thành người bạn đồng hành của con người trong xã hội hiện nay Do đó, việc xây dựng một phần mềm tìm đường đi trên điện thoại là giải pháp tối ưu nhất

Ngành công nghiệp smartphone hiện nay có năm nền tảng hệ điều hành chính là: Windows Phone, Symbian, iOS, Android, webOS gắn liền với những “gã khổng lồ” trong ngành công nghệ như: Microsoft, Apple, Google,… Thị trường phần mềm phát triển trên nền điện thoại di động ngày càng phong phú và đa dạng Tuy nhiên, số lượng các phần mềm hỗ trợ người dùng tìm đường đi bằng xe buýt tại Việt Nam lại rất khiêm tốn, đơn cử chỉ có một vài phần mềm như: BusMap, BUSITUS,… Do đó, việc xây dựng và phát triển một phần mềm tìm đường đi bằng xe buýt trên smartphone là một điều rất cần thiết

Trong năm nền tảng hệ điều hành trên, thì hệ điều hành Windows Phone 7 của tập đoàn hàng đầu thế giới – Microsoft – mặc dù là hệ điều hành ra đời sau cùng nhưng lại

có những tính năng thân thiện hơn với người dùng Với Windows Phone, Microsoft đã phát triển giao diện người dùng mới mang tên Metro – tích hợp khả năng liên kết với các phần cứng và phần mềm của hãng thứ ba một cách dễ dàng Đặc biệt, với phiên bản Windows Phone 8 tung ra thị trường vào ngày 29 tháng 10 năm 2012 được xem là sự kế thừa và phát huy hơn nữa so với Windows Phone 7

Phiên bản Windows Phone 8 đã thay thế lõi kiến trúc Windows CE trên Windows Phone 7 thành kernel củaWindows NT vốn được thiết kế choWindows 8, chính vì vậy làm cho ứng dụng dễ dàng kết nối (port) giữa hai hệ điều hành.Ngoài ra, Windows Phone

8 còn hỗ trợ CPU đa nhân, nhiều độ phân giải, tùy biến Start Screen, kèm phiên bản di động của Internet Explorer 10, tích hợp Nokia Maps, giao diện thân thiện hơn Việc lập trình trên Windows Phone nhìn chung là sử dụng ngôn ngữ C#, một trong những ngôn ngữ lập trình hiện đại và phổ biến nhất hiện nay, góp phần tạo thuận lợi cho các nhà phát triển Bên cạnh đó, các nhà phát triển có thể tạo nên các ứng dụng sinh động, hấp dẫn bằng việc lập trình dựa trên hai công nghệ là Silverlight và XNA

Song, có một thực tế là, người dùng Windows Phone 7 và 8 cho đến thời điểm hiện tại vẫn không thể truy cập Google Maps từ trình duyệt Web trên điện thoại của họ Đây được xem là một sự “thiệt thòi” của người dùng Windows Phone so với Android và iOS, bởi sự cạnh tranh trong kinh doanh giữa hai “gã khổng lồ” Microsoft và Google Các phần mềm tìm đường đi bằng xe buýt tại Việt Nam trên Windows Phone 8 là rất ít, đơn

cử chỉ có một vài phần mềm như: BusMap,…Do đó, việc xây dựng và phát triển một ứng dụng tìm đường đi bằng xe buýt trên Windows Phone 8 là rất cần thiết

Trang 25

1.1.3 Lý do chọn đề tài

Xuất phát từ yêu cầu cấp bách của thực tế đi lại và các giải pháp công nghệ hiện

có, nhóm nghiên cứu đề tài quyết định xây dựng một ứng dụng tìm đường đi bằng xe buýt trên smartphone chạy hệ điều hành Windows Phone 8, tối ưu theo bốn tiêu chí là thời gian

đi nhanh nhất, ít tốn chi phí nhất, thời gian đi bộ ít nhất và số tuyến đi ít nhất

1.2 Mục tiêu đề tài

Xây dựng một ứng dụng tìm đường đi bằng xe buýt trên smartphone chạy hệ điều hành Windows Phone 8 với tính năng sau:

 Định vị GPS, giúp xác định vị trí người dùng và hiển thị lên bản đồ

 Xem thông tin của từng tuyến xe, danh sách tất cả trạm dừng mà tuyến xe đi qua, đồng thời hiển thị lộ trình di chuyển của tuyến xe lên bản đồ Google Maps

 Tìm kiếm trạm dừng theo hai cơ chế: tìm trạm dừng theo mã trạm và tìm trạm dừng từ một vị trí với bán kính tìm kiếm được chỉ định bởi người dùng

 Chức năng tìm đường với nhiều tùy chọn phong phú: hiển thị tất cả kết quả tìm được hoặc tối ưu theo bốn tiêu chí: thời gian đi nhanh nhất, tốn chi phí ít nhất, thời gian đi bộ ít nhất và số tuyến đi ít nhất

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

 Nghiên cứu lập trình xây dựng ứng dụng trên hệ điều hành Windows Phone 8

 Nghiên cứu phương pháp đưa bản đồ Google Maps hiển thị thay cho bản đồ mặc định Bing Maps của Windows Phone

 Nghiên cứu lập trình để xác định vị trí của người dùng điện thoại bằng công nghệ GPS

 Nghiên cứu việc sử dụng Google Maps API thông qua các cổng Web Services

 Nghiên cứu áp dụng các công thức hình cầu Cosines trong việc vẽ hình tròn lên bản đồ nhằm thể hiện phạm vi tìm kiếm

 Nghiên cứu xây dựng phương thức giải mã tọa độ thành phần points trong polyline

từ kết quả truy vấn Google Direction API Service

 Tìm hiểu, nghiên cứu lập trình để kết hợp dữ liệu local của ứng dụng với kết quả trả về từ Google Maps API Web Services và Google Maps nhằm xây dựng một ứng dụng tìm đường đi bằng xe buýt hoàn chỉnh

1.4 Đối tượng và phạm vi nghiên cứu

 Ứng dụng của nhóm hướng đến tất cả mọi người đã, đang và sẽ sử dụng phương tiện đi lại bằng xe buýt, đặc biệt là học sinh, sinh viên, người lao động mới đến thành phố

Trang 26

 Chức năng tìm trạm dừng từ một vị trí với bán kính chỉ định và chức năng tìm đường đi tối ưu theo nhiều tiêu chí của ứng dụng được áp dụng trong phạm vi toàn quốc

 Các chức năng khác của ứng dụng như xem thông tin tuyến xe, xem danh sách trạm dừng, vẽ lộ trình di chuyển, tìm kiếm trạm dừng thông qua mã trạm được áp dụng đối với hơn 50 tuyến xe (từ tuyến 1 đến tuyến 50) tại thành phố Hồ Chí Minh Tuy nhiên, CSDL về xe buýt của ứng dụng có thể được hoàn thiện để lưu thông tin của tất cả tuyến xe tại thành phố Hồ Chí Minh cũng như có thể mở rộng

 Chức năng tìm đường của ứng dụng tối ưu theo nhiều tiêu chí giúp người dùng chủ động hơn, an tâm hơn khi sử dụng xe buýt là phương tiện để đi lại hằng ngày

 Ứng dụng là tiện ích hỗ trợ hơn nữa việc “gắn kết” giữa người dùng với phương tiện xe buýt, góp phần vào chủ trương của thành phố trong việc hạn chế số lượng

xe gắn máy, khuyến khích người dân đi xe buýt nhằm giảm tình trạng ách tắc giao thông , kẹt xe thường xuyên vào giờ cao điểm như hiện nay

 Ứng dụng chạy trên smartphone với giao diện đẹp, dễ sử dụng, độ chính xác cao

do đó hấp dẫn được người sử dụng, đáp ứng được yêu cầu mọi lúc, mọi nơi

 Hiển thị bản đồ Google Maps thay thế Bing Maps mặc định của Windows Phone

 Sử dụng thành công Google Maps API Web Services trên nền Windows Phone

 Xây dựng thành công phương thức giải mã tọa độ thành phần points trong polyline

 Áp dụng thành công các công thức hình cầu Cosines trong việc vẽ hình tròn lên bản đồ nhằm thể hiện phạm vi tìm kiếm

Trang 27

CHƯƠNG 2: NỘI DUNG NGHIÊN CỨU 2.1 Tổng quan về lập trình Windows Phone 8

2.1.1 Bố cục của một ứng dụng

Xét về tổng thể, ứng dụng Windows Phone 8 bao gồm 2 phần:

o Các trang xaml dùng để thiết kế giao diện ứng dụng

o Trang code behind (.cs) dùng để lập trình cho các chức năng của ứng dụng

 Xét về thành phần chính, một ứng dụng Windows Phone 8 bao gồm:

o Thư mục reference: chứa các thư viện cần thiết cho việc sử dụng các lớp

o ApplicationIcon.png: hình ảnh đại diện cho ứng dụng khi được cài đặt trên điện thoại

o App.xaml: file cấu hình của ứng dụng Khi ứng dụng khởi chạy thì file App.xaml sẽ được “quét” trước để kiểm tra cấu hình của ứng dụng

o App.xaml.cs: trang code-behind chứa các đoạn mã của trang App.xaml

o Appmanifest.xml: file cấu hình cho ứng dụng trước khi xuất ra file xap (dùng

để cài đặt trên điện thoại)

o AssemblyInfo.cs: một file cấu hình khác của ứng dụng, chứa thông tin về tên và version

o Backgroung.png: ảnh nền của ứng dụng trên màn hình chính của điện thoại

o MainPage.xaml: đây chính là trang mặc định để xây dựng ứng dụng, ứng dụng cũng có thể tạo thêm nhiều trang hơn nữa tùy thuộc vào mục đích sử dụng

o MainPage.xaml.cs: đây là trang code-behind của trang MainPage.xaml, là nơi

xử lý các chức năng, sự kiện của trang MainPage.xaml

o SplashScreenImage.png: nếu ứng dụng phải mất thời gian để load dữ liệu thì ảnh này sẽ hiện ra, nhưng chỉ xuất hiện vào lần đầu khi chạy ứng dụng

o WMAppManifest.xml: là một file cấu hình khác chứa thông tin về tên, icon, trang mặc định sẽ bắt đầu của ứng dụng Đây cũng là file để người sử dụng bật các ID phục vụ cho các lớp

2.1.2 Tìm hiểu XAML trong lập trình Windows Phone

XAML là từ viết tắt của Extensible Application Markup Language, là ngôn ngữ

đánh dấu dùng để thể hiện các đối tượng trong NET, là một biến thể của XML

(Extensible Markup Language) XAML cho phép người dùng khởi tạo các đối tượng và

các thuộc tính cho từng đối tượng theo cơ chế mở thẻ/đóng thẻ, đồng thời còn cho phép tổ chức các đối tượng theo mô hình thứ bậc

Trang 28

Trong Windows Phone, XAML được sử dụng trong việc tạo lập giao diện người dùng Có thể nói, XAML giúpquy trình làm việc giữa các cá nhân trong quá trình xây dựng và phát triển ứng dụng được đơn giản hơn do khả năng “tách biệt” phần thiết kế giao diện (designer) với phần lập trình logic (coder) cho ứng dụng

XAML cho phép người dùng thiết kế giao diện của ứng dụng Windows Phone trên

cả hai môi trường là Visual Studio và Expression Blend Bên cạnh đó, “sức mạnh” của XAML còn thể hiện trong việc binding cơ sở dữ liệu vào một thành phần (element) được chỉ định trong XAML

2.1.3 Ngôn ngữ C# trong việc xây dựng ứng dụng trên Windows Phone

2.1.3.1 Giới thiệu về C#

C# là ngôn ngữ lập trình hiện đại được xây dựng dựa trên nền tảng của hai ngôn ngữ lập trình mạnh nhất là C++ và Java C# được phát triển bởi đội ngũ các kỹ sư của Microsoft trong đó tâm điểm là Anders Hejlsberg và Scott Wiltamuth Những đặc tính của một ngôn ngữ lập trình hiện đại như việc xử lý ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng và bảo mật mã nguồn…đều có trong C#

C# ngôn ngữ lập trình đơn giản, với việc loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ lập trình trước đó như Java và C++, bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo (virtual base class), do đó tạo thuận lợi hơn cho các nhà phát triển ứng dụng bằng C# C# đơn giản vì phát triển dựa trên nền tảng C/C++ nhưng được cải tiến để làm cho ngôn ngữ ngày càng dễ tiếp cận hơn Một trong những cải tiến đó là loại bỏ sự dư thừa, hoặc thêm những cú pháp mới Chẳng hạn như việc thay thế ba toán tử trong C++ là ::, , và -> bằng một toán tử duy nhất là (dot)

C# là ngôn ngữ lập trình hướng đối tượng C# hỗ trợ tất cả các đặc tính của một ngôn ngữ hướng đối tượng (Object-oriented language) bao gồm sự đóng gói (encapsulation), sự kế thừa (inheritance), và tính đa hình (polymorphism)

C# là ngôn ngữ mạnh mẽ nhưng cũng rất mềm dẻo C# chỉ bị giới hạn bởi khả năng sử dụng của người dùng Hiện nay, C# được sử dụng cho nhiều các dự án khác nhau như là tạo ra ứng dụng xử lý văn bản, ứng dụng đồ họa, bản tính, hay thậm chí những trình biên dịch cho các ngôn ngữ khác

C# là ngôn ngữ ít từ khóa, chỉ hơn 80 từ khóa và mười mấy kiểu dữ liệu Đó là một trong những lý do làm cho C# trở thành một trong những ngôn ngữ được sử dụng phổ biến nhất hiện nay

Trong Windows Phone, C# là ngôn ngữ lập trình chính, đóng vai trò chủ đạo trong việc xây dựng và phát triển ứng dụng

Trang 29

2.1.3.2 Nền tảng ngôn ngữ C#

2.1.3.2.1 Kiểu dữ liệu

Kiểu dữ liệu của một đối tượng là một tín hiệu để trình biên dịch nhận biết kích thước và khả năng của đối tượng đó (chẳng hạn kiểu int có kích thước là 4 byte hay một đối tượng button có thể vẽ và phản ứng khi nhấn,…)

C# là một ngôn ngữ mạnh về kiểu dữ liệu Kiểu dữ liệu trong C# được phân chia theo hai góc độ sau:

Góc độ 1: kiểu dữ liệu được phân làm hai tập hợp đó là kiểu dữ liệu xây dựng sẵn

(built – in) mà ngôn ngữ cung cấp sẵn và kiểu dữ liệu do người lập trình tự định nghĩa (user – defined)

Góc độ 2: kiểu dữ liệu bao gồm kiểu dữ liệu giá trị (value) và kiểu dữ liệu tham

chiếu (reference) Việc phân chi này dựa trên sự khác nhau trong việc lưu kiểu dữ liệu giá trị và tham chiếu trong bộ nhớ Đối với một kiểu dữ liệu giá trị thì sẽ được lưu đúng kích thước thật trong bộ nhớ đã cấp phát là stack Trong khi đó thì địa chỉ của kiểu dữ liệu tham chiếu thì được lưu trong stack nhưng đối tượng thật sự thì lưu trong bộ nhớ heap Việc lưu đối tượng trong bộ nhớ heap rất có ích đối với các đối tượng có kích thước lớn

Tất cả các kiểu dữ liệu xây dựng sẵn là kiểu dữ liệu giá trị ngoại trừ các đối tượng

và chuỗi Và tất cả các kiểu dữ liệu do người dùng định nghĩa ngoại trừ kiểu dữ liệu cấu trúc đều là kiểu dữ liệu tham chiếu

Bảng 2.1: Bảng mô tả một số kiểu dữ liệu đã được xây dựng sẵn

0-255

bool 1 Boolean Giá trị logic (true/false)

short 2 Int16 Số nguyên có dấu giá trị từ -32768

đến 32767

ushort 2 Uint16 Số nguyên không dấu từ 0 – 65535

đến 2.147.483.647

4.294.967.295

Trang 30

decimal 8 Decimal

Có độ chính xác đến 28 con số, được dùng trong tính toán tài chính, kiểu này đòi hỏi phải có hậu tố “m” hay

“M” theo sau giá trị

Kiểu số nguyên có dấu có giá trị trong khoảng :

-9.223.370.036.854.775.808 đến 9.223.372.036.854.775.807

0xffffffffffffffff

2.1.3.2.2 Biến (variable)

Biến là đại lượng được dùng để lưu trữ thông tin về các đối tượng với giá trị cụ thể, xác định tại mỗi thời điểm trong chương trình Giá trị của biến có thể được thay đổi bằng phép gán (=)

Trong C#, cú pháp để khai báo biến có dạng như sau:

<tên kiểu><danh sách các biến>

Trong đó :

 <tên kiểu> là một kiểu dữ liệu hợp lệ bất kỳ trong C#

 <danh sách các biến> là một hay nhiều biến, được phân cách bằng dấu ‘,’

Trong trường hợp cần thiết, có thể khởi tạo giá trị trực tiếp cho biến trong câu lệnh

khai báo: <tên kiểu><tên biến> = <giá trị>;

Trang 31

Dùng từ khóa const: const <tên kiểu><tên hằng> = <giá trị>;

2.1.3.2.4 Các cấu trúc điều khiển

Hầu hết các thuật toán đều có thể cài đặt bằng 3 cấu trúc cơ bản sau:

Cấu trúc tuần tự: các câu lệnh được thực hiện theo thứ tự từ trên xuống và từ trái

sang phải

Cấu trúc rẽ nhánh và lựa chọn: cấu trúc này dùng để “dự đoán và đáp ứng” tất cả

các trường hợp có thể có của thuật toán, nhằm đảm bảo tính đúng đắn của chương trình

Cấu trúc lặp: lặp vòng quá trình thực thi câu lệnh Khi sử dụng cấu trúc lặp, phải

đảm bảo tính dừng cho vòng lặp, tránh trường hợp quá trình lặp diễn ra vô tận, không có điểm dừng

Trong C#, cấu trúc rẽ nhánh được hiện thực thông qua câu lệnh if…then…else… với cú pháp như sau:

If (<điều kiện>) <lệnh 1>;

[else <lệnh 2>;]

Trong đó:

 <điều kiện> thường là một biểu thức logic

 Phần else là không bắt buộc phải có Trường hợp câu lệnh if không có phần else được gọi là câu lệnh if “thiếu”

 <lệnh 1>, <lệnh 2> có thể là câu lệnh đơn, hoặc câu lệnh ghép, hoặc câu lệnh điều khiển

Ý nghĩa: nếu <điều kiện> thỏa (giá trị là true) thì thực hiện <lệnh 1>, ngược lại thì thực hiện <lệnh 2> Như vậy, <lệnh 1>, <lệnh 2> được thực hiện thông qua giá trị đúng/sai của <điều kiện>

Câu lệnh if…else… có thể được mở rộng thành câu lệnh if… else… lồng nhau, tuy nhiên, về bản chất câu lệnh if…else là không thay đổi

Trong C#, cấu trúc lựa chọn được hiện thực thông qua câu lệnh switch…case… với cú pháp như sau:

switch (<biểu thức điều kiện>)

Trang 32

switch(…) Việc sử dụng câu lệnh này, đòi hỏi cuối mỗi case phải có lệnh break nhằm đảm bảo tính đúng đắn cho chương trình

Nhóm nghiên cứu thấy rằng, việc sử dụng câu lệnh switch(…) là một trường hợp biến thể của của câu lênh if…else… Một câu lệnh switch(…) dù phức tạp đến đâu cũng đều có thể chuyển đổi thành công sang câu lệnh if…else… Nhưng, một câu lệnh if…else… chưa chắc có thể chuyển đổi thành công sang câu lệnh switch(…) Nguyên nhân của sự khác biệt đó là do câu lệnh switch(…) chỉ có thể xét điều kiện ở một biểu thức nhất định, sau đó so sánh giá trị của biểu thức đó với từng case cụ thể Trong khi đó, trong câu lệnh if…else… biểu thức điều kiện có thể được tùy biến (chẳng hạn câu lệnh if ban đầu xét điều kiện A, nhưng câu lệnh if sau có thể xét điều kiện B, v.v…)

Việc sử dụng câu lệnh switch(…) hoặc if…else… là tùy thuộc vào tình huống sử dụng Đối với trường hợp chỉ xét điều kiện trên một biểu thức và giá trị của biểu thức đó

có nhiều kết quả thì sự lựa chọn câu lệnh switch(…) trong trường hợp này là cần thiết

Trong C#, cấu trúc lặp được hiện thực thông qua 3 cấu trúc sau:

 Cấu trúc lặp while(…) với cú pháp:

while (<điều kiện>) <lệnh>;

Trong đó:

o <điều kiện> là một biểu thức logic

o <lệnh> có thể là lệnh đơn, khối lệnh, hoặc câu lệnh điều khiển Trong đó, có

ít nhất một câu lệnh trong <lệnh> có tác dụng làm thay đổi việc đánh giá lại

<điều kiện> sau mỗi lần lặp nhằm đảm báo tính dừng cho vòng lặp

Ý nghĩa: khi nào điều kiện còn thỏa thì còn thực hiện <lệnh>

o <điều kiện> thường là biểu thức logic

o <phần hiệu chỉnh> là một hay nhiều biểu thức gán (được phân cách bởi dấu ‘,’) có nhiệm vụ thay đổi trị của các biến ở <phần khởi tạo>

o <lệnh> có thể là câu lệnh đơn, khối lệnh, hoặc câu lệnh điều khiển

Ý nghĩa: khi nào điều kiện còn thỏa thì còn thực hiện lệnh

Trong vòng lặp for(…) thì phần khởi tạo chỉ được thực hiện đúng một lần, <phần hiệu chỉnh> có nhiệm vụ làm thay đổi việc đánh giá lại <điều kiện> sau mỗi lần lặp nhằm đảm bảo tính dừng cho vòng lặp Vòng lặp for( ; ; ) <lệnh>; là vòng lặp vô hạn, không có điểm dừng

Trang 33

o <điều kiện> thường là biểu thức logic

o <lệnh> có thể là câu lệnh đơn, khối lệnh, hoặc câu lệnh điều khiển Trong

<lệnh> phải có ít nhất một câu lệnh làm thay đổi việc đánh giá lại điều kiện sau mỗi lần lặp nhằm đảo bảm tính dừng cho vòng lặp

Ý nghĩa: thực hiện <lệnh> cho đến khi <điều kiện> không còn thỏa

Nhóm nghiên cứu thấy rằng, việc sử dụng ba cấu trúc lặp trên có những điểm chung, điểm riêng sau:

Điểm chung:

o Đều lặp vòng thực thi một số câu lệnh thỏa điều kiện

o Trong các câu lệnh thực thi ở mỗi lần lặp, phải có it nhất một câu lệnh làm thay đổi lại việc đánh giá lại điều kiện lặp nhằm đảm bảo tính dừng cho vòng lặp

o Cấu trúc lặp while (…) và for (…) có thể được chuyển đổi cho nhau

Điểm riêng:

o Phần <lệnh> của vòng lặp do…while (…) luôn được thực hiện ít nhất một lần

do <điều kiện> được kiểm tra sau khi thực hiện lệnh

o Phần <lệnh> của vòng lặp while (…) và for (…) có thể không được thực hiện lần nào, do <điều kiện> được xét trước khi thực hiện lệnh

2.1.3.2.5 C# và lập trình hướng đối tượng

Lập trình hướng đối tượng về bản chất là tạo ra các kiểu dữ liệu mới Mỗi kiểu dữ liệu

đó được đóng gói với những thuộc tính và phương thức riêng đặc trưng cho kiểu dữ liệu

Trang 34

Khi một đối tượng được khởi tạo thì phương thức thiết lập của đối tượng đó sẽ được gọi đầu tiên Phương thức thiết lập có thể là phương thức không tham số, hoặc có tham số hoặc cả hai

Trong việc xây dựng các class thì thuộc tính truy cập có ý nghĩa rất quan trọng, quyết định khả năng các phương thức của lớp cũng như các phương thức của lớp khác có thể nhìn thấy và sử dụng các biến thành viên hay những phương thức bên trong lớp đó ở mức

độ nào Danh sách các thuộc tính và giới hạn truy cập được thể hiện ở bảng sau:

Bảng 2.2: Bảng tóm tắt các thuộc tính truy cập của một lớp trong C#

Thuộc tính Giới hạn truy cập

public

Không hạn chế Những thuộc tính được đánh dấu là public được dùng ở bất kì phương thức nào của lớp bao gồm cả những lớp khác

private Thuộc tính trong lớp A được đánh dấu là private thì chỉ những

phương thức của A mới có quyền truy cập

protected

Thuộc tính trong lớp A được đánh dấu là protected thì chỉ có những phương thức bên trong lớp A và những phương thức dẫn xuất từ lớp A mới có quyền truy cập

internal

Thuộc tính trong lớp A được đánh dấu là internal thì có thể được truy cập bởi những phương thức của bất cứ lớp nào trong cùng khối hợp ngữ với A

protected internal

Thuộc tính trong lớp A được đánh dấu là protected internal thì được truy cập bởi các phương thức của lớp A, các phương thức của lớp dẫn xuất của A, và bất cứ lớp nào trong cùng khối hợp ngữ của A

2.1.4 Tìm hiểu LINQ To SQL

LINQ là viết tắt của từ Language Integrated Query, là ngôn ngữ tích hợp truy vấn,

chỉ có từ phiên bản Visual Studio 2008 và NET Framework 3.5 trở về sau

LINQ To SQL là một phần của LINQ cho phép mô hình hóa cơ sở dữ liệu (CSDL) thành các lớp NET, sau đó người dùng có thể truy vấn cũng như cập nhật CSDL bằng ngôn ngữ LINQ LINQ to SQL hỗ trợ đầy đủ transaction, view và các stored procedure (SP) Đồng thời, cũng cung cấp một cách dễ dàng để thêm khả năng kiểm tra tính hợp lệ của dữ liệu và các quy tắc vào trong mô hình dữ liệu

So với ADO.NET, LINQ cung cấp một cách tiếp cận mới, dễ hiểu trong việc lập trình với CSDL Việc sử dụng LINQ được kết hợp với file DataContext Đây là file chứa mô hình tổ chức CSDL, có được từ việc ánh xạ CSDL

Trang 35

Trong Windows Phone, LINQ To SQL được sử dụng để lập trình với dữ liệu local (SQL Database) của ứng dụng

2.1.4.1 Lấy thông tin từ CSDL:

Cú pháp để lấy thông tin từ CSDL bằng ngôn ngữ LINQ như sau:

<DataContext name> db = new <DataContext name>();

var <tên biến 1> = from <nặc danh> in db.<tên bảng>

[where <điều kiện>]

select <nặc danh>; | select new { <nặc danh>.<tên field>[,…]};

Trong đó: tên biến 1 là danh sách các kết quả nhận được từ truy vấn, DataContext name là tên của file DataContext

2.1.4.2 Cập nhật thông tin CSDL:

Để cập nhật CSDL, trước tiên ta lấy thông tin của đối tượng cần cập nhật, thiết lập lại giá trị và ghi lại vàoCSDL thông qua hàm SubmitChanges()

<DataContext name> db = new <DataContext name>();

<tên bảng><tên biến> = db.<tên bảng>.Single(<điều kiện>);

<tên biến>.<thuộc tính cần thay đổi> = <giá trị thay đổi>;

[<tên biến>.<thuộc tính cần thay đổi> = <giá trị thay đổi>;….]

db.SubmitChanges()

Trong đó: điều kiện là biểu thức có dạng: <nặc danh>=><nặc danh>.<tên thuộc tính><phép so sánh><giá trị so sánh>

2.1.4.3 Thêm dữ liệu vào CSDL

Để thêm dữ liệu vào CSDL, trước tiên ta tạo ra một đối tượng thuộc một lớp (table) của CSDL Sau đó, gán các thông tin cho đối tượng, add đối tượng vào lớp và sử dụng hàm SubmitChanges() để lưu vào CSDL

<DataContext name> db = new <DataContext name>();

<TableName><tên đối tượng> = new <TableName>();

<tên đối tượng>.<tên thuộc tính 1> = <giá trị 1>;

[<tên đối tượng>.<tên thuộc tính 2> = <giá trị 2>; ……… ]

db.<TableNames>.Add(<tên đối tượng>);

db.SubmitChanges();

Trang 36

2.1.4.4 Xóa dữ liệu ra khỏi CSDL

Để xóa dữ liệu ra khỏi CSDL, ta cần phải xác định các đối tượng muốn xóa, sau đó remove đối tượng ra khỏi lớp chứa nó, và dùng hàm SubmitChanges() để lưu vào CSDL

<DataContext name> db = new <DataContext name>();

var <tên biến 1> = from <nặc danh> in db.<TableName>

[where <điều kiện>]

select <nặc danh>;

db.<TableNames>.DeleteAllOnSubmit(<tên biến 1>); db.SubmitChanges();

Trường hợp, chỉ có một đối tượng cần xóa, thì đối tượng đó có thể được xác định như

sau: <tên bảng><tên đối tượng> = db.<tên bảng>.Single(<điều kiện>);

2.1.4.5 Gọi một thủ tục

Để gọi một thủ tục, ta thực hiện như sau:

<DataContext name> db = new <DataContext name>();

var <tên biến> = db.<Tên thủ tục>( [<tham số 1> [, <tham số 2> ……….]]);

Trong đó: tên biến chứa kết quả có được từ thủ tục vừa gọi

2.2 Sử dụng GPS và A-GPS trên Windows Phone

2.2.1 Tổng quan về GPS

GPS là từ viết tắt của Global Positioning System có nghĩa là hệ thống định vị toàn

cầu, dùng để xác định vị trí trên trái đất thông qua các vệ tinh nhân tạo, do Bộ Quốc phòng Mỹ thiết kế, xây dựng, vận hành và quản lý

Phần kiểm soát: có chức năng kiểm soát các vệ tinh đi đúng hướng trên quỹ đạo

và thông tin thời gian chính xác Có tất cả 5 trạm kiểm soát được đặt rải rác trên trái đất, trong đó có 4 trạm hoạt động tự động và 1 trạm làm nhiệm vụ kiểm soát trung tâm Bốn trạm tự động nhận tín hiệu liên tục từ vệ tinh và gửi dữ liệu về trạm

Trang 37

trung tâm Tại đây, dữ liệu sẽ được sửa lại cho đúng và kết hợp với 2 anten khác để gửi lại thông tin cho các vệ tinh

Phần sử dụng: là các thiết bị nhận tín hiệu vệ tinh GPS và người sử dụng các thiết

bị này

GPS hoạt động theo cơ chế sau:

Các vệ tinh GPS bay vòng quanh Trái Đất hai lần trong một ngày theo một quỹ đạo rất chính xác và phát tín hiệu có thông tin xuống Trái Đất Các máy thu GPS nhận thông tin này và bằng phép tính lượng giác tính được chính xác vị trí của người dùng Về bản chất, các máy thu GPS sẽ so sánh thời gian tín hiệu được phát đi từ vệ tinh với thời gian nhận được chúng Độ sai lệnh về thời gian này cho biết máy thu GPS cách vệ tinh bao xa Kết hợp với nhiều khoảng cách đo được từ nhiều vệ tinh, máy thu có thể tính được vị trí của người dùng và hiển thị lên bản đồ

2.2.2 Tổng quan về A-GPS

A-GPS là từ viết tắt của Assisted Global Positioning System, là hệ thống định vị sử

dụng thêm các thông tin trợ giúp thông tin GPS

Hầu hết các thiết bị cầm tay GPS hiện nay (như điện thoại di động, PDA,…) đều ứng dụng công nghệ A-GPS (Assisted GPS) Bởi vì, trong nhiều điều kiện thực tế, việc truyền dẫn tín hiệu GPS giữa vệ tinh và thiết bị nhận trên mặt đất hoạt động rất kém hoặc thậm chí không thể hoạt động, nhất là trong các thành phố lớn nhiều với nhà cao tầng hoặc ở trong không gian kín Và do đó, A-GPS chính là giải pháp cho vấn đề này

A-GPS hoạt động theo cơ chế sau :

Thay cho việc truyền tín hiệu đến vệ tinh, A-GPS kết nối tín hiệu qua một “trạm trung chuyển”, đó là một hệ thống máy chủ hỗ trợ Hệ thống trung gian này xác định vị trí của thiết bị so với các trạm thu phát sóng của các mạng điện thoại trung gian trong khu vực và

từ đó tính toán ra vị trí trên hệ thống GPS Có thể nói, nếu không có sự hỗ trợ của các trạm trung chuyển qua mạng điện thoại di động này, thì thiết bị A-GPS vẫn có thể nhận được tín hiệu từ vệ tinh nhưng không có khả năng giải mã vị trí

Hình 2.1: Cách thức hoạt động của A-GPS

Trang 38

Có thể nói, nếu không có sự hỗ trợ của các trạm trung chuyển qua mạng điện thoại di động này, thiết bị A-GPS vẫn có thể nhận được tín hiệu từ vệ tinh nhưng không có khả năng giải mã vị trí

Nguồn lấy thông

tin

Tín hiệu từ các vệ tinh cùng với tín hiệu từ các cột BTS của nhà cung cấp dịch vụ mạng Tín hiệu từ các vệ tinh

Tốc độ

A-GPS xác định tọa độ nhanh hơn, do có kết nối với các cột BTS (trạm thu phát sóng di động), nhanh hơn kết nối với vệ tinh

Thường mất hàng phút để xác định tọa độ, vì phải mất chừng đó thời gian mới có thể kết nối đến được từ 4 vệ tinh trở lên Và thiết bị phải

ở khu vực thoáng, không bị che chắn

Mức độ tin cậy Tọa độ xác định bởi A-GPS thường có sai số nhiều hơn GPS

Tọa độ xác định bởi GPS thường có chính xác cao (sai lệch trong phạm vi 1m)

Chi phí

A-GPS có thể mất phí, vì phải

sử dụng sóng của nhà cung cấp dịch vụ mạng

GPS kết nối đến các vệ tinhcung cấp miễn phí

Các thiết bị dùng Điện thoại di động Các thiết bị định vị trên ô

tô, máy bay, tàu biển

2.2.3 Sử dụng GPS trên Windows Phone

Trên môi trường lập trình, Windows Phone 8 hỗ trợ việc lấy thông tin vị trí của điện thoại GPS thông qua hai lớp (class) sau:

 GeoCoordinateWatcher class thuộc namespace System.Device.Location

 Geolocator class thuộc namespace Windows.Devices.Geolocation

Hai class trên có những điểm chung, điểm riêng sau:

Trang 39

2.2.3.1 Điểm chung

Cả hai class trên đều hỗ trợ cho việc lấy thông tin vị trí của điện thoại GPS thông qua

cả hai cách:

 Lấy thông tin vị trí của điện thoại tại thời điểm yêu cầu

 Lấy thông tin vị trí của điện thoại một cách liên tục

2.2.3.2 Điểm riêng

Bảng 2.4: Bảng so sánh GeoCoordinateWatcher class và Geolocator class:

GeoCoordinateWatcher class Geolocator class Namespace System.Device.Location Windows.Devices.Geolocation

Nguồn gốc Có từ Windows Phone 7 Chỉ có ở Windows Phone 8

Khả năng truy xuất

- Thuộc tính Position chứa thông tin vị trí của điện thoại

- Hỗ trợ truy xuất thông tin ở chế độ nền (background)

- Không có phương thức start(), stop(), chỉ cần khai báo đối tượng thuộc lớp

- GetGeopostionAsync(): lấy thông tin vị trí của điện thoai

Từ kết quả so sánh trên, nhóm nghiên cứu đề tài quyết định chọn Geolocation class để lấy thông tin vị trí của điện thoại GPS, do khả năng tối ưu hơn của Geolocation so với GeoCoordinateWatcher

2.2.3.3 Sử dụng Geolocation class

Để sử dụng Geolocation class, ta cần phải:

 Khai báo namespace Windows.Devices.Geolocation

 Bật ID_CAP_LOCATION trong file WMAppManifest.xml của ứng dụng

Lớp Geolocation cung cấp cho người dùng truy xuất thông tin vị trí của điện thoại GPS thông qua hai cách sau:

 Truy xuất thông tin vị trí tại thời điểm yêu cầu (single-shot location)

 Truy xuất liên tục thông tin vị trí điện thoại (continuously location)

Trang 40

Việc sử dụng cách truy xuất thông tin nào là tùy thuộc vào yêu cầu của từng ứng dụng

cụ thể Tuy nhiên, nhóm nghiên cứu thấy rằng đối với các ứng dụng chỉ yêu cầu thông tin GPS của điện thoại tại một thời điểm nào đó thì cách 1 là sự lựa chọn tốt nhất, còn đối với các ứng dụng yêu cầu cập nhật liên tục vị trí của điện thoại thì nên chọn cách 2, tuy nhiên việc sử dụng cách này sẽ tiêu tốn năng lượng pin của điện thoại nhiều hơn

2.2.3.3.1 Single-shot location

Để truy xuất thông tin vị trí tại một thời điểm, ta thực hiện các bước sau:

Bước 1: khởi tạo một đối tượng thuộc lớp Geolocation

Bước 2: Thiết lập thuộc tính tùy chọn DesiredAccuracyInMeters cho đối tượng

vừa tạo để xác định độ chính xác mong muốn (đơn vị mét) cho dữ liệu trả về từ việc xác định vị trí

Bước 3: Sử dụng phương thức bất đồng bộ GetPositionAsync() hoặc

GetPositionAsync(Timespan, Timespan) để lấy vị trí của điện thoại Các phương thức trên có thể sử dụng kết hợp với từ khóa await (sử dụng await đòi hỏi phương thức chứa nó phải khai báo async) phía trước để “chờ” các phương thức này hoàn tất nhằm gán thông tin kết quả cho đối tượng thuộc lớp GeoPosition

2.2.3.3.2 Continuously location

Để truy xuất liên tục thông tin vị trí của điện thoại, ta thực hiện các bước sau:

Bước 1: khởi tạo một đối tượng thuộc lớp Geolocation

Bước 2: thiết lập các thông số tùy chọn và khai báo các sự kiện cho đối tượng:

o DesiredAccuracy: bao gồm 2 thông số Default (mặc định) và High, dùng để

thiết lập độ chính xác cho việc truy xuất thông tin vị trí GPS, trong đó:

 Default: sử dụng Wi-Fi hoặc các tháp tín hiệu di động để xác định vị trí tùy thuộc vào sự sẵn có của các nguồn

 High: sử dụng bộ nhận GPS để xác định vị trí, cho độ chính xác cao hơn chế

độ mặc định (default), tuy nhiên có thể làm ảnh hưởng đến hiệu suất hoạt động của ứng dụng

o Movement Threshold: xác định khoảng cách tối thiểu tính bằng mét để phát

sinh sự kiện PositonChanged

Bước 3: Khai báo các sự kiện (event handle) StatusChanged và PositionChanged

cho đối tượng

o StatusChanged là sự kiện được phát sinh khi có sự thay đổi về tình trạng truy

xuất thông tin vị trí của điện thoại với các giá trị sau:

 PositionStatus.Disable: cho biết ứng dụng không được phép sử dụng thông tin GPS hoặc GPS chưa được mở

Ngày đăng: 07/12/2020, 22:49

TỪ KHÓA LIÊN QUAN

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