Thực tế nhu cầu nhà ở cho những người có thu nhập thấp là nhiều nhưng vẫn không thể đáp ứng được nhu cầu của phần lớn những người dân có thu nhập thấp như hiện nay.1 Với những khó khăn k
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
KHÓA LUẬN TỐT NGHIỆP XÂY DỰNG HỆ THỐNG QUẢNG CÁO NHÀ ĐẤT
Giảng viên hướng dẫn: TS ĐÀM QUANG HỒNG HẢI
Sinh viên thực hiện: NGUYỄN LÂM 08520194
TP Hồ Chí Minh, tháng 02 năm 2013
Trang 2Bất động sản là một trong những lĩnh vực “xương sống” của nền kinh tế, nếu bất động sản gặp khó khăn thì sẽ kéo theo không ít những khó khăn trong các vấn đề
xã hội và làm ảnh hưởng đến kinh tế vĩ mô của đất nước Chính vì thế, các doanh nghiệp đã đẩy mạnh đầu tư các dự án bất động sản nhầm đáp ứng nhu cầu cho người dân, mang lại lợi ích cho doanh nghiệp, đẩy mạnh phát triển cơ sở hạ tầng và nền kinh
tế quốc dân Tuy nhiên thực tế cho thấy những năm gần đây là những năm tháng đầy khó khăn đối với thị trường bất động sản, các nhà đầu tư bất động sản mới chỉ quan tâm đến thị trường dành cho những người có thu nhập cao, những người có khả năng kinh tế, vì thế sản phẩm là các căn hộ cao cấp, chung cư cao cấp, các nhà biệt thự liền kề ngày càng nhiều Trong khi đó phần lớn những người dân cần đến những sản phẩm với quy mô vừa và nhỏ, giá cả khiêm tốn thì lại không có, vì vậy những sản phẩm với giá cao, quy mô lớn thì trong tình trạng thừa thải Thực tế nhu cầu nhà ở cho những người có thu nhập thấp là nhiều nhưng vẫn không thể đáp ứng được nhu cầu của phần lớn những người dân có thu nhập thấp như hiện nay.1
Với những khó khăn kể trên, để giảm thiểu tình trạng bất động sản “đóng băng”, các doanh nghiệp đã đẩy mạnh quảng cáo và áp dụng các chính sách ưu đãi nhằm đáp ứng nhu cầu cho người dân Ngoài việc đăng các tin quảng cáo trên báo đài với chi phí tương đối cao, phần lớn các doanh nghiệp đều quan tâm đến việc đăng tin quảng cáo trên các Website chuyên về quảng cáo nhà đất Chính vì vậy, trong những năm gần đây, các Website về quảng cáo bất động sản ngày càng nhiều để đáp ứng nhu cầu cho doanh nghiệp và những người rao bán, nổi bật như: rongbay.com, muabannhadat.com.vn, batdongsan.com.vn, sanhadat.net, nhaban.com
Bên cạnh những vấn đề về bất động sản, trong những năm gần đây chúng ta chứng kiến những bước phát triển vượt bậc của công nghệ thông tin, đặc biệt là về lĩnh vực di động Ngày nay ngoài chức năng chính là liên lạc, những chiếc điện thoại thông minh đã ra đời và đáp ứng được nhiều tính năng nổi bật, mang lại hiệu quả sử
1 Theo 655476.htm
Trang 3http://dantri.com.vn/kinh-doanh/bo-truong-xay-dung-bat-dong-san-trong-tinh-trang-khan-cap-điện thoại di động các công nghệ tiên tiến như 3G, Wifi giúp mọi người có thể sử dụng Internet một cách tiện lợi mọi lúc mọi nơi Bên cạnh đó, việc kết hợp chiếc điện thoại thông minh với các dịch vụ được cung cấp bởi các đại gia trong ngành công nghệ thông tin như Google với hệ điều hành Android và Apple với hệ điều hành iOS
đã mang lại hiệu quả và lợi ích tối đa cho người sử dụng Tuy Android là hệ điều hành được phát triển sau iOS nhưng với ưu thế là hệ điều hành mã nguồn mở và yêu cầu về phần cứng của thiết bị có thể chạy nó là tương đối thấp nên tốc độ phát triển của nền tảng di động này là khá cao và là sự lựa chọn hợp lý cho các nhà phát triển phần mềm trên thế giới
Từ việc nhìn nhận về thực tế của xã hội, nhóm đã quyết định xây dựng ứng dụng về quảng cáo nhà đất với tên đề tài “xây dựng hệ thống quảng cáo nhà đất” và tên ứng dụng là “9House” Trong đề tài này, nhóm đã xây dựng một hệ thống gồm một Website quảng cáo tin tức nhà đất viết bằng ngôn ngữ lập trình PHP và một ứng dụng hỗ trợ xem tin tức nhà đất trên nền tảng Android nhằm đáp ứng nhu cầu di động
và cung cấp các tính năng mang lại hiệu quả cao cho người sử dụng
Kết cấu của đề tài gồm 5 phần:
Chương 1: Tổng quan đề tài giới thiệu tên đề tài, lý do chọn đề tài, những
mục đích mà đề tài muốn hướng tới cho người dùng, đối tượng và phạm vi nghiên cứu của đề tài
Chương 2: Giới thiệu về Android và các công nghệ triển khai trình bày lý
thuyết về hệ điều hành Android và các công nghệ được sử dụng để xây dựng hệ thống
Chương 3: Phân tích thiết kế cơ sở dữ liệu hệ thống quảng cáo nhà đất
phân tích thiết kế cơ sở dữ liệu hệ thống quảng cáo nhà đất
Chương 4: Ứng dụng quảng cáo nhà đất 9House trình bày thiết kế giao diện
và các chức năng của ứng dụng trên thiết bị Android và trên Website
Chương 5: Kết luận nêu ra những kết quả đã đạt được, những hạn chế,
phương pháp để khắc phục và phát triển trong tương lai
Trang 4Đầu tiên chúng em xin chân thành cảm ơn các Thầy, Cô của trường Đại học Công nghệ thông tin – Đại học Quốc gia TP.Hồ Chí Minh, đặc biệt là các Thầy, Cô giáo Khoa Mạng Máy Tính và Truyền Thông đã tận tình giảng dạy, dìu dắt chúng em trong suốt thời gian chúng em học tại trường.
Chúng em xin chân thành cảm ơn Thầy Đàm Quang Hồng Hải đã tận tình hướng dẫn, chỉ bảo chúng em trong suốt thời gian thực hiện đề tài Trong quá trình làm việc với Thầy, chúng em không những học hỏi được nhiều kiến thức bổ ích mà còn học được tinh thần làm việc, kinh nghiệm nghiên cứu khoa học của Thầy
Chúng em xin bày tỏ lòng biết ơn sâu sắc đến gia đình, cha mẹ và bạn bè đã luôn ủng hộ và là nguồn động viên to lớn, giúp đỡ chúng em vượt qua những khó khăn trong suốt quá trình học tập, nghiên cứu
Mặc dù chúng em đã cố gắng hoàn thiện luận văn với tất cả sự nỗ lực của bản thân, nhưng chắc chắn không thể tránh khỏi những thiếu sót Kính mong quý Thầy Cô tận tình chỉ bảo
Một lần nữa, chúng em xin chân thành cảm ơn và luôn mong nhận được sự đóng góp quý báu của quý Thầy Cô
TP.HCM, ngày 27 tháng 2 năm 2013
Nguyễn Lâm Ngô Tấn Tài
Trang 5
Trang 6
Trang 10
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Tên đề tài
Tên đề tài: Xây dựng hệ thống quảng cáo nhà đất
Tên ứng dụng: 9House
1.2 Lý do chọn đề tài
Trong những năm qua, mặt bằng giá đất tăng nhanh đã thu hút giới đầu tư khắp nơi đổ vốn vào để kiếm lời Cái giá của sự phát triển quá nhanh và chênh lệch của thị trường là những dãy phố, khu chung cư cao tầng bị bỏ hoang Nếu như cách đây khoảng 5 năm, giá đất ở trong các khu đô thị chỉ hơn chục triệu đồng mỗi mét vuông, thì hiện nay mặc dù đã giảm, nhưng trung bình vẫn ở mức vài chục triệu đồng tới hơn trăm triệu đồng mỗi mét vuông Chính điều này đã làm cho giá nhà ở trung bình cao hơn 25 lần so với thu nhập trung bình một năm của người lao động, lớn hơn gấp 5 lần
so với các nước phát triển và gấp 10 lần so với các nước chậm phát triển Trong khi
đó, theo đánh giá của các chuyên gia liên ngành về thị trường bất động sản, nhu cầu
về nhà ở vẫn đứng ở mức cao, đặc biệt là nhà ở xã hội, nhà ở giá thấp ở khu đô thị, nhà ở cho công nhân khu công nghiệp, nhà trọ cho học sinh, sinh viên và nhà ở cho người nghèo khu vực nông thôn Theo báo cáo của bộ xây dựng, đến năm 2015, dân
số Việt Nam khoảng 91,5 triệu người và nhu cầu về nhà ở là 1.966,6 triệu mét vuông Nhu cầu về vốn đầu tư cho nhà ở năm 2015 là 2.205.000 tỷ đồng và đến 2020 cần 1.767.000 tỷ đồng Nhu cầu về nhà ở ngày càng cao nhưng thị trường nhà ở cho thuê chưa phát triển tương xứng.2
Với những khó khăn hiện nay của ngành bất động sản, để giảm thiểu việc bất động sản “đóng băng”, ngoài các chính sách đầu tư, phát triển và hỗ trợ của nhà nước, doanh nghiệp cần phải đưa ra các chính sách quảng cáo, ưu đãi để có thể bán được các sản phẩm của mình Thay vì phải đăng tin quảng cáo trên các phương tiện truyền
2 Trích http://www.tinmoi.vn/nguyen-nhan-khien-bat-dong-san-dong-bang-01776987.html
Trang 11thông với chi phí cao hoặc thông qua các trung tâm mua bán nhà đất, các thương lái,
sẽ dễ dàng hơnđể đăng tin chỉ với vài bước đơn giản trên các Website quảng cáo nhà đất
Hình 1.1 Hình ảnh “đóng băng” của bất động sản
Bên cạnh đó, theo xu hướng phát triển của công nghệ thông tin và truyền thông cùng với sự phát triển mạnh mẽ của các phần mềm ứng dụng, các phương tiện truyền thông sử dụng công nghệ cao ra đời làm cho thế giới được kết nối với nhau thành một thể thống nhất Ngày nay những chiếc điện thoại không còn mang tính năng liên lạc đơn giản mà nó được tích hợp các ứng dụng cần thiết và hữu ích cho người dùng Với
sự ra đời của các smartphone, tablet kèm theo những công nghệ tiên tiến đã đưa toàn
bộ thông tin trong cuộc sống nằm trong lòng bàn tay
Cùng với sự đa dạng về các sản phẩm và các nhà sản xuất phần cứng, thị trường hệ điều hành dành cho các smartphone cũng cạnh tranh đầy sôi nổi bằng cách không ngừng nâng cấp các phiên bản của các nhà sản xuất Hiện nay, các nhà sản xuất
hệ điều hành dành cho smartphone nổi bật như Google, Apple, Microsoft, BlackBerry, Nokia với các dòng sản phẩm như Android, iOS, Windows Mobile, RIM và Symbian
Trang 12Hình 1.2 Thị trường hệ điều hành di độngMặc dù sinh sau đẻ muộn nhưng Android đang có những bước tiến thần tốc Gần đây, trong sự kiện ra mắt iPhone 5 vào tháng 9 năm 2012 tại San Francisco, Apple đã công bố kho ứng dụng App Store của mình đã đạt tới con số 70.000 ứng dụng Và ít có ai nghỉ rằng kho ứng dụng Google Play Store dành cho nền tản Android lại có thể đuổi kịp được App Store về số lượng ứng dụng dù rằng ra đời sau Nhưng vừa qua, lượng ứng dụng trên nền tản di động Android đã đạt tới con số 70.000 ứng dụng.3 Có thể nói Google Play Store đã đạt được nhựng bước tăng trưởng thần kỳ về
số lượng ứng dụng Các lập trình viên, các nhà sản xuất điện thoại luôn ưu tiên sử dụng Android vì đây là một hệ điều hành mã nguồn mở được Google phát triển dựa trên nền tản Linux kèm theo sự linh hoạt từ nền tảng Google, phù hợp với các smartphone tầm thấp lẫn tầm cao Hàng loạt các ông lớn sản xuất điện thoại di động
và máy tính bảng sử dụng hệ điều hành Android như HTC, Samsung, LG, Motorola, Sony Ericsson Các nhà lập trình ứng dụng cho Android ngày càng nhiều, kho ứng dụng Android market ngày càng lớn mạnh và đủ sức cạnh tranh với AppStore của Apple Chính vì những điều trên, Android được hứa hẹn sẽ là hệ điều hành thống trị trong tương lai
3 Theo 2012110108023557.chn
Trang 13http://genk.vn/dien-thoai/google-play-store-da-duoi-kip-app-store-ve-so-luong-ung-dung-Vấn đề đặt ra, các Website rao vặt nhà đất ngày càng nhiều với các mức thu phí đăng tin khác nhau mang lại nhiều sự lựa chọn cho người dùng, để nhận được nhiều
sự quan tâm sử dụng của khách hàng, cần phải có một hệ thống quảng cáo tin tức nhà đất một cách hiệu quả, nhanh chóng, tiện lợi, rộng rãi hơn Vì thế, nhóm đã tận dụng một cách tối đa những lợi ích mà chiếc điện thoại thông minh mang lại bằng cách xây dựng một ứng dụng hỗ trợ quảng cáo nhà đất trên điện thoại di động sử dụng hệ điều hành Android
1.3 Mục tiêu đề tài
Hệ thống hướng đến việc mang lại lợi ích cho cả ba bên bao gồm người rao bán, người mua lẫn người quản lý hệ thống Người rao bán có thể sử dụng hệ thống để đăng tin rao vặt nhà đất với chỉ vài thao tác đơn giản và chỉ mất vài nghìn đồng SMS 4
để một tin nhà đất được hiển thị trên Website 9House Người mua có thể sử dụng các chức năng của ứng dụng trên thiết bị Android như bản đồ Google để biết rõ vị trí địa
lý các căn nhà và sử dụng công nghệ định vị kết hợp với tính năng chỉ đường để dễ dàng tìm kiếm vị trí căn nhà yêu thích Người quản lý hệ thống có thể thu lợi nhuận thông qua tổng đài SMS Bên cạnh đó hệ thống còn mang lại nhiều tính năng hữu ích đặc biệt là việc trao đổi dễ dàng giữa người bán và người mua thông qua hệ thống bình luận tin tức trên ứng dụng Android
1.4 Đối tượng và phạm vi nghiên cứu
4 SMS, http://www.wisegeek.org/what-is-sms.htm
5 GPS, http://en.wikipedia.org/wiki/Global_Positioning_System
Trang 14Phạm vi nghiên cứu:
Nghiên cứu về lĩnh quảng cáo, rao vặt nhà đất
Nghiên cứu về các loại nhà đất, các thông tin cần thiết để rao bán nhà đất
Nghiên cứu về cách thức tích hợp dịch vụ tổng đài SMS để mang lại lợi nhuận cho người quản lý
Nghiên cứu về phát triển ứng dụng trên nền tảng Android và công nghệ của Google (Google Maps)
Trang 15CHƯƠNG 2: GIỚI THIỆU VỀ ANDROID VÀ CÁC CÔNG NGHỆ TRIỂN
KHAI 2.1 Tổng quan về hệ điều hành Android
2.1.1 Lịch sử của Android
Android là một hệ điều hành mã nguồn mở dành cho điện thoại di động được phát triển bởi Google, dựa trên nền tảng Linux Đầu tiên được ra đời bởi công ty Android Inc, đến năm 2005 Google đã mua lại và xây dựng Android Platform Những nhà đồng sáng lập Android chuyển sang làm việc tại Google gồm có Andy Rubin (đồng sáng lập công ty Danger), Rich Miner (đồng sáng lập công ty Wildfire Communications), Nick Sears (từng là phó chủ tịch của TMobile) và Chris White (trưởng nhóm thiết kế và phát triển giao diện tại WebTV) Khi đó, có rất ít các thông tin về việc phát triển Android của Google, ngoài việc họ đang phát triển phần mềm cho điện thoại di động Điều này đã chứng minh cho thế giới biết rằng Google đang có
ý định tham gia vào thị trường di động 6
Ngày 5 tháng 9 năm 2007, Liên minh thiết bị cầm tay mã nguồn mở (Open Handset Alliance), bao gồm nhiều công ty trong đó có Texas Instruments, Tập đoàn Broadcom, Google, HTC, Intel, LG, Tập đoàn Marvell Technology, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel và T-Mobile Liên minh được thành lập với mục đích phát triển các tiêu chuẩn mã nguồn mở cho thiết bị di động Và cũng trong ngày này liên minh đã cho ra mắt nền tảng Android được xây dựng trên nhân Linux phiên bản 2.6
Ngày 22 tháng 10 năm 2008, chiếc điện thoại sử dụng hệ điều hành Android chính thức ra đời do hãng HTC thiết kế với tên gọi HTC Dream dùng phiên bản Android 1.0 được nhà mạng T-Mobile giới thiệu với tên gọi T-Mobile G1
6 Theo http://www.vietnamandroid.com/gioi-thieu
Trang 16Trung tâm nghiên cứu và tư vấn công nghệ Gartner 7 của Mỹ đã đưa ra dự đoán của mình về thị trường smartphone toàn cầu đến năm 2015 Theo đó, Android sẽ tiếp tục tăng trưởng mạnh trong vòng những năm tới để trở thành nền tảng có thị phần lớn nhất.
Hình 2.1 Thống kê thị trường các hệ điều hành của Gartner 8
Với tầm nhìn chiến lược tới năm 2015, Gartner dự đoán Android sẽ là hệ điều hành có thị phần đứng đầu với gần 49%, trong khi đó iOS sẽ đứng thứ ba kém Windows Phone 2.3%
7 About Gartner, http://www.gartner.com/technology/about.jsp
8 Theo http://www.gartner.com/newsroom/id/1622614
Trang 172.1.2 Các phiên bản Android
Các phiên bản của Android được mô tả chi tiết dưới hình sau:
Hình 2.2 Các phiên bản của Android
2.1.3 Kiến trúc hệ điều hành Android
Hệ điều hành Android được thiết kế theo 4 tầng: Application, Application Framwork, Library và Linux Kernel Kiến trúc của hệ điều hành Android được thể hiện tổng quát dưới hình sau: [2]
Trang 18Hình 2.3 Kiến trúc của hệ điều hành Android
2.1.3.1 Tầng Application
Những ứng dụng mà người dùng cuối sử dụng trên thiết bị di động do các nhà phát triển phần mềm lập trình nên Một số ứng dụng mà Android tích hợp sẵn như: danh bạ, lịch, ứng dụng chụp hình quay phim, tin nhắn, chương trình nghe nhạc, xem phim
2.1.3.2 Tầng Application Framework
Tầng này cung cấp các API 9 giúp các lập trình viên có thể sử dụng các thiết bị phần cứng, các dịch vụ chạy nền, thiết lập các cảnh báo cho người dùng và nhiều chức năng khác
Một ứng dụng Android bao gồm một bộ các dịch vụ và hệ thống sau:
View: giúp lập trình viên xây dựng giao diện cho ứng dụng như: Lists, Grids, Button, Web browser
Content Provider: giúp truy xuất dữ liệu từ ứng dụng khác (ví dụ như Contacts) hoặc quản lý dữ liệu của ứng dụng
Resource Manager: hỗ trợ việc truy xuất đến các tài nguyên như: layout, graphic, locallized String
Notification Manager: hiển thị các thông báo, cảnh báo cho người dùng
Activity Manager: kiểm soát vòng đời “lifecycle” của ứng dụng và điều hướng các activity
2.1.3.3 Tầng Library
Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều thành phần khác nhau trong hệ thống Android, các thư viện đó được tập hợp thành một số nhóm như:
9 API, http://www.pcmag.com/encyclopedia_term/0,2542,t=API&i=37856,00.asp
Trang 19 Thư viện hệ thống (System C Library): thư viện dựa trên chuẩn C, được
sử dụng chỉ bởi hệ điều hành
Thư viện Media (Media Libraries): mở rộng từ PacketVideo’s OpenCORE, hỗ trợ các thư viện phát và ghi các định dạng âm thanh phổ biến, các định dạng video và ảnh tỉnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG và PNG
Thư viện Web (LibWebCore): dùng Webkit Engine để nhúng vào các ứng dụng khác, nó có thể hỗ trợ đa định dạng như HTML5, JavaScript, CSS, DOM, AJAX
Thư viện SQLite: Quản lý cơ sở dữ liệu của ứng dụng
2.1.3.4 Tầng Android Runtime
Android bao gồm một tập hợp các thư viện cơ bản, cung cấp hầu hết các chức năng sẵn có trong các thư viện lõi của ngôn ngữ lập trình Java (Java Core) Tất cả ứng dụng đều chạy trong tiến trình riêng Máy ảo Java (Dalvik Virtual Machine) đã được phát triển để cho một thiết bị có thể chạy nhiều máy ảo một cách hiệu quả
Được viết từ ngôn ngữ Java, tuy nhiên các ứng dụng Android không chạy bằng JRE (Java Runtime Environment) của Oracle mà chạy bằng máy ảo Dalvik do Google phát triển
2.1.3.5 Tầng Linux Kernel
Android phát triển dựa trên Linux phiên bản 2.6, cung cấp các dịch vụ cố lõi của hệ thống như bảo mật, quản lý bộ nhớ, quản lý tiến trình Nhân Linux hoạt động như một lớp trừu tượng hóa nhằm liên lạc giữa phần cứng và phần còn lại của phần mềm
Trang 202.1.3.6 Máy Ảo Dalvik
Dalvik được thiết kế bởi Dan Bornstein, là máy ảo giúp các ứng dụng Java chạy được trên các thết bị di động sử dụng hệ điều hành Android Nó chạy các ứng dụng đã chuyển đổi thành một file thực thi Davik
Dalvik hoàn toàn khác với máy ảo Java (Java Virtual Machine), khi nhà phát triển viết ứng dụng Android thì sử dụng ngôn ngữ Java, sau đó được biên dịch sang bytecode của Java Tuy nhiên, để ứng dụng có thể chạy trên môi trường Android thì nhà phát triển phải thực thi một công cụ có tên là dx Đây là công cụ dùng để chuyên đổi định dạng bytecode sang Dex-bytecode (Dex là từ viết tắt của Dalvik excutable đóng vai trò thực thi các ứng dụng Android) [7]
2.1.4 Giới thiệu Android SDK
2.1.4.1 Android SDK
Android SDK (Android Software Development Kit) là bộ công cụ dùng để phát triển ứng dụng cho hệ điều hành Android Android SDK do Google xây dựng và phát hành miễn phí để các nhà phát triển phần mềmm dễ dàng xây dựng và phát triển các ứng dụng trên hệ điều hành Android
API cung cấp các dịch vụ nền tảng như GPS, Google Maps,
Truy cập đến các phần cứng đa phương tiện như chơi nhạc, ghi âm, camera
10 GMS, http://en.wikipedia.org/wiki/GSM
Trang 21 Chia sẻ dữ liệu trong kho dữ liệu.
Tích hợp trình duyệt dựa trên bộ WebKit (mã nguồn mở)
P2P hỗ trợ sử dụng Google Talk
OpenGL ES hỗ trợ đồ họa 3D [7]
2.1.4.2 Các gói Java cần thiết
Java.lang : chứa các lớp lõi của Java
Java.io : xuất nhập
Java.net : kết nối mạng
Java.util : chứa các lớp tiện ích ví dụ như Log
Java.text : tiện ích xử lý văn bản
Java.math : các lớp tính toán
Javax.net : các lớp mạng
Javax.security : các lớp liên quan đến bảo mật
Javax.mxl : các lớp liên quan đến DOM-based XML
Org.apache.* : các lớp liên quan đến HTTP
Org.xml : các lớp liên quan đến SAX-based XML [1]
2.1.4.3 Các gói dùng cho lập trình Android
Android.app: truy cập vào các ứng dụng Android
Android.content: truy xuất dữ liệu trong Android
Android.net: bao gồm các lớp Uri 11 (Uniform Resource Indentifier) dùng cho việc truy xuất các nội dung khác
11 Uri, http://en.wikipedia.org/wiki/Uniform_resource_identifier
Trang 22 Android.graphics: hỗ trợ đồ họa.
Android.opengl: các lớp OpenGL
Android.os: truy cập ở mức độ đến môi trường Android
Android.os: truy cập mức độ hệ thống đến môi trường Android
android.provider: các lớp liên quan đến ContentProvider
android.telephony: khả năng truy cập Telephony
android.text: giao diện văn bản
android.util: tập các tiện ích thao tác trên văn bản,bao gồm XML
android.view: thành phần UI 12(giao diện người dùng)
android.webkit: hỗ trợ chức năng trình duyệt Web
android.widget: thành phần UI mức độ cao hơn [1]
2.1.5 Các thành phần của một ứng dụng Android
2.1.5.1 Tập tin AndroidManifest.xml
Trong bất ký một ứng dụng Android nào đều có tập tin này, nó được tạo ra mặc định khi ta tạo một project Android bất kỳ Tập tin này chứa đựng các thành phần của ứng dụng như: các permission, các screen mà ứng dụng hỗ trợ, các activity, các service và quy định activity nào sẽ chạy đầu tiên
12 UI, http://en.wikipedia.org/wiki/User_interface
Trang 23Hình 2.4 Giao diện quản lý tập tin ManifestAndroidManifest.xml có 5 thành phần chính:
Manifest: Tab này dùng để chỉnh sửa thông tin của ứng dụng như quản
lý package name, version
Application: tab này dùng để khai báo chi tiết về ứng dụng như tên, icon, các phương thức, dịch vụ cung cấp, các activity
Permission: tab này dùng để hiển thị các lớp dùng để theo dõi ứng dụng
AndroidManifest.xml: dùng để chỉnh sửa tập tin AndroidManifest bằng code
Thông thường, một tập tin AndroidManifest.xml gồm có 3 thẻ chính, ngoài ra còn có nhiều thẻ phụ khác:
Thẻ Application: chứa các thuộc tính để định nghĩa cho ứng dụng Android như icon, label, theme, permission, process,
Trang 24 Thẻ Permission: bao gồm các thuộc tính chỉ định quyền truy xuất và sử dụng tài nguyên của ứng dụng Trong ứng dụng nếu muốn sử dụng một loại tài nguyên nào đó thì phải khai báo trong thẻ permission.
Thẻ Version: dùng để xác định phiên bản của hệ điều hành Android mà ứng dụng có thể hỗ trợ [8]
2.1.5.2 Tập tin R.Java
R.java là tập tin tự động sinh ra khi tạo ứng dụng Android, tập tin này được sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng dụng
Mã nguồn của tập tin R.java tự động sinh ra khi có bất kì một sự kiện nào xảy
ra làm thay đổi các thuộc tính trong ứng dụng chẳng hạn như, khi copy một tập tin hình ảnh từ ngoài vào trong project thì đường dẫn đến tập tin đó sẽ được hình thành vào trong tập tin R.java hoặc khi xóa một tập tin hình ảnh nào thì đường dẫn cũng sẽ được xóa trong Người lập trình không cần phải thao tác gì trong tập tin này khi lập trình [6]
tự viết hoa và khoảng trắng Ngoài ra, thư mục res còn chứa các tập tin layout dùng để thiết kế giao diện cho ứng dụng Android
Res/drawable: chứa các hình ảnh, icon của ứng dụng
Res/layout: chứa các thành phần giao diện
Trang 252.1.6 Chu trình của ứng dụng Android
2.1.6.1 Activity
Activity là một trong bốn thành phần chính của một ứng dụng Android (Activity, Content provider, Broadcast Receiver, Services) Một activity cung cấp một giao diện cho người dùng giao tiếp Một ứng dụng thường bao gồm nhiều activity, trong đó sẽ có một activity chính dùng để hiển thị khi ứng dụng được chạy Mỗi Activity có thể gọi hiển thị activity khác để thực hiện một hành động khác Mỗi lần một Activity mới bắt đầu thì các actvity trước đó sẽ ở trạng thái dừng lại và được quản
lý theo cớ chế stack (LIFO – Last In First Out) [3]
2.1.6.2 Activity Stack
Hệ điều hành Android quản lý các activity theo kiểu stack: khi một activity mới được khởi tạo, nó sẽ được xếp lên đầu của stack và trở thành running activity, các activity trước đó sẽ bị tạm dừng và chỉ hoạt động khi các activity gọi sau nó được giải phóng Tức là, khi một activity mới được gọi thì nó sẽ đưa lên đỉnh của stack và activty trước đó sẽ bị đẩy xuống dưới và không được hiển thị trong suốt thời gian activity mới tồn tại Khi người dùng nhấn phím Back thì activity kế tiếp trong stack được chuyển lên để hiển thị và activity hiện tại sẽ bị gỡ bỏ
Hình 2.5 Mô hình activity Stack
Trang 262.1.6.3 Vòng đời của một activity
Mỗi một activity có một chu trình hoạt động (hay gọi là vòng đời) từ lúc sinh ra cho đến lúc mất đi Mô hình sau mô tả một vòng đời của một activity:
Hình 2.6 Vòng đời của một Activity
Trang 27 onCreate(): gọi khi lớp activity được khởi tạo, dùng để thiết lập giao diện ứng dụng và thực thi những thao tác cơ bản.
onStart(): gọi trước khi lớp ứng dụng xuất hiện trên màn hình
onResume(): gọi ngay sau onStart() trước khi activity tương tác với người dùng, lúc này activity đang ở đỉnh của stack
onPause(): gọi khi hệ thống bắt đầu onResume() một activity khác, activity này có thể bị “kill” nếu như ứng dụng khác cần bộ nhớ
onRestart(): gọi khi ứng dụng đang ở onStop() nhưng muốn khởi động lại bằng onStart()
onStop(): được gọi khi người dùng không còn nhìn thấy activity này nữa, activity này có thể bị “kill” nếu một ứng dụng khác cần bộ nhớ
onDestroy(): được gọi trước khi activity bị hủy, hoặc bị hệ thống hủy để tiết kiệm vùng nhớ [3]
Trang 28Hình 2.7 Đối tượng View trong Android
Có nhiều kiểu View và ViewGroup, mỗi kiểu là một kế thừa của lớp View và tất cả các kiểu đó được gọi là Widget Trong Android Platform, các screen luôn được
bố trí theo một cấu trúc phân cấp, một screen là tập hợp các layout và widget được bố trí có thứ tự Để thể hiện một sreen thì trong hàm onCreate của mỗi Activiy cần phải gọi hàm setContentView(R.layout.main), trong đó main.xml là layout được gọi hiển thị khi activity được khởi tạo [6]
2.2.1.2 ViewGroup
ViewGroup là sự mở rộng của lớp View, hay nói cách khác là một nhóm các wiget layout dùng để bố trí các đối tượng như button, textview, edittext trong một giao diện Có các loại ViewGroup sau:
Linear Layout: dùng để bố trí các thành phần giao diện theo chiều ngang hay dọc nhưng trên một dòng duy nhất, không có xuống dòng Các thành phần trong Linear Layout không phụ thuộc vào kích thước của
Trang 29màn hình và chúng được dàn theo những tỷ lệ cân xứng dựa vào các ràng buộc của nhau.
Frame Layout: được dùng để bố trí các đối tượng theo kiểu giống như Layer trong Photoshop Những đối tượng nào thuộc Layer bên dưới thì
sẽ bị che khuất bởi các đối tượng của Layer bên trên FramLayer thường được sử dụng khi muốnt tạo ra các đối tượng có khung hình bên ngoài
Absolute Layout: layout này được sử dụng để bố trí các widget vào một
vị trí bất ký dựa vào 2 thuộc tính tọa độ x, y Tuy nhiên, kiểu layout này rất ít sử dụng vì tọa độ của các đối tượng sẽ cố định và không tự điều chỉnh tỷ lệ khoảng cách giữa các đối tượng Khi sử dụng ứng dụng cho các kích thước màn hình khách nhau thì vị trí của đối tượng sẽ không chính xác như ban đầu Thông thường, layout này thường được dùng trong thiết kế game
Relative Layout: Layout này cho phép bố trí các đối tượng theo một trục đối xứng ngang hoặc dọc Để cố định các đối tượng cần phải xác định các mối ràng buộc nào đó với một hoặc nhiều đối tượng khác Các ràng buộc này là các ràng buộc trái, phải, trên, dưới so với một hoặc nhiều đó tượng khác hoặc so với layout cha Dựa vào các mối ràng buộc đó mà Relative Layout cũng không phụ thuộc vào kích thước của màn hình thiết bị
Table Layout: Layout này sử dụng khi cần thiết kế các đối tượng widget theo hình dạng như một table gồm các row và column Ví dụ như giao diện của một máy tính bỏ túi, một bàn phím di động, một bảng dữ liệu
2.2.2 Các thành phần giao diện người dùng
2.2.2.1 Button
Button là đối tượng đầu tiên phải nhắc đến trong widget vì đây là đối tượng được sử dụng nhiều nhất trong các ứng dụng Android Để thiết kế giao diện với một button ta có hai cách như sau:
Trang 30 Thiết kế bằng XML: khai báo trong tập tin xml nằm trong thư mục res,
ta có thể tùy chỉnh màu sắc, kích thước dài rộng, bo các góc cạnh, hiệu ứng khi chạm
Thiết kế bằng Code: Không cần phải khai báo trong tập tin xml mà ta chỉ cần khai báo trong các lớp và định nghĩa một số thuộc tính của Button
2.2.2.2 ListView
Được sử dụng để hiển thị danh sách các đối tượng theo từng dòng, ví dụ như: danh bạ, danh sách các bài hát Mỗi dòng thông thường được tải lên từ một tập tin XML đã thiết kế sẵn các thuộc tính và đối tượng trên đó [6]
Để thể hiện một list thông tin lên mà hình thì cần có 3 yếu tố chính sau:
Data Source: có thể là một ArrayList, HashMap hoặc bất ký một cấu trúc dữ liệu kiểu danh sách nào
Adapter: là một lớp trung gian ánh xạ dữ liệu trong Data Source vào đúng vị trí của đối tượng đã xác định và hiển thị thông tin lên chúng trong ListView Chẳng hạn như Data Source có một trường name sẽ ánh
xạ lên một TextView để hiển thị lên ListView
ListView: là đối tượng để hiển thị các thông tin trong Data Source ra một cách trực quan trên các đối tượng giao diện cho người dùng xem và
có thể tương tác trực tiếp với nó
2.2.2.3 EditText
Đối tượng EditText trong Android cũng giống như một TextField hay một TextBox Giá trị android:singleLine bằng false thì EditText sẽ là một TextBox, còn người lại là true sẽ là một TextField Giá trị android:inputType dùng để xác định các kiểu văn bản nhập vào trong EditText chẳng hạn như password, email, number
Trang 312.2.2.4 TextView
TextView ngoài tác dụng là sử dụng để hiển thị văn bản thì nó còn cho phép định dạng nội dung bằng thẻ html Tuy nhiên, TextView chỉ có thể định dạng văn bản HTML thông thường như cỡ chữ, màu sắc, in đậm nhưng không thể hiển thị hình ảnh thông qua một url nào đó trên Internet, điều này chỉ có thể sử dụng trên WebView
2.2.2.5 CheckBox
Là đối tượng chỉ sử dụng hai giá trị true và false, tương ứng với thao tác chọn
và bỏ chọn Trong một nhóm gồm các đối tượng CheckBox ta có thể chọn nhiều đối tượng, đây là điểm khác biệt cơ bản giửa CheckBox và Radio Button CheckBox thường được thiết kế với các kiểu vuông, còn Radio Button thường được thiết kế bằng các nút tròn
2.2.2.6 Options Menu
Có hai cách để tạo một Options Menu, tạo bằng tập tin xml hoặc tạo thông qua code Options Menu được hiển thị ở góc dưới màn hình và được hiển thị lên khi gọi hàm openOptionsMenu() Options Menu là nơi thường dùng để đặt các hành động của toàn bộ ứng dụng chẳng hạn như: tìm kiếm, email, settings, exit [7]
Hình 2.8 Options Menu
Trang 322.2.2.7 Context Menu
Context Menu thường được sử dụng trong một ngữ cảnh nhất định ví dụ như khi nhấn vào một item của ListView, hoặc xử lý tác vụ nào đó khi bấm vào một Button Để tạo Context Menu ta cũng có hai cách là tạo bằng xml hoặc bằng code Context Menu thường được hiển thị giữa màn hình thành một dạng List để người dùng lựa chọn
Để khởi tạo một Context Menu, tao sử dụng phương thức:
onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) , với các tham số được truyền vào như sau:
ContextMenu: Đối tượng để thêm các item vào Context Menu
View: đối tượng dùng để gọi hiển thị Context Menu
ContextMenuInfo: cho biết vị trí xảy ra sự kiện trong ListView
Hình 2.9 Context Menu
Trang 332.2.3 Giới thiệu Intent
2.2.3.1 Khái niệm Intent
Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một activity
Là cầu nối giữa các activity: ứng dụng Android bao gồm nhiều activity, mỗi activity hoạt động độc lập nhau và thực hiện những công việc khác nhau Intent đứng giữa giúp các activity có thể triệu gọi cũng như truyền
dữ liệu tới một activity khác [7]
Hình 2.10 Cầu nối Intent giữa các activity
2.2.3.2 Các thuộc tính của Intent
Một Intent thường có hai thuộc tính chính: [7]
action: là hành động được gọi thực hiện ví dụ: ACTION_VIEW, ACTION_MAIN
Trang 34 data: là dữ liệu sẽ được xử lý trong action, thường được diễn ta là một Uri.
Một số Action thường được sử dụng trong Intent:
ACTION_VIEW Hiển thị thông tin liên lạc trong danh bạ
của định danh lấy từ thông tin của Uri
ACTION_DIAL Hiển thị trình quay số với thông tin lấy từ
địa chỉ chứa trong Uri
ACTION_EDIT Sửa đổi thông tin của định danh lấy từ
địa chỉ chưa trong Uri
ACTION_ANSWER Mở activity để xử lý các cuộc gọi tới,
thường là Phone Dialer của Android
ACTION_CALL
Mở một Phone Dialer và ngay lập tức thực hiện cuộc gọi dựa vào thông tin trong data Uri
ACTION_DELETE Mở một activity cho phép xóa dữ liệu mà
địa chỉ cua nó chứa trong data Uri
ACTION_SEND Mở một activity cho phép gửi dữ liệu từ
data Uri
ACTION_SENDTO Mở một activity cho phép gửi thông điệp
đến địa chỉ trong Uri
ACTION_MAIN Sử dụng để khởi chạy một activity
Bảng 2.1 Bảng các Action thường sử dụngNgoài các phần chính, Intent còn có các thành phần phụ khác như:
Catelogy: cung cấp thông tin bổ sung về các hành động được thực thi
Type: chỉ định rõ ràng một loại dữ liệu (MIME type) của Intent
Component: chỉ định tên của một lớp thành phần được sử dụng
Extras: mang theo đối tượng Bundle chứa các giá trị cần bổ sung
Trang 352.2.4 Service
Service là các tác vụ chạy ngầm dưới hệ thống nhằm thực hiện một nhiệm vụ nào đó Mỗi lớp Service phải chứa thẻ <service> được khai báo trong tập tin AndroidManifest.xml [3]
Cũng như các đối tượng khác, service chạy trên luồng của tiến trình chính nhưng không phải là một tiến trình độc lập Đối tượng service không chạy trên tiến trình của riêng nó mà chạy trên tiến trình của chương trình
Service có chứa hai đặc trưng cơ bản:
Là một chức năng để ứng dụng thông báo với hệ thống về việc thực hiện
ở phía dưới nền ngay cả khi người dùng không còn tương tác với ứng dụng Điều này tương đương với việc gọi phương thức Context.startService(), service sẽ yêu cầu hệ thống lên lịch để chạy cho đến khi bị chính service hay người dùng dừng lại
Là chức năng cho phép ứng dụng cung cấp các chức năng cho các ứng dụng khác Điều đó tương ứng với việc gọi Context.bindService(), cho phép một kết nối long-standing được tạo ra để service hay người nào đó dừng lại
Trang 36Hình sau mô tả chi tiết vòng đời của một service:
Hình 2.11 Vòng đời của một ServiceTheo hình trên ta thấy, một service bắt đầu bởi phương thức startService() là service dùng để thể hiện các tác vụ ngầm dưới nền, service được bắt đầu bởi phương thức bindService() là service được dùng để cung cấp các chức năng cho chương trình khác
2.2.5 Content Provider
Chúng ta có thể hình dung Content Provider một cách đơn giản là một phương thức cung cấp các dịch vụ để hỗ trợ cho ứng dụng Android như: Danh bạ, Call log, SMS, các thông tin cấu hình trên điện thoại Trong hệ thống Android, tất cả các tài nguyên như: Danh bạ, SMS, đều được lưu trự trong cơ sở dữ liệu SQLite của hệ thống và cho phép người dùng có thể truy xuất vào nó Tuy nhiên, chúng ta không cần dùng các lệnh hoặc cách chương trình để truy xuất mà có thể sử dụng API của Android để dễ dàng truy xuất thông qua một dịch vụ hỗ trợ cho việc truy xuất đó chính là Content Provider [3]
Trang 37Content Provider hiện thực một tập phương thức chuẩn mà các ứng dụng khác
có thể truy xuất và lưu trữ dữ liệu của loại nó điều khiển Tuy nhiên, những ứng dụng không thể gọi các phương thức trực tiếp Hơn thế chúng dùng lớp Content Resolver và gọi những phương thức đó Một Content Resolver có thể giao tiếp đến nhiều content provider, nó cộng tác với các provider để quản lý bất kỳ giao tiếp bên trong liên quan Lớp Content Resolver cung cấp các phương thức xử lý dữ liệu thông qua các Uri, mỗi Content Provider có 1 Uri cụ thể
Một Uri thường gồm các thành phần sau:
Phần 1: Tiền tố content, chỉ ra dữ liệu được là content provider, và nó không bao giờ thay đổi
Phần 2: Phần này chỉ đến nơi lưu trữ dữ liệu
Phần 3: Phần này chỉ loại dữ liệu là contact ,sms ,…
Phần 4: Phần này chỉ đến đúng vị trí của dữ liệu nói cách khác nó chỉ đến dòng trong table của cơ sở dữ liệu
Ví dụ: content://contacts/people/1 : lấy thông tin liên hệ của định danh thứ 1 trong cơ sở dữ liệu lưu trữ danh bạ
Bên cạnh content provider do android cung cấp, người dùng có thể tự định nghĩa ra một content cho riêng ứng dụng của mình
2.2.6 Broadcast Receiver
Là lớp nhận về các Intent được gởi bởi sendBroadcast() Có thể gọi Broadcast Receiver bằng hai cách: Context.registerReceiver() hay thông qua thẻ <receiver> trong tập tin AndroidManifest.xml [3]
Có hai loại Broadcast Reveiver:
Normal broadcasts: Không đồng bộ hoàn toàn Tất cả các Receiver của Broadcast chạy trong một lệnh không xác định, thường là cùng
Trang 38lúc Như vậy sẽ hiệu quả hơn, nhưng đồng nghĩa với Receiver không thể
sử dụng kết quả hoặc xóa
Ordered broadcasts: được gởi đến mỗi Receiver tại mỗi thời điểm Mỗi Receiver nhận được sẽ truyền đến Receiver kế tiếp hoặc dừng việc broadcast Trật tự của các receiver được quyết định bởi thuộc tính android:priority trong intent-filter tương ứng
2.2.7 SQLite
Mỗi ứng dụng đều phải sử dụng dữ liệu, có thể là một dữ liệu đơn giản hay đôi khi là cả một hệ thống, một cấu trúc phức tạp Trong Android thì hệ cơ sở dữ liệu được sử dụng là SQLite Database, đây là hệ thống mã nguồn mở được sử dụng rộng rãi trong các ứng dụng như: Mozilla Firefox, iPhone
Trong Android, cơ sở dữ liệu tạo ra cho một ứng dụng thì chỉ có ứng dụng đó mới có quyền truy cập và sử dụng, các ứng dụng khác thì không Khi đã được tạo, cơ
sở dữ liệu SQLite được chứa trong thư mục /data/data/<package_name>/database [7]
SQ Lite không thích hợp với những hệ thống lớn nhưng ở quy mô vừa tầm thì SQLite phát huy uy lực và không hề yếu kém về mặt chức năng hay tốc
độ Với các đặc điểm trên SQLite được sử dụng nhiều trong việc phát triển, thử nghiệm v v và là sự lựa chọn phù hợp cho những người bắt đầu học database Hiện nay thì SQLite đã được ứng dụng vào smartphone như iPhone và Android để lưu trữ dữ liệu
SQLiteOpenHelper là một lớp ảo, giống như tên của nó SQLite Open Helper
nó được các nhà phát triển tạo ra để giúp tạo các cơ sở dữ liệu dùng SQLite (vì SQLite không hỗ trợ các phương thức khởi tạo cơ sở dữ liệu) Vì SQLiteOpenHelper là một lớp ảo nên ta cần khai báo một lớp khác kế thừa nó
Chú ý nó có hai phương thức ảo cũng cần được viết lại là:
onCreate(SQLiteDatabase db): được gọi khi cơ sở dữ liệu được tạo, ta
dùng khi mà tạo bảng,tạo view hoặc là trigger
Trang 39 onUpgrade(SQLiteDatabse db, int oldVersion, int newVersion) : được dùng khi ta sửa cơ sở dữ liệu như thay đổi bảng, xóa, tạo bảng mới.
2.3 Các thành phần và công nghệ triển khai
2.3.1 Eclipse
Eclipse là môi trường phát triển dành cho Java (Integrated Development Environment - IDE) Eclipse được tạo ra bởi cộng đồng phát triển mã nguồn mở do hãng IBM đề xướng vào tháng 11-2001 nhằm phát triển môi trường hỗ trợ các ứng dụng phần mềm mã nguồn mở tích hợp Đầu năm 2004, Eclipse trở thành Eclipse Foundation là một tổ chức phi lợi nhuận với sự tham gia của nhiều cá nhân, đơn vị trường học, viện nghiên cứu và doanh nghiệp hoạt động trong ngành công nghệ phần mềm
Eclipse được xây dựng dựa trên hai thành phần:thành phần nền tảng (Core) và các thành phần được tích hợp thêm (plug-in)
Thành phần nền tảng (Core): đây là phần chứa các chức năng, dịch vụ cần thiết như các hệ thống phát triển khác như giao diện, trình soạn thảo văn bản, hướng dẫn sử dụng, báo lỗi Cụ thể hơn, thành phần này bao gồm các nền tảng để chạy chương trình, quản lý tài nguyên như hệ thống thông tin, các thành phần tích hợp (plug-in), giao diện người dùng, các tài nguyên cần thiết cho người lập trình và các công cụ hỗ trợ lập trình, đóng gói, hướng dẫn
Thành phần tích hợp (plug-in): tùy vào các ứng dụng cần phát triển mà những lập trình viên sẽ tích hợp thên vào các thành phần khác để hỗ trợ cho việc lập trình như: Android SDK, Java Development Tools – JDT, Web Tools Project – WTP, C Development Tools – CDT Một ứng dụng có thể tích hợp thêm nhiều thành phần khác, các thành phần này liên kết và hỗ trợ nhau Việc tích hợp vào Eclipse thực hiện rất đơn giản, chỉ cần chép các tập tin vào đúng thư mục, sau đó khởi động lại Eclipse
sẽ tự động nhận được các thành phần “plug-in”
Trang 402.3.2 Google Maps
Google Maps (lúc trước được gọi là Google Local) là một bản đồ vệ tinh được cung cấp miễn phí bởi Google và hỗ trợ nhiều dịch vụ dựa vào bản đồ như Google Ride Finder và có thể dùng để nhúng vào Website của bên thứ ba thông qua Google Maps API Nó cho phép hiển thị bản đồ đường sá và những địa điểm kinh doanh trong khu vực theo ngôn ngữ của mỗi quốc gia trên toàn thế giới
Google Maps là bản đồ số được cập nhật thường xuyên theo sự thay đổi ở các quốc gia lãnh thổ theo thổ ngữ riêng biệt Hiện nay các thiết bị sử dụng các phần mềm được phát triển từ Google Maps ngày càng nhiều do sự cập nhật thường xuyên của Google Ngoài chức năng xác định vị trí, Google đã phát triển thêm tính năng tìm đường, chỉ đường khá chi tiết đặc biệt là ở các thành phố lớn
Google Maps API là gì? Đó là một phương thức cho phép một ứng dụng B sử dụng dịch vụ bản đồ Google Maps do Google phát triển để nhúng vào ứng dụng của
họ Một Google Maps API cho phép người dùng có thể sử dụng tất cả các tính năng của Google có được thông qua các phương thức được Google Maps hỗ trợ sẵn
Nhóm đã xây dựng bản đồ với phiên bản Google Maps API v1 Hiện nay, Google Mpas đã cho ra phiên bản Google Maps API v2
2.3.3 Định vị GPS
Hệ thống định vị toàn cầu (Global Positioning System - GPS) là hệ thống xác định vị trí dựa trên vị trí của các vệ tinh nhân tạo được thiết kế và quản lý bởi Bộ Quốc Phòng Hoa Kỳ, nhưng chính phủ Hoa Kỳ cho phép tất cả các quốc dân trên thế giới sử dụng miễn phí Trong cùng một thời điểm, ở một vị trí trên trái đất nếu xác định được khoảng cách từ điểm đó đến ít nhất ba vệ tinh trên vũ trụ thì sẽ tính được tọa độ của điểm đó
Các vệ tinh GPS bay vòng quanh trái đất hai lần mỗi ngày theo một quỹ đạo rất chính xác và phát tín hiệu có thông tin xuống trái đất Các máy thu GPS nhận thông tin này và thực hiện phép tính lượng giác để xác định vị trí cần tìm Về bản chất máy