Tải bản đầy đủ (.docx) (69 trang)

Dịch vụ cung cấp thông tin tình trạng giao thông dựa theo vị trí cho thiết bị cầm tay trên nền android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.73 MB, 69 trang )

LỜI CẢM ƠN

Em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin, Bộ môn Công Nghệ
Phầm Mềm, trường Đại học Công Nghệ Thông Tin Và Truyền Thông đã tạo điều
kiện tốt cho em hoàn thành đồ án này.
Em xin gửi lời cảm ơn chân thành tới thầy Nguyễn Trường Thắng (Viện
Công Nghệ Thông Tin- Viện Khoa Học và Công Nghệ Việt Nam). Thầy đã nhiệt
tình hướng dẫn cho em hoàn thành đồ án tốt nghiệp này.
Em xin gửi lời cảm ơn sâu sắc tới tất cả các thầy cô, những người đã giảng
dạy, trang bị cho em những kiến thức quý báu trong suốt những năm học vừa qua –
trường Đại học Công Nghệ và Truyền thông– Đại học Thái Nguyên.
Xin chân thành cảm ơn tới gia đình, anh chị, bạn bè đã giúp đỡ, ủng hộ, động
viên em trong suốt thời gian học tập và nghiên cứu.
Mặc dù em đã cố gắng hoàn thiện thật tốt đồ án nhưng do kiến thức có hạn do
đó không thể tránh khỏi những sai sót, em rất mong nhận được sự cảm thông, ý kiến
đóng góp của các quý Thầy Cô và các bạn!

Em xin chân thành cảm ơn!

Sinh viên thực hiện
Đặng Thị Hà

1


LỜI CAM ĐOAN
Em xin cam đoan nội dung của đồ án này là sản phẩm của bản thân em tìm
hiểu, nghiên cứu và xây dựng lên. Không sao chép của ai. Nội dung đồ án có tham
khảo, sử dụng tài liệu, thông tin từ một số nguồn khác được trích dẫn trong phần tài
liệu tham khảo, và một số website. Nếu có gì sai sót em xin chịu hoàn toàn mọi
trách nhiệm và kỷ luật của trường đề ra.



Tác giả đồ án
Đặng Thị Hà

2


MỤC LỤC

3


DANH MỤC CÁC HÌNH

DANH MỤC CÁC BẢNG

4


DANH MỤC TỪ VIẾT TẮT
Giải thích
Ký hiệu

EDGE
API

Tiếng Anh

Tiếng Việt


Enhanced Data Rates for GSM
Evolution

Sự phát triển tăng tốc độ
truyền cho mạng GSM

Application Programming Interface Giao diện lập trình ứng dụng

GPRS

General Packet Radio Service

Gói dịch vụ vô tuyến tổng
hợp

GSM

Global System for Mobile
Communications

Hệ thống thông tin di động
toàn cầu

SDK

Software Development Kit

Bộ công cụ phát triển phần
mềm


GPS

Global Positioning System

Hệ thống định vị toàn cầu

5


LỜI MỞ ĐẦU
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 lực lượng giao thông tai các điểm hay ùn
tắc cho tới các biện pháp 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.
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 đồ án “Dịch vụ cung cấp thông tin tình trạng
giao thông dựa trên vị trí cho thiết bị cầm tay 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ự.
Mục tiêu của đề tài:

Đề tài 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.
Hướng tiếp cận của đề tài:
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

6


đườ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:
• Tìm hiểu và cài đặt Server trên nền ASP.NET MVC.
• Tìm hiểu và xây dựng Webservice kết nối Client và Cơ sở dữ liệu SQL
Server.
• Tìm hiểu dịch vụ Google Maps và các giao diện lập trình được hỗ trợ để tích
hợp với phần Server và Client.
• Tìm hiểu và cài đặt Client trên nền điện thoại di động Android.
Đồ án bao gồm 3 chương với nội dung như sau:
Chương 1: Cơ sở lý thuyết chương này bao gồm các kiến thức được sử dụng để
xây dựng chương trình
Chương 2: Phân tích thiết kế hệ thống chương này sẽ đi phân tích thiết kế hệ
thống để đạt được mục tiêu đề ra.
Chương 3: Cài đặt và thử nghiệm chương này sẽ trình bày một số file được cài
đặt trong hệ thống và kết quả thu được
Thái Nguyên, tháng 6 năm 2012


7


CHƯƠNG 1
CƠ SỞ LÝ THU YẾT
1.1 Giới thiệu về hệ điều hành 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 mộ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
1.1.1 Phát triển ứng dụng trên Android
 Cấu trúc của các thành phầ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).

8



Hình 1.1: Kiến trúc hệ điều hành Android
• 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.

9


• 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.
 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.
 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.

10


− 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
− 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 Android 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.

11


− 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
o

o
o
o

OpenGLES 1.0 API
FreeType Hỗ trợ xử lý bitmap và font vector
GGL Thư viện cơ bản, dùng để cung cấp các engine đồ họa 2D
Libc Thư viện C chuẩn, được tối ưu cho các thiết bị Linux-based
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
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.
 Các thành phần của ứng dụng Android
• 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.

12


− 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()

13


Hình 1.2 Sơ đồ chuyển trạng thái của Activity

14


• 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 được tạo ra.
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 1.3 Sơ đồ chuyển trạng thái của Service
• 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
15


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.
• 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.
• 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.
• 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ứ
1.2 Giới thiệu về ASP.NET MVC
1.2.1 ASP.NET
 Đặ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ất 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

16


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.

Hình 1.4 Vị trí của ASP.NET trong .NET Framework
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).

17


− 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).
Điều trọng nhất của công cụ ASP.NET là nó chạy trong môi thời gian thực
(Runtime) của CLR (Common Language Runtime). CLR là máy ảo (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.
• 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.

18


Hình 1.5 Cấu trúc LINQ
 Khái niệm MVC
MVC là một mô hình kiến trúc phần mềm. Khi sử dụng đúng cách, mô hình
MVC giúp cho người phát triển phần mềm độc lập các nguyên tắc nghiệp vụ và giao

diện người dùng một cách rõ ràng hơn. Phần mềm phát triển theo mô hình MVC tạo
nhiều thuận lợi cho việc bảo trì nâng cấp và sửa chữa vì các thành phần riêng biệt ít
liên quan với nhau.
Kiến trúc của MVC bao gồm 3 thành phần cơ bản: Model, View, và Control
trong đó:
• Model: Được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu
vào các kho chứa dữ liệu. Tất cả các nghiệp vụ logic được thực thi ở Model.
Dữ liệu vào từ người dùng sẽ thông qua View đến Controller và được kiểm tra

19


ở Model trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác nhận, và lưu dữ
liệu là một phần của Model.
• View : View là phần giao diện với người dùng, bao gồm việc hiện dữ liệu ra
màn hình, cung cấp các menu, nút bấm, hộp đôi thoại, chọn lựa…, để người
dùng có thể thêm sửa xóa, tìm kiếm và thực hiện các thao tác khác đối với dữ
liệu trong hệ thống… Thông thường các thông tin cần hiển thị lấy từ thành
phần Models.
• Controller (Tầng điều khiển): là phần điều khiển của ứng dụng, điều hướng
các nhiệm vụ đến đúng phương thức (method) có chức năng xử lí nhiệm vụ
đó. Nó chịu trách nhiệm xử lí các tác động về mặt giao diện, các thao tác đối
với models, và cuối cùng là chọn một View thích hợp để hiển thị ra màn hình.
MVC chia nhỏ quá trình xử lý của một ứng dụng, giúp người lập trình làm việc
trên từng thành phần riêng lẻ, không ảnh hưởng đến các thành phần khác giúp phát
triển ứng dụng nhanh, đơn giản, dễ nâng cấp.

Hình 1.6 Cấu trúc của mô hình MVC trên môi Web
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.
 Một số vấn đề về ASP.NET MVC
 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:

20


Hình 1.7 Cấu trúc dự án ASP.NET MVC trong Visual Studio 2008
- /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.
21


- /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.
 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”].
 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 để thêm dữ liệu động trong View của MVC. Có thể sử dụng Inline Code,
HTML

helpers,

Server

controls,

Partial

views,




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 <%= Model.Name %>

.

22


1.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 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 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

23


đặ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.
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.
Để sử dụng Google Maps trong ứng dụng Client cần để thêm vào thư viện sử
dụng câu lệnh trong file AndroidManifest.xml. Project tạo ra nó tự động nếu chọn
một phiên bản Google API.
"com.google.android.maps" </uses-library>
Để dễ dàng hơn khi tăng khả năng ứng dụng google map, các nhà cung cấp
Google đã đưa ra một thư viện mở rộng nó bao gồm gói: Các lớp của các gói
com.google.android.maps được xây dựng tải về, dựng hình, và bộ nhớ đệm của
Maps,

cũng


như

một

loạt

các

tùy

chọn

hiển

thị



điều

khiển

com.google.android.maps.
Lớp chính trong gói này là com.google.android.maps.MapView, là một lớp
con của ViewGroup. Một MapView hiển thị một bản đồ với dữ liệu thu được từ dịch
vụ của Google Maps. Khi MapView đã hiển thị, nó sẽ nắm bắt các phím nhấn và
cảm ứng cử chỉ để xoay và phóng to bản đồ tự động, bao gồm cả xử lý các yêu cầu
mạng cho các bản đồ bổ sung. Nó cũng cung cấp tất cả các yếu tố giao diện người
dùng cần thiết cho người dùng để kiểm soát bản đồ.
Lớp “MapController” có thể sử dụng để tương tác với “MapView” bởi di chuyển nó

Một “Geopoint” dùng miêu tả vị trí thông qua kinh độ và vĩ độ và lớp “Overlay” có
thể sử dụng để vẽ trên bản đồ, các vị trí đánh dấu.
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:enabled="true"
24


android:focusable="true"
android:focusableInTouchMode="true"
android:apiKey="0tsie_1ve1s-wJU3hUdddc6QRTJ_qcxDHZ7HHqw" />
Đoạn mã nguồn trên cho phép hiển thị bản đồ, lưu ý thuộc tính:
android:apiKey="0tsie_1ve1s-wJU3hUdddc6QRTJ_qcxDHZ7HHqw"
Để sử dụng được Google map thì cần thêm vào một API key, cách lấy API key như
sau:
Trước hết cần đăng kí có một tài khoản trên Google, sau đó tìm kiếm file
debug.keystore, thường thì file này sẽ lằm trong thư mục C:\<User name>\.android.
Sau đó tạo một thư mục mới ví. Bạn copy file này để vào thư mục vừa tạo. Ví dụ để
trong thư mục C:\android. Tiếp theo mở cửa sổ run gõ vào dòng lệnh cmd. Trong
này gõ lệnh dẫn tới thư mục bin của jdk mà đã cài đặt. Sau copy đoạn lệnh sau :
keytool.exe -list -alias androiddebugkey -keystore "C:\android\debug.keystore"
-storepass android -keypass android
Kết quả như hình sau:

Hình 1.8: Lấy fingerprint từ máy tính

25



×