Đề tài xây dựng một ứng dụng cung cấp một số chức năng hỗ trợ người tham gia xe buýt như tìmđường đi chính xác, trực quan trên bản đồ, xem thông tin lộ trình xe buýt, giá, khoảngcách, tì
Trang 1Tiếp theo, tôi cũng xin chân thành cám ơn quý Thầy, Cô trong khoa Công NghệThông Tin, đặc biệt là chuyên nghành Mạng Máy Tính và Truyền Thông đã tạo rấtnhiều điều kiện để tôi học tập.
Cuối cùng con xin gửi lời biết ơn tới gia đình, nơi đã sinh thành, nuôi dưỡng vàđộng viên con rất nhiều trong thời gian qua
Mặc dù tôi đã có nhiều cố gắng để hoàn thành luận văn bằng tất cả sự nhiệt tình
và năng lực của mình, tuy nhiên do trình độ lý luận cũng như kinh nghiệm thực tiễncòn hạn chế nên bài báo cáo không thể tránh khỏi những thiếu sót, tôi rất mong nhậnđược những đóng góp quý báu của quý Thầy, Cô để tôi có thể có thêm kinh nghiệm rút
ra cho bản thân
TP.HCM, ngày 22 tháng 12 năm 2013
Sinh viên thực hiện
Đỗ Minh Tuấn
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan rằng đây là luận văn tốt nghiệp của riêng tôi dưới sự hướng dẫn
trực tiếp của Th.S Đặng Nhân Cách Những tài liệu và bảng biểu phục vụ cho việc
phân tích, nhận xét, đánh giá được tôi thu thập từ các nguồn khác nhau được trích dẫn
rõ ràng có ghi trong phần “Tài liệu tham khảo“ và không hề sao chép nội dung từ bất
Trang 3MỤC LỤ
MỤC LỤC i
DANH MỤC CÁC TỪ VIẾT TẮT iv
DANH MỤC HÌNH ẢNH v
LỜI MỞ ĐẦU 1
CHƯƠNG 1: KIẾN THỨC NỀN TẢNG 5
1.1 Hệ điều hành Android 5
1.1.1 Những đặc trưng của hệ điều hành Android 6
1.1.2 Các tính năng trong hệ điều hành Android 6
1.1.3 Kiến trúc ứng dụng trongAndroid 7
1.1.4 Các khái niệm cơ bản trong lập trình Android 8
1.2 Cơ sở dữ liệu SQLite 11
1.2.1 Khái niệm về SQLite 11
1.2.2 Ưu điểm của SQLite 12
1.2.3 Nhược điểm của SQLite 12
1.3 Webservice 13
1.3.1 Khái niệm về Webservice 13
1.3.2 Một số đặc điểm cơ bản của Webservice 13
1.3.3 Phân loại Webservice 13
1.3.4 Ưu và nhược điểm Webservice 14
Trang 41.4 Google Maps API Web Services 14
1.4.1 Khái niệm Google Map 14
1.4.2 Khái niệm Google Maps API Web Services 15
1.4.3 Sử dụng Google Maps API Web Services 15
1.4.4 Google Geocoding API 16
1.4.5 Google Directions API 21
CHƯƠNG 2: PHÂN TÍCH XÂY DỰNG ỨNG DỤNG 25
2.1 Mô tả hệ thống ứng dụng 25
2.2 Các yêu cầu về chức năng của ứng dụng 26
2.3 Xây dựng cơ sở dữ liệu 27
2.4 Biểu đồ hoạt động 30
2.4.1 Biểu đồ hoạt động xem thông tin luồng tuyến 30
2.4.2 Biểu đồ hoạt động xem trạm gần 31
2.4.3 Biểu đồ hoạt động thiết lập báo sắp đến 32
2.4.4 Biểu đồ hoạt động tìm đường đi xe buýt 33
2.4.5 Biểu đồ hoạt động xử lý các tính năng bằng giọng nói 34
CHƯƠNG 3: KẾT QUẢ XÂY DỰNG ỨNG DỤNG 35
3.1 Các vấn đề trong quá trình xây dựng ứng dụng 35
3.1.1 Sử dụng bản đồ Google Map 35
3.1.2 Marker, polyline, polygone trên Google Map 39
3.1.3 Sử dụng SQLite 42
3.1.4 Phân tích XML 45
Trang 53.1.5 Đa tiến trình trong Android 46
3.1.6 Truyền dữ liệu giữa các Activity 48
3.1.7 Sử dụng Fragment trong Android 50
3.2 Kết quả các tính năng chính của ứng dụng 52
3.2.1 Tính năng xem danh sách tuyến xe, chi tiết, lộ trình 52
3.2.2 Tính năng định vị người dùng 55
3.2.3 Tính năng xem trạm xe buýt gần nhất 56
3.2.4 Tính năng báo sắp đến 58
3.2.5 Tính năng tìm đường đi giữa 2 điểm 59
3.2.6 Tính năng sử dụng giọng nói 63
3.3 Kiểm tra và đánh giá ứng dụng 64
3.3.1 Xây dựng kịch bản kiểm tra 64
3.3.2 Dữ liệu kiểm tra 65
3.3.3 Kết quả kiểm tra 66
CHƯƠNG 4: KẾT LUẬN 68
4.1 Kết quả đạt được của đề tài 68
4.2 Ưu khuyết điểm của ứng dụng 69
4.2.1 Ưu điểm 69
4.2.2 Khuyết điểm 69
4.3 Hướng phát triển trong tương lai 70
TÀI LIỆU THAM KHẢO 71
Trang 6DANH MỤC CÁC TỪ VIẾT TẮT
Trang 7DANH MỤC HÌNH ẢNH
Hình 1.1: Kiến trúc và các thành phần của hệ điều hành Android 7
Hình 1.2: Vòng đời của Activity 9
Hình 1.3: Vòng đời của Service 10
Hình 1.4: Cấu trúc View trong Android 11
Hình 1.5: Webservice 13
Hình 1.6: Kết quả XML Google Geocoding API 21
Hình 2.1: Dữ liệu bảng tuyen_xe sau khi cập nhật 28
Hình 2.2: Dữ liệu bảng tram_xe sau khi cập nhật 29
Hình 2.3: Biểu đồ hoạt động xem thông tin luồng tuyến 30
Hình 2.4: Biểu đồ hoạt động xem trạm gần 31
Hình 2.5: Biểu đồ hoạt động thiết lặp báo sắp đến 32
Hình 2.6: Biểu đồ hoạt động tìm đường đi xe buýt 33
Hình 2.7: Biểu đồ hoạt động sử dụng giọng nói 34
Hình 3.1: Giao diện điều khiển của Google APIs Console 35
Hình 3.2: Kích hoạt Google Maps Android APIv2 36
Hình 3.3: Giao diện đăng ký ứng dụng Google Maps cho Android 36
Hình 3.4: Đăng ký ứng dụng Google Maps cho Android 37
Hình 3.5: Bản đồ Google Maps trên Android 38
Hình 3.6: Marker trên bản đồ Google Maps 40
Hình 3.7: Vẽ vòng tròn trong Android 42
Trang 8Hình 3.8: Giao diện chức năng chính 52
Hình 3.9: Giao diện thông tin luồng tuyến 53
Hình 3.10: Giao diện chi tiết tuyến xe 53
Hình 3.11: Giao diện lộ trình xe buýt 54
Hình 3.12: Giao diện các trạm xe buýt 54
Hình 3.13: Tính năng định vị người dùng 55
Hình 3.14: Thông tin một điểm bất kỳ 56
Hình 3.15: Menu chức năng 57
Hình 3.16: Hiện thị các trạm gần 57
Hình 3.17: Thiết lập báo sắp đến 58
Hình 3.18: Thông báo sắp đến 59
Hình 3.19: Giao diện tìm kiếm 60
Hình 3.20: Giao diện tìm kiếm theo điểm 60
Hình 3.21: Giao diện kết quả tìm kiếm 61
Hình 3.22: Hiển thị đường đi trên bản đồ 61
Hình 3.23: Giao diện chia sẽ dữ liệu 62
Hình 3.24: Chia sẽ dữ liệu qua SMS 62
Hình 3.25: Sử dụng chức năng giọng nói 63
Hình 3.26: Giao diện chức năng giọng nói 63
Trang 9LỜI MỞ ĐẦU
1 Tính cấp thiết của đề tài:
Trong giao thông công cộng có rất nhiều loại phương tiện như xe đạp, xe máy…
và đặc biệt là xe buýt Mục tiêu của TP.HCM là phát triển hệ thống xe buýt làm nềntảng cho sự phát triển bền vững hệ thống giao thông công cộng, thu hút người dân đi xebuýt, góp phần giảm ùn tắt giao thông, tạo nếp sống văn minh đô thị
Hiện nay nhu cầu tìm đường đi và thông tin các tuyến xe buýt của hành khách,đặc biệt là sinh viên đang rất cần thiết, tuy nhiên công cụ hỗ trợ cho nhu cầu này hiệnnay là rất ít và chưa được hoàn hảo
Với nhu cầu đó, đề tài “Xây dựng ứng dụng tra cứu thông tin, tìm đường xe buýt kết hợp nhận diện giọng nói” đã được chọn để nghiên cứu, tìm hiểu Đề tài xây
dựng một ứng dụng cung cấp một số chức năng hỗ trợ người tham gia xe buýt như tìmđường đi chính xác, trực quan trên bản đồ, xem thông tin lộ trình xe buýt, giá, khoảngcách, tìm các trạm xe xung quanh vị trí của mình và đặc biệt là ứng dụng còn hỗ trợngười dùng sử dụng giọng nói trong việc tìm kiếm đường đi
2 Tình hình nghiên cứu:
Vấn đề ứng dụng tra cứu, tìm kiếm xe buýt đã xuất hiện trên nền tảng web như
trên trang http://map.ebms.vn/ của sở giao thông vận tải TP.HCM, tuy nhiên trên nền
tảng thiết bị di động Android thì vẫn còn ít và chưa đầy đủ các tính năng cần thiết.Ứng
dụng của chính Google thì dữ liệu xe buýt đã cũ, các tuyến mới chưa được cập nhật
nên đã gây khó khăn cho người sử dụng
Điển hình ứng dụng trên nền tảng di động Android đó là ứng dụng Pbus của một
nhóm sinh viên Đại Học Bách Khoa TP.HCM Trên nền tảng Ios thì có ứng dụng
IUBUS của sinh viên trường Đại Học Khoa Học Tự Nhiên TP.HCM.
Trang 103 Mục đích nghiên cứu:
Đề tài được xây dựng nhằm tạo ra một ứng dụng hữu ích, hỗ trợ đặc biệt cho sinhviên, người dân khi đi xe buýt để đảm bảo những thông tin chính xác, nhanh chóng, tiếtkiệm chi phí, thời gian cho người dùng, đặc biệt có thể góp phần thu hút người dân đi
xe buýt
Người dùng có thể chủ động thiết lập địa điểm để thông báo khi gần đến để tránh
đi quá lộ trình cần đi, đồng thời ứng dụng còn sử dụng hệ thống nhận diện giọng nói để
hỗ trợ người dùng khi không thể thao tác bằng tay
4 Nhiệm vụ nghiên cứu:
- Khảo sát lộ trình của các tuyến xe buýt trong Thành Phố Hồ Chí Minh
- Khảo sát tọa độ của từng trạm của các tuyến xe buýt
- Tìm kiếm, lựa chọn và so sánh để đưa ra các tuyến đường tốt nhất
- Hiển thị những cảnh báo khi người dùng gần tới hoặc khi đi xa địa điểm cầnthiết
- Hỗ trợ nhận diện giọng nói cho người dùng khi không thể thao tác bằng tay
5 Phương pháp nghiên cứu:
- Tham khảo dữ liệu các tuyến xe buýt, các trạm xe buýt cùng các tọa độ của cáctrạm trên website của sở giao thông vân tải TP.HCM
- Tham khảo tài liệu giấy từ nguồn luận văn của thư viện trường
- Tham khảo các lý thuyết cơ bản của Android thông qua các API được Googleđưa lên chính website của mình
- Phần mềm của nhóm tự động lưu dữ liệu xe buýt từ trang web của sở giao thôngvận tải về cơ sở dữ liệu
Trang 11- Thử nghiệm dữ liệu hiển thị trên điện thoại di động Android.
6 Các kết quả đạt được của đề tài:
- Hiển thị thông tin dữ liệu của tất cả các tuyến xe buýt trong TP.HCM như lượt
đi, lượt về, giá vé…
- Xem lộ trình của tuyến xe trực quan trên bản đồ
- Bắt vị trí hiện tại bằng GPS hoặc mạng
- Chức năng xem nhanh các trạm quanh vị trí hiện tại hoặc một điểm trên bản đồ
- Tính toán địa chỉ hiện tại, cung cấp thông tin độ chính xác và nguồn lấy vị tríhiện tại
- Tìm kiếm giữa 2 địa điểm, kết quả trả về ưu tiên chuyển tuyến ít nhất, thời gian
7 Kết cấu của Luận Văn Tốt Nghiệp
Luận Văn Tốt Nghiệp bao gồm 4 chương, tên của từng chương như sau:
Chương 1: Kiến thức nền tảng.
Nội dung chương 1 trình bày các khái niệm của hệ điều hành Android, kiến thức,
lý thuyết cơ bản, các công nghệ và cơ sở dữ liệu nhằm để xây dựng ứng dụng
Chương 2: Phân tích xây dựng ứng dụng.
Nội dung chương 2 trình bày các bước để xây dựng, phân tích mô tả ứng dụng,các yêu cầu tính năng cần thiết của ứng dụng, cơ sở dữ liệu và các biểu đồ
Trang 12Chương 3: Kết quả xây dựng ứng dụng.
Nội dung chương 3 trình bày các vấn đề khi xây dựng ứng dụng, kết quả các tínhnăng chính của ứng dụng, kiểm tra và đánh giá ứng dụng
Chương 4: Kết luận.
Nội dung chương 4 trình bày các kết quả đạt được của ứng dụng, ưu điểm vànhược điểm của ứng dụng, hướng phát triển của ứng dụng
Trang 13CHƯƠNG 1: KIẾN THỨC NỀN TẢNG 1.1 Hệ điều hành Android
Android là một hệ điều hành dựa trên nền tảng Linux thiết kế dành cho các thiết
bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng
Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tàichính từ Google và sau này được chính Google mua lại vào năm 2005 Android ra mắtvào năm 2007 và chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm
2008[2]
Android có mã nguồn mở và Google phát hành mã nguồn theo giấy phép Apache.Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phépcác nhà phát triển thiết bị mạng di động và các lập trình viên nhiệt huyết được điềuchỉnh và phân phối Android một cách tự do
Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo, chuyên viết cácứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java.Vào tháng 10 năm 2012, có khoảng 700.000 ứng dụng trên Android và số lượt tải ứngdụng từ Google Play ước tính khoảng 25 tỷ lượt[2]
Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổbiến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010, và được các công ty côngnghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, vàgiá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu
Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo lập trình viên vànhững người đam mê sử dụng mã nguồn mở để tạo ra những dự án do cộng đồng quảnlý
Trang 14Những dự án này bổ sung các tính năng cao cấp cho những người dùng thích tìmtòi hoặc đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác.
1.1.1 Những đặc trưng của hệ điều hành Android
- Application framework: cho phép sử dụng lại và thay thế các thành phần tronglập trình ứng dụng
- Dalvik virtual machine: tối ưu hóa cho thiết bị di động
- Intergrated browser: trình duyệt tích hợp, dựa trên cơ chế WebKit mã nguồnmở
- SQLite: cơ sở dữ liệu trong môi trường di động
- Media support: hỗ trợ các định dạng audio, video và hình ảnh thông dụng
- GSM Telephony: mạng điện thoại di động (phụ thuộc vào phần cứng)
- Bluetooth, EDGE, 3G, và WiFi :các chuẩn kết nối dữ liệu (phụ thuộc vào phầncứng)
- Camera, GPS, la bàn, và gia tốc kế: (phụ thuộc vào phần cứng)
1.1.2 Các tính năng trong hệ điều hành Android
Các tính năng được hổ trợ tùy thuộc vào cấu hình phần cứng và phần mềm
- Storage: Sử dụng SQLite, một cơ sở dữ liệu quan hệ nhẹ cho việc lưu trữ dữliệu
- Connectivity: Hỗ trợ GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth(bao gồm AD2P và AVRCP), Wifi, LTE và WiMAX
- Messaging: hỗ trợ cả SMS và MMS
- Web browser: Dựa trên mã nguồn mở Webkit, cùng với công nghệ JavaScriptV8 của Chrome
Trang 15- Hardware support: Accelerometer Sensor, Camera, Digital Compass, ProximitySensor và GPS.
- Multi-touch: Hỗ trợ màn hình cảm ứng đa điểm
- Multi-tasking: Hỗ trợ ứng dụng đa tác vụ
1.1.3 Kiến trúc ứng dụng trongAndroid
Mô hình sau thể hiện đầy đủ kiến trúc các thành phần của hệ điều hành Android
Hình 1.1: Kiến trúc và các thành phần của hệ điều hành Android [8]
Linux kernel (nhân Linux)
Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và tầng dướicủa phần mềm Lớp này chứa tất cả các thiết bị mức thấp điều khiển các thành phầnphần cứng khác nhau của một thiết bị Android
Trang 16Libraries bao gồm một tập hợp các thư viện lập trình chứa mã lệnh cung cấpnhững tính năng và thao tác chính trên hệ điều hành Các thư viện được tập hợp thànhmột số nhóm như: System C Library, Media Libraries, LibWebCore, SurfaceManager, SGL, SQLite, Free Type, SSL, Open GL/EL
Android runtime
Tại cùng một tầng với Libraries, Android runtime cung cấp một bộ lõi thư việncho phép các nhà phát triển viết các ứng dụng android bằng cách sử dụng ngôn ngữ lậptrình java Tầng này có 2 bộ phận bao gồm thư viện lõi (Core Library) và một máy ảojava tên là Davik (Davik Virtual Machine)
Framework
Android cung cấp cho các nhà phát triển khả năng xây dựng các ứng dụng cực kỳphong phú và sáng tạo Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệthống, bao gồm các View, Content Provider, Resource Manager, Notification Manager,Activity Manager
Applications
Đây là lớp ứng dụng giao tiếp với người dùng Các ứng dụng cho android cũngnhư các ứng dụng được tải về và cài đặt từ AndroidMarket hay bất kỳ ứng dụng nàođược viết được tại tầng này
Các ứng dụng phải viết bằng Java và có phần mở rộng là apk Khi mỗi ứng dụngđược chạy, nó có một máy ảo Davik được dựng lên để phục vụ cho nó
1.1.4 Các khái niệm cơ bản trong lập trình Android
Activity
Activity là một thành phần rất quan trọng của bất kỳ ứng dụng Android nào
Trang 17Một activity thể hiện một giao diện đồ họa người dùng Mỗi activity là một lớpcon của lớp cơ sở Activity Lớp Activity đảm nhận việc tạo ra một cửa sổ (window) đểngười lập trình đặt lên đó một giao diện UI.
Một Activity có thể mang nhiều dạng khác nhau: một cửa sổ toàn màn hình (fullscreen window), một cửa sổ floating (với windowIsFloating) hay nằm lồng bên trongmột Activity khác (với ActivityGroup)[8]
Sau đây là sơ đồ các sự kiện trong vòng đời của một Activity:
Hình 1.2: Vòng đời của Activity [7]
Trang 18Trong khi kết nối, người sử dụng có thể giao tiếp với service thông qua giao diện
mà service đó trưng ra
Sơ đồ các sự kiện trong vòng đời của một service:
Hình 1.3: Vòng đời của Service [8]
Trang 19Content provider
Một content provider tạo ra một tập cụ thể các dữ liệu của ứng dụng khả dụng chocác ứng dụng khác Dữ liệu có thể được lưu trữ trong hệ thống file, trong một cơ sở dữliệu SQLite
Hình 1.4: Cấu trúc View trong Android [7]
Trang 20Là cầu nối giữa các Activity: Ứng dụng Android thường bao gồm nhiều Activity,mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau.Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng như truyền các dữliệu cần thiết tới một Activity khác
1.2 Cơ sở dữ liệu SQLite
1.2.1 Khái niệm về SQLite
SQLite là hệ thống cơ sở dữ liệu quan hệ nhỏ gọn, hoàn chỉnh được Richard Hippviết dưới dạng thư viện bằng ngôn ngữ lập trình C
SQLite là một bộ thư viện dùng trong lập trình để hiện thực một SQL DatabaseEngine có khả năng tự tổ chức quản lý dữ liệu, không cần server, không cần cấu hình
mà vẫn hỗ trợ đầy đủ các tính năng quản lý thao tác SQLite hiện đang là SQLDatabase Engine được sử dụng nhiều nhất trên thế giới do tính cơ động cao, dễ sửdụng, gọn nhẹ, hiệu quả và tin cậy[7]
1.2.2 Ưu điểm của SQLite
SQLite có các ưu điểm sau:
- Tin cậy : Các hoạt động transaction (chuyển giao) trong cơ sở dữ liệu đượcthực
hiện trọn vẹn, không gây lỗi khi xảy ra sự cố phần cứng
- Không cần cài đặt cấu hình
- Tuân theo chuẩn SQL92
- Kích thước chương trình gọn nhẹ
- Không cần phần mềm phụ trợ
- Phần mềm tự do với mã nguồn mở được chú thích rõ ràng
Trang 211.2.3 Nhược điểm của SQLite
Ngoài các ưu điểm kể trên thì SQLite cũng có những nhược điểm sau nếu đem sosánh với các CSDL mạnh khác như Oracle Database, SQL Server:
- Tính đồng thời: SQLite sử dụng cơ chế khóa Coarse-gained Locking có thể hỗ
trợ nhiều người đọc dữ liệu, nhưng chỉ có một người có thể ghi dữ liệu một lúc màthôi
- Kết nối mạng: Các lỗ hỏng trong việc triển khai các hệ thống tập tin trong môitrường mạng có thể gây ra nhiều lỗi do các tập tin có thể bị mở và điều chỉnh từ xa
- Chỉ phù hợp với các ứng dụng có quy mô dữ liệu nhỏ: SQLite không phải là lựachọn lý tưởng để đáp ứng các nhu cầu xử lý trên một khối dữ liệu lớn, phát sinh liêntục
1.3 Webservice
1.3.1 Khái niệm về Webservice
Webservice là sự kết hợp các máy tính cá nhân với các thiết bị khác, các cơ sở dữliệu và các mạng máy tính để tạo thành một cơ cấu tính toán ảo mà người sử dụng cóthể làm việc thông qua các trình duyệt mạng hoặc ứng dụng có kết nối mạng
Hình 1.5: Webservice [1]
Trang 221.3.2 Một số đặc điểm cơ bản của Webservice
Một webservice có thể được truy cập thông qua web
Một webservice có giao diện dịch vụ Giao diện này giúp cho webservice có thểđược gọi bởi bất kỳ một ứng dụng nào hay bởi webservice nào khác
1.3.3 Phân loại Webservice
Dịch vụ ứng dụng và dịch vụ hệ thống (Application and System Service)
Một Application Service thể hiện một hành động của user như duyệt thư email,hay kiểm tra tỷ số hối đoái Một System Service thể hiện yêu cầu của kiến trúc hệthống và sự quản lý như bảo mật, lưu trữ và chịu lỗi, quản lý transaction hay essaging.Một dịch vụ có hai đặc điểm chính: Interface và Registration Sử dụng Interface,một dịch vụ có thể được gọi từ một chương trình khác Một Service được đăng kýtrong một Registry
1.3.4 Ưu và nhược điểm Webservice
- Nâng cao khả năng tái sử dụng
- Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành hoạtđộng, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanhnghiệp khác
Trang 23Nhược điểm:
- Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của Dịch vụ Web, giaodiện không thay đổi, có thể lỗi nếu một máy khách không được nâng cấp, thiếu cácgiao thức cho việc vận hành
- Có quá nhiều chuẩn cho dịch vụ Web khiến người dùng khó nắm bắt
- Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật
1.4 Google Maps API Web Services
1.4.1 Khái niệm Google Map
Google Maps là một dịch vụ ứng dụng và công nghệ bản đồ trực tuyến trên webmiễn phí, được cung cấp 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ứ bathông qua Google Maps API Nó cho phép thấy bản đồ đường phố, đườ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
Năm 2006, Google đã giới thiệu một ứng dụng Java có tên là Google Maps forMobile Mục đích để chạy trên bất kỳ thiết bị di động nào có cung cấp nền tảng Java.Rất nhiều tính năng chính của phiên bản Google Maps trên web có mặt trong ứngdụng
1.4.2 Khái niệm Google Maps API Web Services
Google Maps API Web Services là một tập các giao diện HTTP cung cấp thôngtin địa lý cho ứng dụng
Google Maps API Web Services bao gồm:
Directions API
Distance Matrix API
Trang 24 Elevation API
Geocoding API
Time Zone API
1.4.3 Sử dụng Google Maps API Web Services
Google Maps API cung cấp các dịch vụ như là các giao diện phục vụ cho việcyêu cầu dữ liệu địa lý và sử dụng dữ liệu đó trong ứng dụng của nhà phát triền Cácdịch vụ này được thiết kế để sử dụng với một ứng dụng bản đồ
Các Google Maps API Web Services sử dụng chuỗi yêu cầu HTTP tới một đườngdẫn URL đặc biệt và gửi các thông số URL tới các services
URL request thường có dạng như sau:
https://maps.googleapis.com/maps/api/service/output?parameters
Theo dõi sử dụng với tham số sensor
Sử dụng Google Maps API yêu cầu nhà phát triển phải chỉ ra rằng ứng dụng có sửdụng một cảm biến (ví dụ cảm biến GPS) để xác định vị trí người dùng trong bất cứyêu cầu nào cho service Điều này là đặc biệt quan trọng cho các thiết bị di động
Trang 25Nếu ứng dụng Google Maps API sử dụng bất cứ dạng cảm biến để xác định vị trícủa thiết bị phải thiết lập giá trị của tham số sensor = true
Kết quả trả về
Kết quả trả về của Google Direction API khá dễ hiểu nhưng lại ít thân thiện vớingười sử dụng Khi gởi yêu cầu và nhận được kết quả, tốt nhất là không hiển thị tất cảnhững gì nhận được mà chỉ cần trích xuất một số thông tin phù hợp Tóm lại là cầnphải phân tích cú pháp kết quả nhận được và chỉ trích xuất một số thông tin có ích
1.4.4 Google Geocoding API
Mã hóa địa lý là gì
Mã hóa địa lý là quá trình chuyển địa chỉ sang tọa độ địa lý để đánh dấu trên bản
đồ Có thể mô tả mã hóa địa lý giống như chuyển đổi từ “Ngã tư hàng xanh” qua tọa
độ địa lý bao gồm vĩ độ 10.802740 và kinh độ 106.695590
Ngoài ra dich vụ Google Geocoding API còn cho phép giải mã từ tọa độ địa lýsang địa chỉ cụ thể
Google Geocoding API cung cấp một phương thức trực tiếp để truy cập bộ mãhóa địa lý thông qua giao thức HTTP
Giới hạn sử dụng
Google Geocoding API giới hạn ở 2.500 truy vấn mỗi ngày Nếu trả phí con sốnày tăng lên 100.000 truy vẫn mỗi ngày Các giới hạn này được đặt ra để ngăn chặn sựlạm dụng dịch vụ Nếu vượt quá giới hạn này ứng dụng sẽ không thể truy cập được sau
24 giờ, nếu tiếp tục vượt ở 24 giờ tiếp theo thì dịch dụ Geocoding API có thể sẽ chặnứng dụng
Trang 26Geocoding API request
Chuỗi request URL thường có dạng như sau:
http://maps.googleapis.com/maps/api/geocode/output?parameters
HTTPS được khuyến cáo sử dụng cho các ứng dụng có dùng những dữ liệu nhạycảm của người dùng:
https://maps.googleapis.com/maps/api/geocode/output?parameters
Output có thể là xml hoặc json
- Tham số của chuỗi request URL:
Một số tham số là bắt buộc phải được gán giá trị, một số là tùy chọn Trong mộtchuỗi URL hợp chuẩn mỗi tham số được phân cách bằng ký tự (&)
address(bắt buộc): Địa chỉ muốn mã hóa địa lý.
latlng(bắt buộc): Giá trị kinh độ - vĩ độ của điểm muốn lấy địa chỉ gần
nhất
region(tùy chọn): Mã vùng, dùng hệ thống tên miền quốc gia.
language(tùy chọn): Thiết lập ngôn ngữ sẽ trả về trong kết quả.
sensor(bắt buộc): Cho biết yêu cầu tìm đường có phải đến từ một thiết bị
có cảm biến vị trí hay không True hoặc false
Kết quả mã hóa địa lý
Geocoding API sẽ trả về một trong hai loại tập tin là JSON hoặc XML
Chuỗi request URL:
http://maps.googleapis.com/maps/api/geocode/json?address=cho%20ba
%20chieu&sensor=false&language=vi-VI
Cấu trúc tập tin trả về có hai phần tử gốc:
Trang 27 status: Thông báo trạng thái của kết quả.
result: Chứa một tập thông tin kết quả.
- Thẻ status có các trạng thái sau:
OK: Kết quả trả về bình thường.
ZERO_RESULTS: Địa chỉ không tồn tại hoặc giá trị kinh độ - vĩ độ không
đúng
OVER_QUERY_LIMIT: Thông báo đã gởi quá số lượng yêu cầu trong một
khoảng thời gian
REQUEST_DENIED: Ứng dụng đã bị dịch vụ Google Geocoding API
chặn
INVALID_REQUEST: Thông báo chuỗi request URL không hợp lệ.
- Thẻ result có các trạng thái sau:
type[]: Một tập thẻ type cho biết kiểu của kết quả trả về Chứa một hay nhiều kiểu của địa danh, ví dụ khi mã hóa địa lý Ngã tư hàng xanh sẽ trả
về hai giá trị type là political và locality
formatted_address: Địa chỉ bằng chữ.
address_component[]: Chứa một mảng các thành phần địa lý.
- Mỗi thẻ address_component chứa:
type[]: Kiểu của thành phần địa lý.
long_name: Tên đầy đủ của thành phần địa lý.
short_name: Tên viết tắt của thành phần địa lý.
- Các giá trị của type:
street_address: Địa chỉ đường.
Trang 28 route: Địa chỉ tuyến đường (chỉ có ở Mĩ).
intersection: Ngã tư lớn, giao nhau giữa hai con đường chính.
political: Địa chỉ hành chính
country: Quốc gia, là địa chỉ cấp cao nhất.
administrative_area_level_1: Địa chỉ hành chính cấp 1 dưới cấp quốc gia,
ở Việt Nam là tỉnh hoặc các thành phố trực thuộc Trung ương, ở Mỹ làbang
administrative_area_level_2: Địa chỉ hành chính cấp 2 dưới cấp quốc gia.
Ở Việt Nam là các quận của thành phố trực thuộc Trung ương
administrative_area_level_3: Địa chỉ hành chính cấp 3 dưới cấp quốc gia.
Chỉ có ở Mỹ và một số quốc gia
locality: Thành phố hoặc thị xã.
sublocality: Địa chỉ hành chính dưới cấp locality.
neighborhood: Khu phố.
premise: Một địa điểm được đặt tên, thường là một tòa nhà hoặc một cụm
các tòa nhà được đặt chung tên
subpremise: Cấp dưới của premise, thường là một tòa nhà nằm trong một
Trang 30Hình 1.6: Kết quả XML Google Geocoding API
1.4.5 Google Directions API
Google Directions API là dịch vụ tính toán đường đi giữa hai điểm sử dụngHTTP request Có thể tìm kiếm đường đi bằng nhiều chế độ bao gồm tìm đường đibằng xe ôtô, đi xe máy hay đi bộ
Thông tin đầu vào của điểm đầu, điểm kết thúc, điểm trung gian có thể ở dạng tênxác định địa điểm hay giá trị kinh độ và vĩ độ Direction API có thể trả về nhiều hướng
đi khác nhau sử dụng một tập các điểm trung gian
Giới hạn sử dụng
Google Direction API cho phép 2.500 truy vấn mỗi ngày Mỗi lần tính toánhướng đi có thể sử dụng tối đa 9 điểm trung gian Nếu có nhu cầu cao hơn, có thể sử
Trang 31dụng Google Direction API cho doanh nghiệp với tối đa 100.000 truy vấn mỗi ngày và
23 điểm trung gian ở mỗi truy vấn
Google Direction request
- Cấu trúc của chuỗi request URL:
Chuỗi request URL của Google Diriection có dạng như sau:
http://maps.googleapis.com/maps/api/directions/output?parameters
Giá trị của output có thể là json hoặc xml
Có thể sử dụng HTTPS để truy xuất Google Direction API nếu chuỗi truy xuất cóbao gồm các thông tin nhạy cảm
https://maps.googleapis.com/maps/api/directions/output?parameters
- Các tham số của chuỗi URL request
Một số tham số là bắt buộc, một số là tùy chọn Được phân cách bằng ký tự “&”.Dưới đây là danh sách các tham số có thể tham gia vào một chuỗi Google DirectionURL:
origin(bắt buộc): Địa chỉ hay giá trị kinh độ - vĩ độ của điểm mà từ đó bạn
muốn tìm đường đi
destination(bắt buộc): Địa chỉ hay giá trị kinh độ - vĩ độ của điểm muốn
tìm đường đi đến
mode(bắt buộc, mặc định là driving): Xác định kiểu di chuyển (đi bộ, lai
xe) khi tính toán hướng đi
waypoints(tùy chọn): Xác định một tập hợp điểm trung gian mà đường đi
phải đi qua Tham số cho điểm trung gian có thể là địa chỉ hay kinh độ - vĩ
độ
region(tùy chọn): Mã vùng, bao gồm 2 ký tự xác định vùng.
Trang 32 sensor(bắt buộc): Cho biết yêu cầu tìm đường có phải đến từ một thiết bị
có cảm biến vị trí hay không True hoặc false
Kết quả trả về Google Direction
- Cấu trúc kết quả trả về:
Kết quả Google Direction trả về sẽ ở 2 dạng tập tin là xml và json
Mặc định chỉ có một giá trị route nhận được trong kết quả trả về, trừ khi muốn kếtquả trả về hơn hai tuyến đường
Nút gốc trong tài liệu Xml trả về có 2 thẻ con là:
status: Thông báo trạng thái của kết quả hoặc thông tin sự cố.
route: Mỗi thẻ route chứa một tuyến đường đi riêng biệt từ điểm đầu đến
điểm cuối
- Thẻ status gồm có các trạng thái sau:
OK: Kết quả trả về bình thường.
NOT_FOUND: Một điểm nào đó nhập vào không thể mã hóa địa lý để lấy
kinh độ - vĩ độ
ZERO_RESULTS: Không thể tìm thấy đường đi.
MAX_WAYPOINTS_EXCEEDED: Thông báo vượt quá giới hạn các điểm
trung gian được cho phép
INVALID_REQUEST: Thông báo chuỗi yêu cầu không hợp lệ.
OVER_QUERY_LIMIT: Thông báo đã gởi quá số lượng yêu cầu trong một
khoảng thời gian
REQUEST_DENIED: Ứng dụng đã bị dịch vụ Google Directions chặn.
Trang 33 UNKNOWN_ERROR: Lỗi không xác định.
Mỗi thẻ route chứa thông tin về một tuyến đường phân biệt từ điểm xuất phát đến điểm cần đến.Trong mỗi thẻ route có thể bao gồm các thẻ con sau:
summary: Tên tóm tắc của đoạn đường.
legs[]: Chứa một tập hợp các thẻ <leg> mô tả đường đi giữa hai điểm.
waypoint_order: Chứa một mảng qui định thứ tự xắp xếp của các điểm
trung gian
overview_polyline: Chứa một đối tượng giữ một mảng các điểm đã mã hóa
đại diện cho một con đường trả về trong kết quả
bounds: Quy định hình chữ nhật bao chung quanh tuyến đường trên bản
đồ
copyrights: Chứa thông tin bản quyền.
warnings[] : Chứa một tập các cảnh báo cho người dùng.
Trang 34CHƯƠNG 2: PHÂN TÍCH XÂY DỰNG ỨNG DỤNG 2.1 Mô tả hệ thống ứng dụng
Về các tuyến xe buýt
Hiện tại trong nội thành Thành phố Hồ Chí Minh có hơn 150 tuyến xe buýt khác
nhau Mỗi tuyến xe sẽ phải cung cấp các thông tin: mã tuyến, tên tuyến, lộ trình lượt đi
và lượt về, loại hình hoạt động, khoảng cách, số chuyến 1 ngày, thời gian hoạt động, giá vé, thông tin đơn vị đảm nhận.
Xe chạy tính bằng đơn vị phút, giá vé, cự ly toàn tuyến có đơn vị ki-lô-mét, ngoài
ra còn lưu giữ thông tin đường đi tuyến xe buýt để hiển thị lên bản đồ, bao gồm cả lộ
trình lượt đi và lượt về được hiển thị chi tiết trên bản đồ Google Maps.
Về tìm kiếm xe buýt giữa 2 địa điểm
Tìm kiếm xe buýt giữa 2 địa điểm, có thể là từ vị trí hiện tại của mình tới 1 vị trínào đó, hoặc là giữa 2 vị trí bất kỳ Người dùng có thể linh hoạt hơn trong việc chọn 2
vị trí trên bản đồ để tìm kiếm
Tìm kiếm xe buýt ưu tiên trả về kết quả chuyển tuyến ít nhất, thời gian đi ngắnnhất và khoảng cách giữa 2 địa điểm đi bằng xe buýt ngắn nhất
Về sử dụng giọng nói
Trang 35Đảm bảo sử dụng giọng nói để có thể truy cập mọi tính năng của ứng dụng.
2.2 Các yêu cầu về chức năng của ứng dụng
Ứng dụng sẽ xây dựng sẽ đảm bảo các chức năng chính sau :
Chức năng hiển thị thông tin các tuyến xe buýt
Cung cấp danh sách các tuyến xe buýt với các thông tin quan trọng Hiển thịthông tin chi tiết từng tuyến
Hiển thị lộ trình của tuyến xe buýt trên bản đồ Google Map, kèm theo 1 danhsách các trạm tương ứng, khi chọn trạm thì sẽ chỉ đến trạm đó trên bản đồ kèm theo cácthông số như mã tram, địa chỉ sẽ hiển thị
Chức năng tuyến xe ưa thích
Người dùng có thể thiết lập tuyến xe ưa thích của riêng mình
Thiết lập tuyến xe ưa thích giúp người dùng có thể truy cập nhanh tuyến xe màmình muốn tìm, không phải tìm kiếm dựa vào các tuyến xe buýt
Chức năng tìm kiếm đường đi giữa 2 địa điểm
Đảm bảo kết quả trả về ưu tiên các tuyến đường với tiêu chí chuyển tuyến ít nhất,thời gian đi ngắn nhất và khoảng cách ngắn nhất
Chức năng báo sắp đến
Thiết lập 1 địa điểm hoặc 1 trạm xe buýt với 1 bán kính tùy thích Khi đến trongvòng bán kính đó thì điện thoại sẽ rung lên thông báo cho người dùng biết
Chức năng nhận diện giọng nói
Đảm bảo việc sử dụng giọng nói trong ứng dụng bao gồm việc xem lộ trình của
xe buýt, tìm đường, tìm trạm gần quanh vị trí hiện tại, báo sắp đến
Khẩu lệnh truy vấn các chức năng phải ngắn gọn, rõ ràng, dễ hiểu và sử dụng
Trang 362.3 Xây dựng cơ sở dữ liệu
Chương trình sử dụng 2 bảng:
- Bảng tuyen_xe:
LuotDi Lộ trình lượt đi của tuyến xe
LuotVe Lộ trình lượt về của tuyến xe
TheLoai Loại hình hoạt động của xe buýt
KhoangCach Khoảng cách đi của tuyến xe
SoChuyen Số chuyến xe buýt trong một ngày
ThoiGianChuyen Thời gian đi của một tuyến
GianCach Thời gian chờ giữa 2 tuyến xe
ThoiGianHoatDong Thời gian hoạt động của tuyến xe
MaTramLuotDi Tất cả mã trạm lượt đi của tuyến xe
MaTramLuotVe Tất cả mã trạm lượt về của tuyến xe
ToaDoLuotDi Tất cả tọa độ các điểm để vẽ lộ trìnhlượt đi.
ToaDoLuotVe Tất cả tọa độ các điểm để vẽ lộ trìnhlượt về.
ToaDoMaTramLuotDi Tất cả tọa độ các trạm lượt đi
ToaDoMaTramLuotVe Tất cả tọa độ các trạm lượt về
Trang 37Bảng 2.1 : Cấu trúc bảng tuyen_xe Bảng tuyen_xe chứa đựng thông tin của hơn 150 tuyến xe buýt tại Thành Phố Hồ
Chí Minh, dữ liệu xe buýt được cập nhật từ trang web của sở Giao Thông Vận TảiTP.HCM[6] để đảm bảo tính chính xác
Ngoài các trường về thông tin xe buýt còn có thêm ToaDoLuotDi, ToaDoLuotVe
dùng để lưu trữ các tọa độ các điểm Từ đó sẽ giúp cho việc vẽ lộ trình trên bản đồGoogle Maps bằng cách nối tất cả các tọa độ lại với nhau
Thông tin dữ liệu của bảng tuyen_xe sau khi đã cập nhật dữ liệu từ web:
Hình 2.1: Dữ liệu bảng tuyen_xe sau khi cập nhật
- Bảng tram_xe :
Trang 38ViDo Vĩ độ của trạm.
TuyenDiQua Tất cả mã các tuyến xe buýt đi ngang
trạm
Bảng 2.2: Cấu trúc bảng tram_xe Bảng tram_xe chứa thông tin tọa độ của từng trạm xe trong Thành Phố, kèm theo
địa chỉ của từng trạm Đặc biệt có chưa thêm thông tin của từng tuyến xe đi ngang trạm
thông qua trường TuyenDiNgang.
Thông tin dữ liệu bảng tram_xe sau khi cập nhật dữ liệu từ web:
Hình 2.2: Dữ liệu bảng tram_xe sau khi cập nhật
Trang 392.4 Biểu đồ hoạt động
2.4.1 Biểu đồ hoạt động xem thông tin luồng tuyến.
Hình 2.3: Biểu đồ hoạt động xem thông tin luồng tuyến
Trang 402.4.2 Biểu đồ hoạt động xem trạm gần.
Hình 2.4: Biểu đồ hoạt động xem trạm gần