Khi cài đặt Android Client, việc quan trọ ng nhất là thực hiện đƣợc liên lạc vớ i
web server và phân tích đƣợc dữ liệu dạng JSON do server trả về. Việc kết nối tới
server phải sử dụng một Thread riêng để không làm treo ứng dụng đang chạy. Thread
này sẽ dùng một Handler để thực thi một đối tƣợng Runnable trong đó gọi hàm cập
nhật b ản đồ hoặc danh sách.
59 trang |
Chia sẻ: lylyngoc | Lượt xem: 2915 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Luận văn Hỗ trợ phát hiện và thông báo ùn tắc giao thông trên android, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
e
Giao diện lập trình
5 MVC Model-View-Controller
6 ASP Active Server Page
7 JSON Javascript Object Notation
1
Chương 1. TỔNG QUAN
1.1 Yêu cầu và lý do thực hiện đề tài
Hiện nay, tắc đƣờng đang là vấn đề chung của các thành phố lớn nhƣ Hồ Nội và
Thành phố Hồ Chí Minh. Tắc đƣờng không chỉ gây thiệt hại về kinh tế mà còn kéo
theo nhiều hậu quả xã hội nghiêm trọng. Các cơ quan chức năng đã có nhiều cố gắng
đề ra các giải pháp chống tắc đƣờng. Từ các giải pháp kỹ thuật nhƣ là phân làn đƣờng,
bịt các ngã tƣ, tăng cƣờng ngƣời chỉ huy ở các nút giao thông hay bị ùn tắc đến giải
pháp tận dụng sức mạnh cộng đồng nhƣ là thực hiện chƣơng trình VOV giao thông,
tăng cƣờng giáo dục, tuyên truyền, kêu gọi ý thức của ngƣời tham gia giao thông. Tuy
nhiên, do mật độ tham gia giao thông quá lớn, cơ sở hạng tầng không đủ đáp ứng
đƣợc, một phần ý thức của ngƣời tham gia giao thông chƣa cao, nên các biện pháp đề
ra chƣa mang lại hiệu quả nhƣ mong muốn.
Thực tế, hiện tƣợng tắc đƣờng chỉ thƣờng xuyên xảy ra ở một số điểm cố định
vào các giờ cao điểm. Nếu chúng ta có cách thông báo cho mọi ngƣời tham gia giao
thông biết đƣợc đoạn đƣờng nào đang bị ùn tắc thì có thể giảm đƣợc số điểm ùn tắc.
Trong thời gian qua, chƣơng trình VOV giao thông của đài tiếng nói Việt Nam
đã ra đời và nhận đƣợc sự hƣởng ứng tích cực của mọi ngƣời. Cách làm của chƣơng
trình VOV giao thông đó là cùng với ngƣời tham gia giao thông và các cộng tác viên
tại các điểm hay xảy ra ùn tác phát hiện và thông báo tình trạng giao thông qua làn
sóng radio. Tuy nhiên, nhƣợc điểm của VOV giao thông là vì sử dụng chƣơng trình
phát thanh nên thông tin chỉ đến đƣợc với số ít ngƣời tham gia giao thông, thông tin
đƣợc truyền tải dƣới dạng âm thanh nên ít trực quan, giảm bớt tính hiệu quả của thông
tin.
Hƣớng đến một cách tiếp cận khác đó là thông qua môi trƣờng Internet và các
thiết bị di động, em đã chọn đề tài khóa luận “Hỗ trợ phát hiện và thông báo ùn tắc
giao thông trên nền Android“. Bài toán đƣợc giải quyết chủ yếu dựa vào dịch vụ
Google Map và các thiết bị sử dụng hệ điều hành Android. Google Maps là dịch vụ đã
phổ biến trên thế giới cũng nhƣ ở Việt Nam. Ở các thành phố lớn trên thế giới,
Google Maps có tích hợp thông tin giao thông vào bản đồ ở chế độ Traffic View. Tuy
nhiên, ở Việt Nam, dịch vụ này không hỗ trợ cũng nhƣ chƣa có dịch vụ nào tƣơng tự.
Android cũng là hệ điều hành mã nguồn mở của Google. Hệ điều hành di động này có
thể cài đặt trên nhiều thiết bị, có các giao diện lập trình tích hợp với dịch vụ Google
Maps.
Chƣơng 1: TỔNG QUAN
2
1.2 Mục tiêu của đề tài:
Mục tiêu của đề tài là nhằm đƣa ra một giải pháp bổ sung, khả thi cùng với các
phƣơng tiện khác nhƣ VOV giao thông đƣa thông tin giao thông đến cho ngƣời sử
dụng Internet di động trên các điện thoại, cụ thể là Android.
1.3 Hướng tiếp cận của luận văn:
Giải pháp đƣa ra là sử dụng cùng nguồn thông tin nhƣ VOV Giao thông, có thể
là các cộng tác viên, những ngƣời tham gia giao thông để phát hiện ra điểm tắc đƣờng,
chỉ định điểm tắc đƣờng cụ thể trên bản đồ, có mô tả về thời gian tắc, thời gian dự kiến
kết thúc. Phần mềm thực hiện hai nhiệm vụ chính là xác định điểm tắc đƣờng trên bản
đồ, công việc này đƣợc xử lý ở Server, truy cập và hiển thị lại thông tin trên các thiết
bị di động, phần này đƣợc thực hiện ở Client.
Các công việc chính của đề tài bao gồm:
o Tìm hiểu và cài đặt Server trên nền ASP.NET MVC.
o Tìm hiệu dịch vụ Google Map, và các giao diện lập trình đƣợc hỗ trợ để
tích hợp với phần Server và Client.
o Tìm hiểu và cài đặt Client trên nền điện thoại di động Android.
3
Chương 2. CÁC KỸ THUẬT ĐƯỢC SỬ DỤNG
2.1 Giới thiệu về Android
Android đƣợc phát triển bởi tập đoàn Google, phiên bản đầu tiên ra đời năm
2008. Đƣợc xây dựng trên ột nền tảng mở, và một bộ thƣ viện đa năng, mạnh mẽ với
nguyên lý mở, Android đã nhanh chóng đƣợc cộng đồng lập trình viên di động hƣởng
ứng mạnh mẽ. Nền tảng Android tích hợp nhiều tính năng nổi bật:
- Android là một hệ điều hành nhân Linux, đảm bảo sự tƣơng tác với các phần
cứng, quản lý bộ nhớ, điều khiển các tiến trình tối ƣu cho các thiết bị di động.
- Bộ ứng dụng khung cho phép sử dụng lại và thay thế các thành phần riêng lẻ.
- Máy ảo Dalvik đƣợc tối ƣu cho các thiết bị di động, chạy các ứng dụng lập trình
trên ngôn ngữ Java.
- Các thƣ viện cho phát triển ứng dụng mã nguồn mở bao gồm SQLite, WebKit,
OpenGL và trình quản lý đa phƣơng tiện.
- Hỗ trợ các chuẩn đa phƣơng tiện phổ biến, thoại trên nền GSM, Bluetooth
EDGE, 3G và Wifi
- Hỗ trợ Camera, GPS, la bàn, máy đo gia tốc…
- Bộ phát triển ứng dụng SDK đầy đủ gồm thiết bị giả lập, công cụ sửa lỗi, tích
hợp với Eclipse SDK.
2.1.1 Phát triển ứng dụng trên Android
2.1.1.1 Cấu trúc của các tầng phần mềm trên Android
Cấu trúc của Android đƣợc chia theo tầng các phần mềm bao gồm tầng ứng
dụng (Application Layer), Ứng dụng khung (Application Framework), Các thƣ viện
(Libraries), Android Runtime và nhân Linux (Linux Kernel).
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
4
Hình 2.1 Cấu trúc của các tầng phần mềm trên Android1
- Android Runtime: Bao gồm máy ảo Dalvik và các thƣ viện Android.
o Các thư viện cơ bản: Các ứng dụng Android đƣợc phát triển trên môi
trƣờng Java, nhƣng Dalvik lại không phải là một Java VM. Các thƣ viện
cơ bản của Android cung cấp hầu hết các chức năng có trong thƣ viên cơ
bản của Java cũng nhƣ là thƣ viện riêng của Android.
o Máy ảo Dalvik: Dalvik là máy ảo để chạy các ứng dụng trên Android,
đã đƣợc tối ƣu để đảm bảo rằng một thiết bị có thể chạ đƣợc nhiều
Instance một cách hiệu quả. Nó dựa vào nhân Linux để thực hiện đa
luồng và quản lý bộ nhớ cấp thấp.
- Tầng ứng dụng khung: Cung cấp các lớp đƣợc sửa dụng để tạo ra các ứng
dụng trong Android. Nó cũng cung cấp các lớp trừu tƣợng truy cập phần cứng
và quản lý tài nguyên của ứng dụng.
1
Nguồn: Reto Meier. Professional Android™ Application Development. Indiana : Wiley Publishing,
Inc., 2008, trang 13.
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
5
- Tầng ứng dụng: Tất cả các ứng dụng, bao gồm ứng dụng sẵn có và ứng dụng
từ nhà cung cấp thứ 3 đƣợc xếp vào tầng Ứng dụng với cùng một thƣ viện các
giao diện lập trình(API). Tầng ứng dụng chạy trong Android Runtime (Dalvik)
sử dụng các lớp và dịch vụ có sẵn trong lớp Ứng dụng khung.
2.1.1.2 Kiến trúc ứng dụng trên Android
Kiến trúc của Android khuyến khích khái niệm Thành phần sử dụng lại, cho
phép công bố và chia sẻ các Activity, Service, dữ liệu, với các ứng dụng khác với
quyền truy cập đƣợc quản lý bởi khai báo.
Cơ chế đó cho phép ngƣời lập trình tạo ra một trình quản lý danh bạ hoặc trình
quay số điện thoại mà có các thành phần ngƣời khác có thể tạo mới giao diện và mở
rộng chức năng thay vì tạo lại chúng.
Những dịch vụ sau là những dịch vụ kiến trúc cơ bản nhất của tất cả các ứng
dụng, cung cấp một framework cho mọi mọi phần mềm đƣợc xây dựng:
- Actitvity Manager: Điều khiển vòng đời của các Activity bao gồm cả quản lý
các tầng Activity.
- Views: Đƣợc sử dụng để tạo lập cá giao diện ngƣời dùng cho các Activity
- Notification Mamager: Cung cấp một cơ chế cố định và quy củ cho việc gửi
các thông báo đến ngƣời dùng.
- Content Provider: Cho phép ứng dụng chia sẻ dữ liệu giữa các ứng dụng.
- Resource Manager: Hỗ trợ các thành phần không thuộc mã nguồn nhƣ là
chuỗi ký tự, đồ họa đƣợc đặt bên ngoài.
2.1.1.3 Các thư viện trên Android
Android cung cấp một số các APIs cho phát triển ứng dụng. Danh sách các API
cơ bản sau đƣợc cung cấp bởi tất cả các thiết bị trên nền Android:
- android.util: Gói tiện ích cơ bản bao gồm nhiều lớp mức thấp nhƣ là các lớp
quản lý (List, Stack…) lớp xử lý chuỗi, lớp xử lý XML
- android.os Gói hệ điều hành cung cấp truy cập đến các dịch vụ cơ bản nhƣ là
chuyển tin nhắn, thông tin chéo, đồng hồ và gỡ lỗi.
- android.graphics Cung cấp các lớp đồ họa mức thấp thực hiện các chức năng
đồ họa, màu, vẽ cơ bản.
- android.text Công cụ hiển thị và xử lý văn bản
- android.database Cung cấp các lớp mức thất bắt buộc cho việc điều khiển
cursor khi làm việc với các cơ sở dữ liệu
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
6
- android.content Các giao tiếp lập trình nội dung đƣợc dùng để quản lý truy
cập dữ liệu và xuất bản bằng cách cung cấp các dịch vụ thao tác với tài nguyên,
Content Provider, và các gói
- android.view View là lớp giao diện ngƣời dùng cơ bản nhất. Tất cả giao diện
ngƣời dùng đƣợc tạo ra đều phải sử dụng một tập các View để cung cấp cho các
thành phần tƣơng tác ngƣời dùng.
- android.widget Xây dựng dựa trên gói View. Những lớp Widget những thành
phần giao diện đƣợc tạo sẵn đƣợc sử dụng để tạo nên giao diện ngƣời dùng. Các
Widget bao gồm danh sách, nút bấm, hộp nhập, các kiểu trình bày(layout)
- com.google.android.maps bộ API mức cao cung cấp truy cập đến điều khiển
bản đồ sẵn trong Androif từ ứng dụng đƣợc xây dựng. Bao gồm cả lớp
MapView cũng nhƣ Overlay và MapController để tƣơng tác với bản đồ bên
trong ứng dụng.
- android.app Một gói thƣ viện bậc cao, cung cấp truy cập đến dữ liệu của ứng
dụng. Gói ứng dụng cũng bao gồm lớp Activity và Service là thành phần cơ bản
của mọi ứng dụng Android.
- Android.provider Để tạo thuận lợi cho ngƣời phát triển truy cập đến các
Content Provider tiêu chuẩn(nhƣ là dữ liệu danh bạ), gói Cung cấp(Provider)
bao gồm các lớp cho phép truy cập đến cơ sở dữ liệu chuẩn trong tất cả các bản
phân phối Android.
- Android.telephony Các API điện đàm cung cấp khả năng tƣơng tác trực tiếp
với tầng điện thoại trong các thiết bị, cho phép tạo, nhận, theo dõi các cuộc gọi,
tình trạng các cuộc gọi và tin nhắn SMS.
- android.webkit Gói WebKit cung cấp các API để làm việc với các nội dung
Web-based bao gồm một lơp WebView để tạo ra giao diên web, nhúng trong
ứng dụng và một trình quản lý cookie.
- Cùng với các API của Android, còn có một tập các thƣ viện C/C++ nhƣ:
o OpenGL Thƣ viện dùng để tạo ra các đồ họa 3D dựa vào chuẩn
OpenGLES 1.0 API
o FreeType Hỗ trợ xử lý bitmap và font vector
o GGL Thƣ viện cơ bản, dùng để cung cấp các engine đồ họa 2D
o Libc Thƣ viện C chuẩn, đƣợc tối ƣu cho các thiết bị Linux-based
o SQLite Engine cơ sở dữ liệu quan hệ gọn nhẹ, dùng để lƣu trữ dữ liệu
của ứng dụng
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
7
o SSL Hỗ trợ sử dụng giao thức mã hóa Secure Sockets Layer trong bảo
mật truyền thông Internet
- Ngoài các thƣ viện chuẩn của Android, để đáp ứng tiêu chí phù hợp với nhiều
thiết bị khác nhau, Android còn có thể có các API phụ thuộc thiết bị nhƣ
android.location, android.media, android.opengl, android.hardware,
android.bluetooth, android.net.wifi, và android.telephony. [1]
2.1.1.4 Các thành phần của ứng dụng Android
2.1.1.4.1 Activity
Một Activity là đại diện cho một giao diện ngƣời dùng, tiếp nhận tƣơng tác
ngƣời dùng với ứng dụng. Ví dụ một Activity có thể là một danh sách các mục mà
ngƣời dùng có thể chọn lựa hoặc là một của sổ trình diễn ảnh với các thông tin khác.
Một ứng dụng có thể có một hoặc nhiều Activity. Việc di chuyển giữa các
Activity đƣợc thực hiện bằng cách từ Activity hiện tại mở ra Activity mới
Giao diện của Activity đƣợc quy định bởi một đối tƣợng View có trật tự. Một
View là một vùng hình chữ nhật bên trong cửa sổ màn hình. Một View cũng có thể
chứa nhiều View khác. View có thể đƣợc tạo mới thông qua việc thừa kế lớp View
hoặc khai báo thông qua file XML.
Một activity có 3 trạng thái chính:
- Active hoặc running khi nó ở trên nhất màn hình và nhận tƣơng tác ngƣời
dùng
- Paused khi Activity không còn là trọng tâm trên màn hình nhƣng vẫn hiện thị
trƣớc ngƣời dùng.
- Stopped Khi một activity hoàn toàn bị che khuất, nó sẽ rơi vào trạng thái
Stopped. Tuy nhiên, nó vẫn còn lƣu trữ toàn bộ thông tin trạng thái. Và nó
thƣờng bị hệ thống đóng lại khi có tình trạng thiếu bộ nhớ.
Khi chuyển giữa các trạng thái, ứng dụng sẽ gọi các hàm callback ứng với các
bƣớc chuyển:
void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
8
Sơ đồ chuyển trạng thái đƣợc biểu diễn nhƣ hình dƣới.
Hình 2.2 Sơ đồ chuyển trạng thái của Activity2
2.1.1.4.2 Service
Một Service không có giao diện và chạy ngầm trong khoảng thời gian không
xác định. Ví dụ, một Service có thể chơi nhạc ở chế độ ngầm khi ngƣời dùng chuyển
ra khỏi trình nghe nhạc. Mỗi Service đề đƣợc mở rộng từ lớp cơ sở là Service trong gói
android.app. Có thể kết nối tới hoặc kích hoạt một Service thông qua interface mà
Service đƣa ra.
2
Nguồn: Application Fundamentals, 20/5/2010,
fundamentals.html
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
9
Cũng giống nhƣ Activity và cũng và những thành phần khác, các dịch vụ chạy
trong luồng chính của ứng dụng.
Vòng đời của một service
Hình 2.3 Sơ đồ chuyển trạng thái của Service3
2.1.1.4.3 Broadcast receiver
Một Broadcast receiver là một thành phần mà không làm gì khác ngoài việc
nhận các thông báo đƣợc broadcast.
Một ứng dụng có thể có nhiều broadcast receiver để đáp lại những thông báo
đƣợc phát đến. Tất cả các broadcast receiver đƣợc thừa kế từ lớp cơ sở
BroadcastReceiver.
Một Broadcast receiver không có giao diện nhƣng nó có thể thực hiện gọi một
Activity hay là sử dụng NotificationManager để thông báo cho ngƣời dùng.
3
Nguồn: Application Fundamentals, 20/5/2010,
fundamentals.html
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
10
2.1.1.4.4 Content Provider
Một Content Provider tạo ra một tập các dữ liệu cụ thể nào đó của ứng dụng
cung cấp cho các ứng dụng khác. Các lớp Content Provider thừa kế từ cơ sở
ContentProvider để cài đặt một số hàm tiêu chuẩn cho phép ứng dụng khác nhận và
lƣu trữ dữ liệu.
2.1.1.4.5 Manifest file
File AndroidManifest.xml là file có cấu trúc XML đƣợc dùng để khai báo các
thành phần trong ứng dụng Android. Nó cũng là nơi để khai báo các quyền truy cập
của ứng dụng cũng nhƣ các thƣ viện cần thiết.
2.1.1.4.6 Các thành phần khác
Ngoài các thành phần chính ở trên, còn có các thành phần khác nhƣ Resource
bao gồm các file đồ họa, âm thanh, string,… và các thƣ viện do nhà cung cấp thứ 3.
Tham khảo thêm về các thành phần trong [2].
2.2 Giới thiệu về ASP.NET MVC
2.2.1 ASP.NET
2.2.1.1 Đặc điểm của ASP.NET
ASP.NET có tên đầy đủ là Active Server Page .NET. ASP.NET là mô hình phát
triển ứng dụng Web hợp nhấ bao gồm nhiều dịch vu cho phép xây dựng các ứng dụng
Web tiên tiến với số code nhỏ nhất. ASP.NET là một phần của .NET Framework, khi
lập trình với ASP.NET ngƣời lập trình có thể sử dụng các thự viện của .NET
Framework. ASP.NET hỗ trợ lập trình với nhiều ngôn ngữ nhƣ là MS Visual Basic,
C#, Jscript .NET và J#, các ngôn ngữ này đều phải tƣơng thích với “Common
Language Runtime” (CLR). Các ngôn ngữ đều đƣợc dịch ra mã IL.
ASP.NET là ngôn ngữ lập trình hƣớng đối tƣợng sử dụng các ngôn ngữ .NET.
Nó cung cấp bộ các đối tƣợng nhỏ và thực sự là một tầng làm việc trên nguyên lý của
HTTP và HTML. Mã nguồn không đƣợc truy cập toàn bộ các đối tƣợng trong .NET
Framework nhƣng có thể khai thác tất cả các quy ƣớc của một môi trƣờng OOP
(Object Oriented Programming). Thiết kế hƣớng đối tƣợng giúp tạo các lớp, giao diện,
kế thừa các lớp.
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
11
Hình 2.4 Vị trí của ASP.NET trong .NET Framework4
Một ứng dụng ASP.NET luôn luôn đƣợc biên dịch, nó không chạy bằng mã của
C# hoặc Visual Basic mà không đƣợc biên dịch trƣớc. Một ứng dụng ASP.NET thực
sự đƣợc biên dịch thông qua 2 giai đoạn:
- Giai đoạn đầu tiên những các mã (C#, Visual Basic hoặc ngôn ngữ .NET khác)
đƣợc dịch bởi Microsoft Intermediate Language (MSIL). Giai đoạn dịch này
đƣợc dịch tự động khi trang web đầu tiên yêu cầu. Các file đƣợc dịch thành mã
IL (Intermediate Language Code).
- Giai đoạn tiếp theo đƣợc dịch trƣớc khi trang Web đƣợc thực thi. Tại giai đoạn
này mã IL đƣợc dịch thành bản mã máy (Native Machine Code). Giai đoạn này
đƣợc gọi là Just-In-Time (JIT).
Khía cạnh quang trọng nhất của công cụ ASP.NET là nó chạy trong môi trƣờng
thời gian thực (Runtime) của CLR (Common Language Runtime). CLR là máy ảo
4
Nguồn: .NET Framework, 20/5/2010,
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
12
(virtual machine) trong Microsoft .NET, do có ngôn ngữ trung gian IL nên việc phát
triển ứng dụng trên .NET sẽ không bị phụ thuộc vào thiết bị, có nghĩa là ứng dụng
.NET có thể chạy trên bất kỳ thiết bị nào có .NET Framework. Tất cả các namespace,
các ứng dụng, các lớp trong bộ .NET Framework đƣợc gọi tắt là bộ quản lý mã. CLR
cũng cung cấp các dịch vụ quan trọng khác nhƣ:
- Quản lý bộ nhớ
- Thu nhặt rác trong bộ nhớ
- Quản lý các luồng
- Xử lý ngoại lệ
- Bảo mật
Mọi sự cài đặt .NET Framework đều cung cấp các lớp nhƣ nhau. Để triển khai
ứng dụng ASP.NET chỉ cần sao chép các tập tin vào thƣ mục ảo trên máy chủ (server)
và máy chỉ chỉ cần có .NET Framework.
Việc cấu hình dễ dàng đơn giản không phụ thuộc vào IIS (Internet Information
Services). Cấu hình trong ASP.NET đƣợc đặt trong file web.config. File web.config
đƣợc để cùng với thƣ mực chứa trang web. File web.config không bao giờ bị khóa, Nó
có thể truy cập bất kỳ lúc nào, việc sửa file này hoàn toàn dễ dàng vì chúng đƣợc lƣu
dƣới dạng XML.
2.2.1.2 Một số khái niệm mới trong ASP.NET 3.5
2.2.1.2.1 ASP.NET AJAX
Trong ASP.NET 2.0, ASP.NET AJAX đƣợc cài đặt thêm vào. Tuy nhiên trong
ASP.NET 3.5, ASP.NET AJAX đã đƣợc tích hợp. vào trong .NET Framework, do đó
quá trình xây dựng giao diện ngƣời dùng đƣợc dễ dàng và trực quan. ASP.NET AJAX
Control Extenders đã đƣợc tích hợp ToolBox của Visual Studio 2008.
2.2.1.2.2 LINQ
LINQ (Language Integrated Query) đƣa ra khả năng lập trình mới trong
.NET. Giải pháp lập trình hợp nhất, đem đến khả năng truy vấn dữ liệu theo cú pháp
SQL trực tiếp trong C# hay VB.NET, áp dụng cho tất cả các dạng dữ liệu từ đối tƣợng
đến Cơ sở dữ liệu quan hệ và XML.
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
13
Hình 2.5 Cấu trúc LINQ5
2.2.2 ASP.NET MVC
2.2.2.1 Khái niệm MVC
MVC là một phƣơng pháp cài đặt chia một ứng dụng thành 3 phần với vai trò
khác nhau : Model, View, Controller.
- Model trong một ứng dụng MVC là thành phần giữa vai trò quản lý các trạng
thái của ứng dụng. Trạng thái này thƣờng đƣợc lƣu trữ bên trong một cơ sở dữ
liệu(ví dụ: một lớp Product đại diện cho dữ liệu trong bảng Products của một
server SQL).
- View là thành phần đảm nhận chức năng hiển thị giao diện ngƣời dùng của ứng
dụng. Giao diện này thƣờng đƣợc tạo ra từ dữ liệu của Model(ví dụ nhƣ chúng
ta có thể tạo ra một màn hình chỉnh sửa là “Edit Product” có các textbox,
dropdown, và checkbox biểu thị trạng thái hiện thời của một Product)
- Controller là thành phần đáp lại những tƣơng tác ngƣời dùng, thao tác với
model và cuối cùng chọn một View phù hợp để trình bày kết quả. Trong một
5
Nguồn: What is LINQ, 20/5/2010,
What-LINQ.aspx
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
14
ứng dụng MVC, View chỉ hiển thị thông tin, còn Controller mới thao tác với
các dữ liệu do ngƣời dùng nhập vào.
Hình 2.6 Cấu trúc của mô hình MVC trên môi trường Web6
Lợi ích to lớn của phƣơng pháp MVC là giúp chia chƣơng trình ra thành các
phần riêng lẻ, tạo ra sự minh bạch giữa dữ liệu, điều khiển, và hiển thị. Điều này
khiến cho việc kiểm thử, bảo trì một hệ thống MVC dễ dàng và tiết kiệm hơn
nhiều.
2.2.2.2 Một vài chi tiết về ASP.NET MVC
2.2.2.2.1 Cấu trúc một dự án trong Visual Studio
Một project ASP.NET MVC trong Visual Studio có cấu trúc nhƣ sau:
Hình 2.7 Cấu trúc dự án ASP.NET MVC trong Visual Studio 2008
6
Nguồn: S. Sanderson, 2009, Pro ASP.NET, trang 41
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
15
- /App_Data thƣờng dùng để chứa các file dữ liệu, thƣờng là các file *.mdf
hoặc *.mdb, cũng có thể là cái file dữ liệu dạng xml.
- /bin. Thƣ mục chứa các file đã đƣợc biên dịch cũng nhƣ các thƣ viện tham
chiếu của ứng dụng
- /Content thƣờng đƣợc dùng để chứa các file tĩnh nhƣ là đồ họa, âm thanh
hoặc CSS.
- /Controllers Lƣu trữ các lớp Controller (Các lớp thừa kế từ lớp cơ sơ là
Controller hoặc cài đặt giao diện IController).
- /Models Thƣ mục chứa các lớp model
- /Views. Đây là nơi lƣu trữ các file View có phần mở rộng là *.aspx, *.ascx.
Mỗi file đều đƣợc chứa trong thƣ mục con tƣơng ứng với tên của Controller.
- /Views/Shared: chứa các file template và không thuộc một Controller cụ thể
nào cả, ví dụ nhƣ file master page, file 404.html…
- Default.aspx: không thực hiện một chức năng hiển thị nào cả, chỉ đơn giản là
file mặc định để chỉ định vào cấu hình URL của ứng dụng
- Global.asax Lƣu trữ các chỉ dẫn map URL, cũng nhƣ là cài đặt các quy định
khởi động, tắt ứng dụng khi cần thiết.
- Web.config Là file có cấu trúc XML, lƣu trữ toàn bộ các cấu hình của ứng
dụng.
2.2.2.2.2 Truyền dữ liệu từ Controller sang View
Việc truyền Model từ Controller sang View có thể thực hiện theo nhiều cách.
Đơn giản là thực hiện gọi hàm:
return View("MyView", modelObject);
Nếu cần truyền nhiều dữ liệu khác, có thể sử dụng Mảng ViewData trong
Controller để truyền dữ liệu:
ViewData[“dataname”] = modelObject;
ViewData sẽ đƣợc truyền qua View và sử dụng trở lại bằng cách lấy giá trị của
ViewData[“dataname”].
2.2.2.2.3 Dữ liệu động trong View của MVC
Các View đƣợc khai báo theo định dạng HTML. Vì thế không sẽ không có
đƣợc những ứng dụng tốt nếu nhƣ chỉ làm việc với các dữ liệu tĩnh. Có nhiều cách để
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
16
thêm dữ liệu động trong View của MVC. Có thể sử dụng Inline Code, HTML helpers,
Server controls, Partial views, và phƣơng thức Html.RenderAction(). Trong đó sử
dụng Inline code cho những phần nhỏ đƣợc khuyến khích trong ASP.NET MVC.
Inline code đƣợc đặt khai báo bằng thẻ . Ví dụ khi viết mã trong HTML là:
Information about .
2.3 Giới thiệu về Google Maps
Hiện tại, có nhiều nhà cung cấp dịch vụ bản đồ trực tuyến miễn phí nhƣ là
Google, Yahoo, Microsoft, và Amazon… Google là hãng cung cấp dịch vụ tốt nhất với
sản phẩm Google Maps với nhiều chức năng bản đồ cũng nhƣ cung cấp các APIs mở.
Nhiều hạn chế trong các sản phẩm bản đồ nền Web-based đã đƣợc Google Maps khác
phục. Để hiểu làm cách nào mà công nghệ này có khả năng thay đổi cách thức tạo bản
đồ số chúng ta sẽ tìm hiểu qua cách tiếp cận cổ điển trong xuất bản bản đồ môi trƣờng
Web. Bản đồ Web cổ điển dựa vào cơ sở hạ tầng phức tạp của dữ liệu, phần cứng,
phần mềm và nguồn lực con ngƣời.
Dữ liệu trong ứng dụng bản đồ Web cổ điển có thể chia làm 2 danh mục riêng
biệt: dữ liệu cơ sở và dữ liệu của ứng dụng. Dữ liệu cơ sở, hay dữ liệu nền thƣờng bao
gồm dữ liệu địa lý và thƣờng có nhiều lớp nhƣ là lớp khí quyển, ảnh, đƣờng và các
đƣờng biên lãnh thổ. Dữ liệu cụ thể của ứng dụng bao gồm các tầng dữ liệu cụ thể cho
ứng dụng đƣợc phát triển. Ví dụ, một ứng dụng bản đồ Web cho một thành phố thì sẽ
có các lớp nhƣ là các vùng trực thuộc, vị trí các trƣờng học, các công trình công cộng,
và nhiều lớp khác. Mỗi lớp dữ liệu này phải đƣợc định vị và lƣu trữ trên máy chủ bởi
chính tổ chức đó và nó cần đƣợc cập nhật định kỳ. Với Google Maps, sẽ không còn
phải định vị và quản lý dữ liệu cơ sở nữa. Dữ liệu vùng, đƣờng đã đi kèm trong
Google Maps. Tuy nhiên, ngƣời sử dụng cũng cần phải quản lý ứng dụng của mình
bằng dữ liệu XML hoặc là các định dạng khác.
Không chỉ có các yêu cầu dữ liệu phức tạp, các ứng dụng bản đồ cổ điển còn có
các vấn đề với phần cứng phần mềm và sức lực con ngƣời. Phải mua thêm phần cứng
và phần mềm, cũng nhƣ cần có sự quản lý của con ngƣời để cài đặt bảo trì, quản trị
phần mềm, lập trình tạo ra ứng dụng. Tuy không hoàn toàn loại bỏ các yêu cầu phần
cứng và phần mềm, nhƣng chúng đã đƣợc giảm thiểu đáng kể với Google Maps. Vẫn
cần phần cứng để triển khai ứng dụng nhƣng yêu cầu phần mềm thì đã đƣợc hạn chế
một cách tối đa. Google Maps là sản phẩm miễn phí, không cần cài đặt, hay quản lý.
Sản phẩm hỗ trợ các APIs để tạo ra các chức năng tùy biến của ứng dụng.
Chƣơng 2: CÁC KỸ THUẬT ĐƢỢC SỬ DỤNG
17
Google Maps hỗ trợ các dịch vụ nhƣ định vị, tìm đƣờng, thêm dữ liệu cá nhân,
các điều khiển làm cho việc ứng dụng bản đồ trong ứng dụng Web trở nên dễ dàng và
thuận tiện hơn bao giờ hết.
18
Chương 3. PHÂN TÍCH THIẾT KẾ
3.1.1 Phân tích
3.1.1.1 Phân tích dịch vụ Google Maps
Dịch vụ bản đồ số Google Maps có hỗ trợ một số chức năng nhƣ: tìm đƣờng đi
giữa 2 điểm, ƣớc lƣợng khoảng cách, xác định tọa độ của một điểm theo tên đƣợc nhập
vào, hoặc lấy tọa độ từ một điểm trên bản đồ. Tuy nhiên Google Maps lại không hỗ trợ
xác định điểm đầu và điểm cuối của một con đƣờng theo tên, phố. Ngƣợc lại, việc
quản lý giao thông thì lại phải căn cứ vào tên đƣờng phố. Vì thế cần có thêm cơ sở dữ
liệu để quản lý tên đƣờng phố là bắt buộc với ứng dụng trong đề tài này.
3.1.1.2 Phân tích yêu cầu
3.1.1.2.1 Yêu cầu người dùng
Xây dựng phần mềm “Hỗ trợ phát hiện và thông báo ùn tắc giao thông trên
nền Android” phải thực hiện đƣợc các chức năng sau:
- Chức năng biên tập, dành cho ngƣời biên tập có thể đặt các trạng thái bằng cách
thao tác trực tiếp trên bản đồ.
- Chức năng xem thông tin dành cho ngƣời dùng dịch vụ có thể biết trạng thái
các điểm đƣợc thông báo.
3.1.1.2.2 Yêu cầu hệ thống
- Một nút giao thông có thể có nhiều trạng thái nhƣ tắc đƣờng, cấm đƣờng, có
công trình thi công, hoặc là có tai nạn giao thông. Những trạng thái này có thể
đƣợc thêm vào hoặc sửa đổi cho phù hợp.
- Dữ liệu đƣờng phố, vùng địa lý thực tế có thể bị thay đổi, vì thế nguời biên tập
có thể cập nhật đƣợc cơ sở dữ liệu đƣờng phố, quận huyện khi cần thiết để đảm
bảo tính chính xác.
- Chức năng báo tắc đƣờng phải chỉ định đƣợc tọa độ, tên đƣờng, tên trạng thái
của nút giao thông trên bản đồ.
- Ngƣời dùng thiết bị di động nền Android có thể xem các trạng thái đó trên điện
thoại ở chế độ bản đồ hoặc theo danh sách.
- Ngƣời dùng cũng có thể thông báo một con đƣờng đang bị tắc với mô tả và gửi
lên cho Server.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
19
- Client có thể tự động cập nhật các trạng thái sau một khoảng thời gian nào đó.
Ngƣời dùng cũng có thể cập nhật bằng tay để có những thông tin cập nhật nhất.
- Phần Server đƣợc lập trình trên nền Web phải hỗ trợ các thao tác nhƣ bấm
chuột phải để đặt trạng thái. Ngƣời biên tập thao tác trực tiếp trên bản đồ vì thế
yêu cầu Trạng thái đƣợc đặt cần phải đúng với một con đƣờng nào đó trên bản
đồ.
3.1.2 Xây dựng biểu đồ ca sử dụng
3.1.2.1 Xác định Actor và ca sử dụng
3.1.2.1.1 Tác nhân
- Nguoi dung: Ngƣời dùng điện thoại Android và phần mềm.
- Nguoi bien tap: Ngƣời cập nhật thông tin trạng thái giao thông.
3.1.2.1.2 Ca sử dụng
- Xem ban do: Ngƣời dùng thực hiện xem các thông tin giao thông trên bản đồ.
- Xem theo danh sach: Ngƣời dùng xem các thông tin giao thông ở chế độ danh
sách.
- Cap nhat: thực hiện lại các việc gửi yêu cầu lên hệ thống để lấy thông tin. Các
- Gui thong bao: Ngƣời dùng gửi thông báo các trạng thái giao thông cho hệ
thống.
- Xem trang thai theo duong: Ngƣời biên tập chọn một đƣờng trong danh sách
để xem thông tin trạng thái đƣờng đó.
- Tao trang thai: Ngƣời biên tập thông báo một trạng thái mới qua một điểm
trên bản đồ.
- Cap nhat trang thai: Ngƣời biên tập thực hiện cập nhật trạng thái tại điểm.
Mục đích cập nhật là thay đổi mô tả, hoặc thời gian dự kiến kết thúc.
- Ket thuc trang thai: Ngƣời biên tập kết thúc một trạng thái sớm hơn thời gian
dự kiến, thông tin về trạng thái sẽ không đƣợc gửi đến cho ngƣời dùng nữa.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
20
3.1.2.2 Biểu đồ ca sử dụng
Hình 3.1 Biểu đồ ca sử dụng
3.1.2.3 Đặc tả sơ đồ ca sử dụng
3.1.2.3.1 Xem theo bản đồ
Bảng 3.1 Ca sử dụng Xem theo bản đồ
Tên ca sử dụng Xem theo bản đồ
Tác nhân Ngƣời dùng
Sự kiện kích hoạt Ngƣời dùng chọn nút Xem theo bản đồ
trong phần Client
Luồng sự kiện chính:
1. Khởi tạo Map Activity, chuyển đến vị trí của ngƣời dùng
2. Tạo luồng mới truy vấn dữ liệu từ hệ thống chờ dữ liệu trả về
3. Hiển thị lên bản đồ
Luồng sự kiện phụ:
3.1. Không liên lạc đƣợc với hệ thống, Kết thúc luồng truy vấn, chờ thời gian cập
nhật lại
3.1.2.3.2 Xem theo danh sách
Bảng 3.2 Ca sử dụng Xem theo danh sách
Tên ca sử dụng Xem theo danh sách
Tác nhân Ngƣời dùng
Sự kiện kích hoạt Ngƣời dùng chọn nút Xem theo danh sách
trong phần Client
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
21
Luồng sự kiện chính:
1. Khởi tạo màn hình xem theo danh sách
2. Tạo luồng mới truy vấn dữ liệu từ hệ thống chờ dữ liệu trả về
3. Liệt kê ra màn hình các trạng thái nhận đƣợc
Luồng sự kiện phụ:
2.1. Không tìm thấy hệ thống. Kết thúc luồng truy vấn, chờ thời gian cập nhật lại
2.2. Ngƣời dùng sử dụng hộp thoại lọc kết quả theo quận huyện. Hiện thị kết quả
những quận huyện tƣơng ứng
3.1.2.3.3 Gửi thông báo
Bảng 3.3 Ca sử dụng Gửi thông báo
Tên ca sử dụng Gửi thông báo
Tác nhân Ngƣời dùng
Sự kiện kích hoạt Ngƣời dùng chọn nút Gửi thông báo trong
phần Client
Luồng sự kiện chính:
1. Khởi tạo màn hình Gửi thông báo
2. Khởi tạo luồng mới, truy xuất dữ liệu về danh sách thành phố và quận huyện từ
hệ thống, để tạo bộ lọc địa chỉ
3. Ngƣời dùng sử dụng bộ lọc để nhập vào các thông tin về địa chỉ và mô tả
4. Tạo luồng mới gửi thông tin lên hệ thống.
5. Hiển thị thông báo thành công, quay về màn hình chính.
Luồng sự kiện phụ:
4.1. Không tìm thấy hệ thống. Hiện thị thông báo lỗi, quay về màn hình trƣớc
4.1. Không thực hiện thành công. Hiện thông báo để ngƣời dùng kiểm tra kết quả
và gửi lại
3.1.2.3.4 Thêm mới dữ liệu đường
Bảng 3.4 Ca sử dụng Thêm mới dữ liệu đường
Tên ca sử dụng Thêm dữ liệu đƣờng mới
Tác nhân Ngƣời biên tập
Sự kiện kích hoạt Ngƣời biên tập chọn vào liên kết thêm dữ
liệu đƣờng phố mới
Luồng sự kiện chính:
1. Hiển thị trang thêm mới đƣờng
2. Hiện thị bản đồ
3. Ngƣời biên tập nhập dữ liệu, chỉ định điểm đầu và điểm cuối trên bản đồ
4. Ngƣời biên tập nhấn nút hoàn tất
5. Hệ thống nhận thông tin
6. Hệ thống cập nhật cơ sở dữ liệu
7. Trình duyệt quay về trang danh sách đƣờng
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
22
3.1.2.3.5 Chỉnh sử dữ liệu đường
Bảng 3.5 Ca sử dụng Chỉnh sửa dữ liệu đường
Tên ca sử dụng 3.1.2.3.6 Chỉnh sử dữ liệu đƣờng
Tác nhân Ngƣời biên tập
Sự kiện kích hoạt Ngƣời biên tập chọn vào liên kết chỉnh
sửa một đƣờng phố
Luồng sự kiện chính:
1. Hiện trang chỉnh sửa thông tin
2. Vẽ đƣờng đi giữa điểm đầu và điểm cuối trên bản đồ
3. Ngƣời biên tập thay đổi thông tin
4. Gửi yêu cầu thay đổi lên hệ thống
5. Hệ thống cập nhật cơ sở dữ liệu
6. Trình duyệt quay về trang danh sách đƣờng
3.1.2.3.7 Xem trạng thái theo tên đường
Bảng 3.6 Ca sử dụng Xem trạng thái tên đường
Tên ca sử dụng Xem trạng thái theo tên đƣờng
Tác nhân Ngƣời biên tập
Sự kiện kích hoạt Ngƣời biên tập chọn một đƣờng trong
danh sách
Luồng sự kiện chính:
1. Truy vấn đến hệ thống lấy thông tin của đƣờng hiện tại
2. Khi có dữ liệu trả về, hiển thị lên bản đồ tọa độ và các biểu tƣợng trạng thái của
con đƣờng hiện tại
3.1.2.3.8 Tạo trạng thái mới
Bảng 3.7 Ca sử dụng Tạo trạng thái mới
Tên ca sử dụng Tạo trạng thái mới
Tác nhân Ngƣời biên tập
Sự kiện kích hoạt Ngƣời biên tập bấm chuột phải lên bản đồ
và chọn một mục trong menu đƣợc hiển
thị.
Điều kiện cần Ngƣời dùng chọn Xem trạng thái theo tên
đƣờng
Luồng sự kiện chính:
1. Gửi thông tin tạo trạng thái mới lên hệ thống cho con đƣờng đang đƣợc chọn.
2. Hệ thống căn cứ vào thời gian hiện tại, tạo mới trạng thái, cập nhật cơ sở dữ
liệu
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
23
3. Hệ thống gửi thông tin lại cho trình duyệt
4. Trình duyệt thêm trạng thái mới vào các trạng thái đang có và hiển thị lên bản
đồ
3.1.2.3.9 Cập nhật trạng thái
Bảng 3.8 Ca sử dụng Cập nhật trạng thái
Tên ca sử dụng Cập nhật trạng thái
Tác nhân Ngƣời biên tập
Sự kiện kích hoạt Ngƣời biên tập chọn vào một biểu tƣợng
trạng thái trên bản đồ
Điều kiện cần Ngƣời dùng chọn Xem trạng thái theo tên
đƣờng
Luồng sự kiện chính:
1. Hiển thị của sổ chỉnh sửa thông tin trạng thái
2. Ngƣời dùng điền các thông tin mới nhƣ thời gian dự kiến kết thúc, mô tả chi tiết
về trạng thái
3. Gửi thông tin tạo trạng thái mới lên hệ thống cho con đƣờng đang đƣợc chọn.
4. Hệ thống căn cứ vào thời gian hiện tại, tạo mới trạng thái, cập nhật cơ sở dữ
liệu
5. Hệ thống gửi thông tin lại cho trình duyệt
6. Trình duyệt cập nhật trạng thái và hiển thị lên bản đồ
3.1.2.3.10 Kết thúc trạng thái
Bảng 3.9 Ca sử dụng Kết thúc trạng thái
Tên ca sử dụng Tạo thông báo trạng thái mới
Tác nhân Ngƣời biên tập
Sự kiện kích hoạt Ngƣời biên tập chọn vào nút kết thúc
trạng thái trong màn hình thông tin trạng
thái
Điều kiện cần Ngƣời dùng chọn Xem trạng thái theo tên
đƣờng
Luồng sự kiện chính:
7. Gửi yêu cầu kết thúc trạng thái cho hệ thống.
8. Hệ thống cập nhật cơ sở dữ liệu
9. Hệ thống gửi thông tin lại cho trình duyệt
10. Trình duyệt xóa biểu tƣợng trạng thái khỏi bản đồ
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
24
3.1.3 Biểu đồ tuần tự
3.1.3.1 Xem theo bản đồ
Hình 3.2 Biểu đồ tuần tự xem theo bản đồ
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
25
3.1.3.2 Xem theo danh sách
Hình 3.3 Biểu đồ tuần tự xem theo danh sách
3.1.3.3 Thông báo trạng thái
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
26
Hình 3.4 Biểu đồ tuần tự thông báo trạng thái
3.1.3.4 Xem thông tin trạng thái đường
3.5 Biểu đồ tuần tự xem trạng thái theo tên đường
3.1.3.5 Tạo trạng thái mới
Hình 3.6 Biểu đồ tuần tự tạo trạng thái mới
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
27
3.1.3.6 Cập nhật trạng thái
Hình 3.7 Biểu đồ tuần tự cập nhật trạng thái
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
28
3.1.3.7 Kết thúc trạng thái
Hình 3.8 Biểu đồ tuần tự kết thúc trạng thái
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
29
3.1.4 Biểu đồ lớp
Hình 3.9 Biểu đồ lớp
- Ngƣời dùng có thể thêm các định nghĩa mới về trạng thái của đƣờng. Mỗi định
nghĩa mới sẽ thuộc lớp StatusType.
- Một con đƣờng có thể thuộc địa bàn Quận/Huyện khác nhau, nhƣng để đơn
giản trong lập trình, mỗi con đƣờng trong chƣơng trình chỉ thuộc một quận
huyện duy nhất.
- Lớp Status đại diện cho các trạng thái đƣợc tạo ra do ngƣời biên tập.
- Lớp ReportedStatus đại diện cho trạng thái đƣợc gửi lên từ ngƣời dùng
Android.
- Các lớp này đều có bảng tƣơng ứng trong cơ sở dữ liệu.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
30
3.1.5 Biểu đồ hoạt động
3.1.5.1 Xem theo bản đồ
Hình 3.10 Biểu đồ hoạt đông Xem theo bản đồ
Mô tả biểu đồ:
o Hoạt động này đƣợc thực hiện khi ngƣời dùng chọn vào nút Xem theo
bản đồ từ màn hình điện thoại.
o Chƣơng trình đồng thời thực hiện 2 luồng, một luồng khởi tạo bản đồ
trên màn hình, một luồng truy vấn dữ liệu từ hệ thống để lấy thông tin
các trạng thái.
o Kết quả trả về từ hệ thống là dữ liệu có định dạng JSON. Chƣơng trình
xử lý dữ liệu này và tạo danh sách các biểu tƣợng, hiển thị lên màn hình.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
31
3.1.5.2 Xem theo danh sách
Hình 3.11 Biểu đồ hoạt động Xem theo danh sách
Mô tả biểu đồ:
o Hoạt động này đƣợc thực hiện khi ngƣời dùng chọn nút Xem theo danh
sách từ màn hình chính của chƣơng trình
o Dữ liệu trả về từ Truy vấn dữ liệu các trạng thái cũng có định dạng
JSON.
o Trong dữ liệu trả về có cả danh sách các thành phố và đƣờng để tạo bộ
lọc
o Chƣơng trình có thể thực hiện cập nhật sau thời gian nhất định hoặc khi
ngƣời dùng chọn cập nhật bằng tay từ menu.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
32
3.1.5.3 Thông báo tình trạng giao thông
Hình 3.12 Biểu đồ hoạt động Thông báo tình trạng giao thông
Mô tả biểu đồ:
o Hoạt động đƣợc kích hoạt khi ngƣời dùng chọn Thông báo tình trạng
giao thông trên màn hình của chƣơng trình trên điện thoại
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
33
o Màn hình thông báo bao gồm danh sách các con đƣờng, quận huyện
nhận đƣợc từ hệ thống và hộp thoại để ngƣời dùng có thể chèn thêm mô
tả.
o Dữ liệu trả về sau khi gửi thông báo là một chuỗi xác nhận thành công
nếu nhƣ thông báo thành công.
3.1.5.4 Xem thông tin trạng thái theo đường
Hình 3.13 Biểu đồ hoạt động Xem thông tin trạng thái theo đường
Mô tả biểu đồ:
o Hoạt động này đƣợc thực hiện thông qua trình duyệt web, khi ngƣời biên
tập chọn vào một con đƣờng trong danh sách các con đƣờng trên màn
hình.
o Trang web không đƣợc tải lại mà chỉ có dữ liệu đƣợc nhận về bằng Ajax
và hiện ra trên màn hình và trên bản đồ.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
34
3.1.5.5 Thêm trạng thái mới
Hình 3.14 Biểu đồ hoạt động Thêm trạng thái mới
Mô tả biểu đồ:
o Hoạt động đƣợc thực hiện khi ngƣời biên tập bấm chuột phải trong phần
bản đồ và thực chọn một trạng thái trong menu popup.
o Mỗi con đƣờng khi đƣợc chọn sẽ có một đƣờng vẽ màu xanh mô phỏng
trục đƣờng đó. Tọa độ của điểm trạng thái sẽ nằm trên đƣờng mô phỏng
đó.
o Thông tin trả về sẽ bao gồm các dữ liệu trạng thái giao thông hiện tại
o Các trƣờng thời gian đƣợc gán mặc định từ hệ thống. Ngƣời biên tập sử
dụng chức năng cập nhật để thêm chi tiết cho trạng thái.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
35
3.1.5.6 Cập nhật trạng thái
Hình 3.15 Biểu đồ hoạt đông Cập nhật trạng thái
Mô tả biểu đồ:
o Hoạt động đƣợc thực hiện khi ngƣời dùng bấm chuột trái lên một biểu
tƣợng trạng thái trên màn hình và chọn nút Sửa/Thêm mô tả.
o Khi thực hiện gửi thông tin và xóa trạng thái khỏi bản đồ, trang web sẽ
không đƣợc tải lại
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
36
3.1.5.7 Kết thúc trạng thái
Hình 3.16 Biểu đồ hoạt động Kết thúc trạng thái
Mô tả biểu đồ
o Hoạt động đƣợc thực hiện khi ngƣời dùng bấm chuột trái lên một biểu
tƣợng trạng thái trên màn hình và chọn nút Kết thúc.
3.1.6 Biểu đồ thành phần
Hình 3.17 Biểu đồ thành phần
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
37
3.1.7 Biểu đồ triển khai
Hình 3.18 Biểu đồ triển khai
Hệ thống bao đƣợc triển khai thành 4 thành phần chính.
- Phần dành cho ngƣời biên tập đƣợc chạy trên Web Browsers (trình duyệt web).
- Phần chạy dành cho ngƣời sử dụng chạy trên các thiết bị Android.
- Phần Server đƣợc cài đặt trên máy chủ IIS Server.
- Cơ sở dữ liệu đƣợc cài đặt trên hệ quản trị CSDL MS SQL Server.
- Các phần sử dụng giao diện bản đồ của dịch vụ Google Maps.
- Các thành phần giao tiếp với nhau thông qua giao thức HTTP.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
38
3.1.8 Thiết kế giao diện
3.1.8.1 Màn hình chính chương trình trên Android
Hình 3.19 Màn hình chính chương trình trên Android
Chú thích:
o Khi ngƣời dùng chọn “Xem bản đồ” thì chƣơng trình chuyển qua màn
hình 3.19
o Khi ngƣời dùng chọn “Xem danh sách” thì chƣơng trình chuyển qua
màn hình nhƣ 3.20
o Khi ngƣời dùng chọn “Gửi thông báo GT” thì chƣơng trình sẽ chuyển
qua màn hình 3.21
o Khi ngƣời dùng chọn “Hƣớng dẫn” chƣơng trình sẽ chuyển qua màn
hình hƣớng dẫn nhƣ hình 3.22
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
39
3.1.8.2 Giao diện xem bản đồ
Hình 3.20 Xem thông tin trạng thái của điểm trên bản đồ
Chú thích:
o A: Các biểu tƣợng của trạng thái giao thông, khi chọn vào các điểm này,
chúng ta sẽ có cửa đổ ra nhƣ hình B.
o B: Cửa sổ Popup hiện thông tin chi tiết của một trạng thái.
o C: Điều khiển phóng to, thu nhỏ. Khi phóng to/ thu nhỏ hết cỡ, phím
điều khiển tƣơng ứng sẽ bị vô hiệu. Nếu ngƣời dùng tiếp tục bấm thì sẽ
tạo ra âm thanh để thông báo.
o Để di chuyển bản đồ, ngƣời dùng sử dụng các nút định hƣớng trên điện
thoại.
o Ngƣời dùng có thể chạm nhẹ vào một điểm nào đó để phóng to màn
hình.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
40
3.1.8.3 Giao diện xem theo danh sách
Hình 3.21 Giao diện xem theo danh sách
Chú thích:
o A: Hộp chọn lọc kết quả theo Thành phố, Quận huyện
o B: Kết quả theo Thành phố, Quận huyện đƣợc chọn.
o C: Menu cập nhật bằng tay.
o D: Mở hƣớng dẫn sử dụng
o C và D sẽ hiện lên khi ngƣời dùng bấm chọn phím Menu trên máy điện
thoại.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
41
3.1.8.4 Gửi thông báo
Hình 3.22 Giao diện màn hình gửi thông báo
Chú thích:
- A: Hộp thoại chọn thành phố. Khi một thành phố đƣợc lựa chọn, các dữ liệu
quận huyện, và đƣờng phố còn lại là những đơn vị thuộc thành phố đƣợc chọn.
- B: Hộp thoại chọn Quận huyện. Khi quận huyện đƣợc chọn, danh sách của hộp
thoại chọn Đƣờng phố sẽ còn là những đƣờng phố thuộc Quận, huyện đƣợc
chọn.
- C: Tùy chọn tên đƣờng phố. Có thể chọn ngay tên đƣờng để gửi thông tin mà
không cần chọn tên thành phố. Nhƣng khi chƣa chọn tên đƣờng mà đã chọn
Gửi thì sẽ nhận đƣợc hộp thoại thông báo.
- D: Nhập mô tả về tình trạng giao thông trên con đƣờng đƣợc chọn.
- E: Tùy chọn có gửi kèm điện thoại hay không.
- F: Khi bấm nút Gửi, thông tin sẽ đƣợc gửi đi.
- Ngoài các thông tin để thông báo trạng thái đƣờng phố, chƣơng trình sẽ gửi
thông tin về địa chỉ GPS và địa chỉ truy vấn đƣợc từ Google Maps ứng với địa
chỉ GPS đó của ngƣời thông báo.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
42
3.1.8.5 Màn hình hướng dẫn
Hình 3.23 Màn hình hướng dẫn
Chú thích:
Màn hình hƣớng dẫn có thể đƣợc mở bằng cách chọn vào nút bấn “Hƣớng dẫn”
ở màn hình chính, cũng có thể đƣợc mở ra bằng cách chọn Menu “Hƣớng dẫn”
trong các màn hình “Xem Bản đồ” hoặc là “Xem danh sách”.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
43
3.1.8.6 Màn hình điều khiển trạng thái
Hình 3.24 Giao diện điều khiển trạng thái giao thông
Chú thích:
o A: Danh sách đƣờng phố
o B: Số lƣợng ngƣời dùng thông báo
o C: Các trạng thái đã đặt
o D: Điều khiển bản đồ
Khi ngƣời dùng chọn vào một tên đƣờng trong A, trình duyệt sẽ lấy thông tin
tƣơng ứng và cập nhật ở B và trên bản đồ.
Khi ngƣời dùng chọn C, màn hình sẽ chuyển qua nhƣ hình chỉnh sửa trạng thái
nhƣ hình 3.25.
Chƣơng 3: PHÂN TÍCH THIẾT KẾ
44
Hình 3.25 Màn hình Thêm trạng thái mới
Chú thích:
- A: Biểu tƣợng tọa độ. Chỉ chạy trên đƣờng minh họa con đƣờng
- B: Menu chuột phải, menu có là các trạng thái có thể thêm mới
- C: Một trạng thái đã đƣợc thêm
3.1.8.7 Màn hình chỉnh sửa thông tin
Hình 3.26 Màn hình chỉnh sửa thông tin trạng thái đường
45
Chương 4. CÀI ĐẶT VÀ THỬ NGHIỆM
4.1 Cài đặt
4.1.1 Cài đặt server
Server của hệ thống sử dụng hệ quản trị CSDL MS SQL Express đƣợc lập trình
trên ngôn ngữ ASP.NET MVC 1.0 và công cụ Visual Studio. Ngoài ra phần Server
cũng sử dụng Jquery Javascript Framework
7
phiên bản 1.4.2.
Cấu trúc các file quan trọng phần server:
Bảng 4.1 Các file cài đặt phần server
File Chức năng
/Controllers/CitiesController.cs Lớp điều khiển các thao tác liên quan
đến Model City(Thành phố)
/Controllers/DistrictsController.cs Lớp điều khiển các thao tác liên quan
đến Model District(Quận/Huyện)
/Controllers/HomeController.cs Lớp điều khiển chính của hệ thống, thao
tác Quản lý trạng thái
/Controllers/ReportedStatusController.cs Lớp điều khiển các thao tác thông báo từ
Android Client
/Controllers/StatusController.cs Lớp điều khiển các thao tác liên quan
đến Status Model
/Controllers/StreetController Lớp điều khiển của Model Street
/Models/TrafficDataContext.cs Lớp thao tác trực tiếp với các Model.
/Models/TrafficDB.dbml Lớp chứa mô hình quan hệ giữa các
Model trong
/Views/Shared/Site.Master File Master page, định hình giao diện
chung cho cả Web site.
/Scripts/custommap.js File Javascript chức các mã thao tác với
bản đồ
Phần quan trọng nhất của chƣơng trình ở server là việc tích hợp chặt chẽ với dịch
Google Maps. Đa số các chức năng đều sử dụng bản đồ. Để tạo ra giao diện bản đồ,
cần thực hiện các bƣớc nhƣ sau:
map = new google.maps.Map2(
document.getElementById("map")
);
7
JQuery Project, 2010,
Chƣơng 4: CÀI ĐẶT VÀ THỬ NGHIỆM
46
Chƣơng trình hỗ trợ các thao tác bấm chuột phải trong bản đồ. Hàm bắt sự kiện
chuột phải lên màn hình đƣợc thực hiện nhƣ sau:
GEvent.addDomListener(map, 'singlerightclick',
showRightClickMenu(pixel, tile)
);
Sau khi khởi tạo bản đồ. Tùy ứng dụng có thể tùy biến bản đồ cho phù hợp.
Trong phần thêm đƣờng mới, khi thêm tọa độ của con đƣờng, ngƣời biên tập
bấm chuột phải lên một vùng nào đó trên bản đồ, sau đó tọa độ điểm bấm chuột phải
đƣợc lƣu lại và gán cho tọa độ của đƣờng. Một con đƣờng muốn vẽ ra đƣợc trên bản
đồ thì cần 2 điểm đầu và cuối. Tọa độ điểm gán luôn đảm bảo đƣợc gắn với một con
đƣờng nào đó. Để thực hiện đƣợc điều này, cần thực hiện một truy vấn tìm đƣờng với
điểm bắt đầu và kết thúc là chính nó. Nhƣ vậy, trong dữ liệu trả về từ Google Maps chỉ
có một góc rẽ giữa 2 điểm và điểm đó cũng chắc chắn thuộc một con đƣờng gần nhất.
Đoạn mã minh họa:
dirForSnap.loadFromWaypoints(
[point.toUrlValue(6), point.toUrlValue(6)],
{ getPolyline: true }
);
Trong đó, dirForSnap là một đối tƣợng thuộc lớp GDirection, đã đƣợc khai báo
bắt sự kiện “load”:
GEvent.addListener(dirForSnap, "load", snapToRouteLoad);
Sau đó, trong hàm snapToRouteLoad bắt sự kiện load của dirForSnap ta có câu
lệnh sau để lấy điểm trên con đƣờng gần nhất:
var pointForSnap = dirForSnap.getPolyline().getVertex(0);
Trong phần đặt các điểm trạng thái, để giúp ngƣời biên tập hạn chế đặt tọa độ
của trạng thái ra ngoài con đƣờng hiện tại, mỗi điểm đặt ra đều đƣợc nằm trên đƣờng
vẽ mô phỏng đƣờng. Để có đƣợc điều này, cần sử dụng thêm một thƣ viện Javascript
là Gmap Utility Library
8
. Việc dính biểu tƣợng vào một đƣờng cụ thể đƣợc thực hiện
nhƣ sau:
snapToRoute = new SnapToRoute(
map,
markerStreet,
currentPolyline
);
8
Chƣơng 4: CÀI ĐẶT VÀ THỬ NGHIỆM
47
Trong đó, markerStreet là đối biểu tƣợng, currentPolyline là đƣờng vẽ của
đƣờng phố đang đƣợc chọn.
4.1.2 Cài đặt Client
Client đƣợc lập trình trên Eclipse với plugin Android Development Tools
(ADT)
Cấu trúc các file quan trọng phần Client(Android):
Bảng 4.2 Các file cài đặt trên Client
File Chức năng
/org.k51.traffic.activities/TrafficMapActivity.java Có chức năng tạo màn hình
bản đồ. Lớp
TrafficMapActivity đƣợc
thừa kế từ lớp MapActivity.
/org.k51.traffic.activities /ControlPanel.java Giữ chức năng quản lý màn
hình chính của chƣơng trình
/org.k51.traffic.activities/ListViewActivity.java Giữ chức năng điều kiển
màn hình xem theo danh
sách
/org.k51.traffic.activities/ReportTrafficActivity.java Giữ chức năng điều khiển
màn hình gửi thông báo
/org.k51.traffic.common/TrafficMarkerOverlay.java Dùng để vẽ các biểu tƣợng
của bản đồ.
Khi cài đặt Android Client, việc quan trọng nhất là thực hiện đƣợc liên lạc với
web server và phân tích đƣợc dữ liệu dạng JSON do server trả về. Việc kết nối tới
server phải sử dụng một Thread riêng để không làm treo ứng dụng đang chạy. Thread
này sẽ dùng một Handler để thực thi một đối tƣợng Runnable trong đó gọi hàm cập
nhật bản đồ hoặc danh sách.
Sở dĩ kiểu dữ liệu JSON đƣợc lựa chọn để truyền thông tin từ server đến client
là vì JSON là kiểu dữ liệu đƣợc các thƣ viện trong Android hỗ trợ. Nó cũng là định
dạng có thể sinh ra từ dịch vụ Google Maps.
4.2 Thử nghiệm
Chƣơng trình server đã đƣợc cài đặt lên máy chủ sử dụng hệ điều hành
Windows 7 Ultimate, .NET Framework 3.5. Chƣơng trình client đƣợc cài lên điện
thoại giả lập trong Android SDK 2.1. Hệ thống đã thực hiện đƣợc những gì đề ra
trong thiết kế.
48
Chương 5. ĐÁNH GIÁ TỔNG KẾT
Chƣơng trình đã thực hiện đƣợc ý tƣởng đề ra, đó là mô phỏng một hệ thống
thông báo thông tin giao thông qua mạng và các thiết bị di động. Việc xây dựng hệ
thống dựa vào dịch vụ bản đồ Google Maps là một giải pháp tiết kiệm, nhanh chóng.
Tuy nhiên, Google Maps chƣa hỗ trợ các APIs lập trình mức sâu hơn. Những con
đƣờng chạy qua nhiều ngã tƣ, những con đƣờng đƣợc phân luồng 1 chiều vẫn chƣa
đƣợc mô phỏng một cách tối ƣu. Chƣơng trình cần cải tiến hơn nữa để thực hiện đƣợc
điều này. Một thực tế nữa, các thiết bị Android chƣa phổ biến ở Việt Nam. Nếu nhƣ có
thể xây dựng đƣợc phần mềm chạy trên nền di động khác nữa thì khả năng ứng dụng
sẽ cao hơn.
Trong quá trình nghiên cứu khóa luận tốt nghiệp, em đã học đƣợc nhiều kiến
thức quý báu nhƣ kỹ thuật lập trình MVC trên ASP.NET, làm quen với lập trình di
động trên Android, hiểu đƣợc mô hình cung cấp dịch vụ web thông qua tìm hiểu
Google Maps APIs. Ngoài ra, khóa luận tốt nghiệp cũng giúp em củng cố hơn các kiến
thức đƣợc học ở trƣờng nhƣ phân tích thiết kế sử dụng các mô hình UML.
Hiện tại, dữ liệu đánh dấu tọa độ đƣờng đƣợc nhập thông qua các API của
Google Maps, vì thế một số con đƣờng có tọa độ không đƣợc chính xác. Có một
hƣớng phát triển có thể khắc phục đƣợc vấn đề này đó là sử dụng định dạng GPX
(GPS Exchange Format)
9
để đánh dấu tọa độ của những con đƣờng. Ngoài ra, để thu
hút nhiều ngƣời sử dụng, trong tƣơng lai cũng có thể phát triển hỗ trợ hỗ trợ nhiều
thêm nhiều tiện ích nhƣ hỗ trợ đăng ký ngƣời dùng và hỗ trợ ghi lại hành trình của của
ngƣời dùng, hoặc hỗ trợ lập nhóm ngƣời dùng, để ngƣời dùng có thể chia sẻ vị trí hiện
tại của mình cũng nhƣ biết đƣợc địa chỉ của ngƣời dùng khác trong nhóm.
9
49
Tài liệu tham khảo
[1]. Meier, Reto. Professional Android™ Application Development. Indiana :
Wiley Publishing, Inc., 2008.
[2]. Ableson, W. Frank, Collins, Charlie and Sen, Robi. Unlocking Android.
New York : Manning, 2009.
[3]. Martin Fowler, Kendall Scott. UML Distilled, Second Edition. Hoboken :
John Wiley & Sons, Inc, 2000.
[4]. Murphy, Mark L. Beggining Android. New York : Apress, 2009.
[5]. Pimpler, Eric. Mashup Mania with Google Maps. San Antonio :
Geospatial Training Services, LLC, 2009.
[6]. Chaffe, Jonathan and Swedberg, Karl. Learning jQuery 1.3.
Birmingham - Mumbai : Packt Publishing, 2009.
[7]. Svennerberg, Gabriel. Beginning Google Maps Applications. New York :
Apress, 2010.
[8]. Palermo, Jeffrey, Scheirman, Ben and Bogard, Jimmy. ASP.NET MVC
in Action. Greenwich : Manning, 2009.
[9]. Sanderson, Steven. Pro ASP.NET MVC Framework. New York : Apress,
2009.
Các file đính kèm theo tài liệu này:
- LUẬN VĂN- HỖ TRỢ PHÁT HIỆN VÀ THÔNG BÁO ÙN TẮC GIAO THÔNG TRÊN ANDROID.pdf