Phần mềm ‘Du lịch Hải Phòng’ sẽ cung cấp thông tin địa điểm du lịch chia thànhcác nhóm: ăn uống, vui chơi, tham quan … Cung cấp chức năng quản lý thông tin các địa điểm du lịch, cho phép
Trang 1BỘ GIAO THÔNG VẬN TẢI TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM KHOA CÔNG NGHỆ THÔNG TIN
Trang 2MỤC LỤC
Lời mở đầu 4
CHƯƠNG I: TỔNG QUAN 5
1 Giới thiệu du lịch Hải Phòng 5
2 Công nghệ thiết bị di động 7
2.1. Di động đi tắt đón đầu trong thế giới công nghệ 7
2.2. Thời kỳ “hậu PC” và cơ hội cho các lập trình viên di động 8
3 Mục đích thực hiện đề tài 9
CHƯƠNG II: HỆ ĐIỀU HÀNH ANDROID VÀ CÔNG NGHỆ LIÊN QUAN 11
1 Hệ điều hành Android 11
1.1 Giới thiệu hệ điều hành Android 11
1.2 Những đặc trưng của hệ điều hành Android 11
1.3 Các tính năng hỗ trợ sẵn trong hệ điều hành Android 12
1.4 Kiến trúc và các thành phần trong hệ điều hành Android 12
1.5 Các khái niệm cơ bản trong lập trình ứng dụng Android 14
1.6 Các thành phần trong một project ứng dụng Android 19
2 Công nghệ XML và Webservice 20
2.1 Công nghệ XML 20
2.2 Webservice 22
3 Google Map và Google Maps API Web Services 25
3.1 Google Map 25
3.2 Google Maps API Web Services 26
3.3 Google Geocoding API 28
3.4 Google Distance Matrix API 29
3.5 Google Direction API 31
4 Cơ sở dữ liệu SQLite 36
4.1 Giới thiệu SQLite 36
4.2 Thiết kế của SQLite 36
4.3 Các đặc tính của SQLite 37
4.4 Sử dụng SQLite 37
4.5 Một số ứng dụng lớn của SQLite 40
CHƯƠNG III: PHÂN TÍCH, THIẾT KẾ, XÂY DỰNG ỨNG DỤNG 41
1 Phân tích 41
1.1 Đặt vấn đề 41
Trang 31.2 Khảo sát phần mềm tra cứu thông tin trên di động 42
1.3 Giải quyết vấn đề 43
1.4 Biểu đồ phân cấp chức năng 44
1.5 Biểu đồ luồng dữ liệu 45
1.6 Biểu đồ chức năng 45
2 Xác định các kiểu quan hệ 47
3 Thiết kế dữ liệu 48
4 Kết quả xây dựng ứng dụng 53
CHƯƠNG IV: KẾT LUẬN 56
1 Ưu khuyết điểm của chương trình đã xây dựng 56
4.1 Ưu điểm 56
4.2 Khuyết điểm 56
2 Hướng đi trong tương lai 56
3 Kết quả đạt được 56
4 Tài liệu tham khảo 56
Trang 4Với sự hướng dẫn, giúp đỡ của thầy Nguyễn Vương Thịnh em đã thực hiện đề tài
‘Xây dựng phần mềm tra cứu thông tin du lịch Hải Phòng trên điện thoại di động sửdụng hệ điều hành Android’ Phần mềm sản phẩm có tên là ‘Du lịch Hải Phòng’ Đượcviết bằng ngôn ngữ Java, trên nền tảng Android 2.3.3 API 10, sử dụng Google MapAPI v2 và Google Maps API Web Services, sử dụng công nghệ XML, cơ sở dữ liệuSQLite
Phần mềm ‘Du lịch Hải Phòng’ sẽ cung cấp thông tin địa điểm du lịch chia thànhcác nhóm: ăn uống, vui chơi, tham quan … Cung cấp chức năng
quản lý thông tin các địa điểm du lịch, cho phép người sử dụng thêm thông tincác vị trí của mình chưa có trong dữ liệu, cung cấp thông tin các tuyến và trạm xebuýt, hiển thị toàn bộ thông tin trên bảng đồ Google Map, lấy vị trí hiện tại trên bản đồ
và chức năng tìm đường đi
Vì thời gian cộng với khả năng của bản thân có hạn và đây là một lĩnh vực khámới mẻ nên chương trình chắc chắc sẽ còn nhiều thiếu sót Vì vậy em mong sẽ nhậnđược nhiều góp ý từ phía thầy cô để chương trình có thể hoàn thiện thêm
Cuối cùng tôi xin cảm ơn thầy Nguyễn Vương Thịnh đã chỉ bảo và giúp đỡ emtrong suốt quá trình thực hiện đề tài
Trang 5CHƯƠNG I: TỔNG QUAN
1 Giới thiệu du lịch Hải Phòng
Kiến trúc đô thị :
Thành phố Hải Phòng vói kiến trúc là sự pha trộn hài hòa giữa 2 nền văn hóa Á
- Âu Sự pha trộn này tạo ra cho thành phố một nét đẹp đô thị riêng biệt, vừa thanhlịch, vừa mạnh mẽ
Đến thời điểm này (2011), Hải Phòng còn giữ được nhiều khu phố với kiến trúckhá nguyên vẹn từ thời Pháp thuộc.Khu vực quận Hồng Bàng là một ví dụ, nhiềuphố với những biệt thự khá đẹp, chưa bị cơi nới và phá vỡ về tổng thể, đường phốsạch và không quá đông đúc Nét chấm phá của đô thị Hải Phòng là những mô hìnhkiến trúc giao thoa giữa Á và Âu nhưng không lẫn cùng một góc phố mà riêng biệt
ở các địa điểm, vì vậy mới có tên phố Tây (phố Điện Biên Phủ, Trần Phú, LươngKhánh Thiện, Minh Khai, Đà Nẵng… bây giờ) và phố Tàu (Lý Thường Kiệt, TamBạc, Kỳ Đồng, Hoàng Văn Thụ, Đinh Tiên Hoàng…) Mỗi lần nhắc đến những conphố cổ hay những công trình kiến trúc cổ, người dân Hải Phòng đi ở phương xavẫn rưng rưng nhớ về thành phố, nhớ về những bông hoa phượng rực đỏ ven hồTam Bạc trong ngày hè
Một nét độc đáo về đô thị Hải Phòng là những dòng sông Những con sông chảytrong lòng thành phố hiện đại cùng với những cây cầu lớn nhỏ bắc qua là một nétđộc đáo Hiện nay trong lòng thành phố có khoảng 20 cây cầu lớn nhỏ, lớn nhất làcầu Bính - một trong những cây cầu dây văng lớn nhất Đông Nam Á Thành phốđang được quy hoạch theo 5 hướng giống như 5 cánh phượng ra biển, đồng thờibám theo những dòng sông lịch sử như sông Cấm, Tam Bạc, Lạch Tray, để xứngtầm là một đô thị đặc biệt và thành phố dịch vụ cảng văn minh, hiện đại trongtương lai rất gần
Thành phố có hệ thống công viên, vườn hoa, hồ phong phú, đa dạng Đẹp nhất
là khu vực trung tâm với dải xanh công viên và hồ Tam Bạc đi qua Quán hoa vàNhà hát thành phố
Những vét văn hóa đặc trưng:
Cũng như mọi địa phương trên cả nước, Hải Phòng cũng là nơi có các lễ hộimang đậm bản sắc văn hoá Việt Nam Liên hoan Du lịch "Đồ Sơn biển gọi" : diễn
ra vào ngày 30-4 đến 2-5 hàng năm với nhiều hoạt động sôi nổi, hấp dẫn nhằmquảng bá về du lịch Hải Phòng
Hội chọi trâu Đồ sơn: Ngày Hội chọi trâu là ngày vui nhất trong những ngàyhội làng ở Đồ Sơn Bởi lẽ, ngày Hội vừa mang tinh thần thượng võ của dân tộc,
Trang 6vừa lă biểu tượng bao đời của nền nông nghiệp Việt Nam, con trđu gắn liền với xứ
sở trồng lúa nước
Những điểm đến thú vị tại Hải Phòng:
Đảo Cât Bă : Khu Bảo tồn sinh quyển thế giới Cât Bă nằm trín đảo Cât Bă,thuộc thị trấn Cât Bă, huyện Cât Hải, Tp Hải Phòng Đđy lă một trong những khubảo tồn sinh quyển thế giới Cât Bă lă một quần đảo có tới 366 đảo lớn, nhỏ Ðảochính lă Cât Bă rộng khoảng 100km², câch cảng Hải Phòng 30 hải lý, tiếp nối vớivịnh Hạ Long, tạo nín một quần thể đảo vă hang động trín biển lăm mí hồn dukhâch Đến đđy du khâch sẽ được tận hưởng không khí trong lănh vă hoă mình văovới thiín nhiín tươi đẹp
Đồ Sơn: lă một bân đảo nhỏ do dêy núi Rồng vươn dăi ra biển, với hăng chụcmỏm cao từ 25 đến 130m, nơi đđy có bêi cât mịn, bín bờ biển rợp bóng phi lao.Sau lă những ngọn núi vă đồi thông Ðồ Sơn hội tụ câc điều kiện: cơ sở vật chất lănhă cửa, khâch sạn, nhă hăng, đường xâ, điện nước khâ hoăn chỉnh Trước đđy ÐồSơn lă nơi lui tới nghỉ ngơi, hưởng thụ của vua chúa quan lại đô hộ.Nơi đđy cònngôi nhă bât giâc kiín cố của Bảo Ðại - ông vua cuối cùng của chế độ phong kiếnViệt Nam Bêi tắm Ðồ Sơn chia lăm 3 khu chính: khu 1 nằm ngay đầu quận ÐồSơn, khu 2 có nhiều khâch sạn hiện đại, khu 3 yín tĩnh vă kín đâo Văo ngăy hỉ,
Ðồ Sơn thật sống động Du khâch khắp mọi miền đất nước cũng như khâch quốc tế
về đđy tắm biển, nghỉ ngơi vă leo núi, ngắm nhìn ba thế biển đẹp
Suối khoâng nóng Tiín Lêng : Thuộc địa phận thôn Phâc Xuyín, xê BạchĐằng, huyện Tiín Lêng, với những mạch nước phun lín từ độ sđu 820 m, có nhiệt
độ thường xuyín 52 độ C, nơi đđy được xem lă một địa chỉ du lịch văn hoâ, sinhthâi mới của thănh phố Hải Phòng Tiín Lêng với địa hình như một hòn đảo bốn bềsông bể bao quanh, nơi đđy nổi tiếng với hệ thống rừng ngập mặn ven biển xanhtươi vă hệ động thực vật phong phú Nguồn nước nóng mang nhiều khoâng chất rất
có lợi cho sức khoẻ tại thị trấn sẽ đem lại cho du khâch cảm giâc thú vị, những giờphút nghỉ ngơi, thư giên Năm 1983, Liín đoăn lao động thănh phố Hải Phòng đầu
tư vă xđy một trung tđm tắm vă điều trị sức khoẻ Vă đầu năm 1999, một tư nhđn lẵng Lí Văn Thảo đê đầu tư văo đđy trín 400 triệu để xđy dựng một dđy chuyềnđóng chai nước khoâng
Chùa Hă Phú : thuộc thôn Hă Phú, xê Hòa Bình, huyện Thủy Nguyín được xđytrín đồi cao, còn giữ được nhiều nĩt kiến trúc độc đâo vă đặc trưng chùa miền Bắc.Chùa nhỏ, thấp, mâi chùa thấp thoâng trong vườn cđy um tùm Đđu đó chỉ thoảngtiếng chuông chùa ngđn vang giữa đồng lúa, cho ta một cảm giâc nhẹ nhõm văthanh tịnh
Chùa Hang : Chùa Hang (Cốc Tự), có từ trước Công nguyín, nằm ở khu 1thuộc phường Vạn Sơn, quận Đồ Sơn Theo truyền ngôn, một nhă sư tín Bần,người xứ Thiín Trúc theo thuyền đi truyền bâ đạo Phật đê đến cư trú tại hang vă
Trang 7mở chùa này Nhiều nhà nghiên cứu trong nước cho rằng đây là nơi đầu tiên đạoPhật du nhập vào nước ta.
2 Công nghệ thiết bị di động
2.1 Di động đi tắt đón đầu trong thế giới công nghệ
Công nghệ di động trong những năm gần đây đã có những bước nhảy vọt nhanhchóng cả về sức mạnh phần cứng lẫn tốc độ phổ biến của nó trong dân cư Nhữngchiếc điện thoại thậm chí còn phát triển nhanh hơn cả thời kỳ hoàng kim của cáccông nghệ trong quá khứ như ti vi, máy vi tính Bên cạnh đó, trong vòng 2 nămtrở lại đây thì thị trường máy tính bảng cũng trở nên vô cùng sôi động
Những thành tựu mà công nghệ di động đã tạo ra là không thể phủ nhận Khichiếc iPhone đầu tiên ra đời, kỷ nguyên của điện thoại thông minh bắt đầu pháttriển mạnh mẽ và từng bước chiếm lĩnh thị trường từ 5% cho đến 40% thị phần.Đặc biệt, ở một số thị trường, sự phát triển điện thoại thông minh còn diễn ranhanh hơn rất nhiều, đơn cử như ở Mỹ đã có hơn 2/3 số điện thoại được bán ra hiệnnay là các điện thoại thông minh Nhiều khả năng thì điện thoại thông minh sẽchiếm lĩnh tới 75% thị trường Mỹ trong vài năm tới, trở thành công nghệ có tốc độphổ biến nhanh nhất trong lịch sử loài người Trong quý I năm 2012, điện thoạithông minh chiếm đến 36% tổng số điện thoại di động được bán ra, tăng 25% sovới cùng kì năm trước, một tỷ lệ rất cao
Nền móng cho sự phát triển của điện thoại di động chính là hệ thống mạngkhông dây Theo ITU (Liên Minh Viễn Thông Quốc tế), có 90% dân số thế giới(hiện nay đã đạt gần 7 tỷ người) được bao phủ bởi mạng di động GSM, phần lớntrong số đó là truy cập thông qua mạng lưới EDGE và GPRS Hơn thế nữa, có 45%dân số thế giới đã được biết hoặc đã từng sử dụng mạng di động 3G Ngày nay việctriển khai Internet tốc độ cao đã trở nên phổ biến ở mọi quốc gia ngay cả nhữngnước đang phát triển
Sự tiến bộ của mạng không dây đã thúc đẩy sự phát triển của những sản phẩmcông nghệ “thông minh” như điện thoại thông minh và máy tính bảng Với sốlượng người dùng các thiết bị “thông minh” ngày càng cao sẽ tăng trưởng số lượngngười dùng Internet Không nằm ngoài số đó Việt Nam cũng không ngừng gia tăng
số lượng người sử dụng Internet đặt biệt xu hướng truy cập Internet từ thiết bị diđộng đang bùng nổ mạnh mẽ Tính đến thời điểm quý 4-2011, thế giới đã có 1,1 tỉthuê bao 3G, tăng 37% so với cùng kỳ năm trước Trong đó, Mỹ, Nhật và TrungQuốc lần lượt là ba cường quốc hàng đầu về lượng thuê bao 3G Việt Nam đứngthứ 21 với 12 triệu thuê bao 3G, đứng sau nhóm các quốc gia phát triển, xếp trênThụy Điển (24), Hà Lan (27) và Hi Lạp (28)
Tiềm năng phát triển các thiết bị “thông minh ” tại Việt Nam là rất lớn Các sảnphẩm máy tính bảng điện thoại “thông minh” của các hãng công nghệ nổi tiếng hầu
Trang 8hết đều có mặt tại Việt Nam Các hãng điện thoại trong nước cũng bắt đầu bán cácthiết bị “thông minh” giá rẻ ra thị trường Điện thoại thông minh ngày càng rẻ hơncũng đang khiến nó nhanh chóng được phổ biến và tiếp cận với người dùng hơn.
Và đó chỉ là vấn đề thời gian bởi ngày càng có nhiều điện thoại thông minh có mứcgiá phải chăng được tung ra để đáp ứng nhu cầu của cả những khách hàng có thunhập không cao Theo thống kê năm 2012 có 30% điện thoại được bán ra ở ViệtNam là điện thoại thông minh
Chiếc điện thoại không còn đơn thuần là thiết bị liên lạc mà nó đả trở thành mộtthiết bị đa chức năng phục vụ rất nhiều nhu cầu công việc và giải trí của con người.Hiện tại điện thoại thông minh đang là ngọn sóng công nghệ trên thế giới Và ViệtNam cũng sẽ đón ngọn sóng đó chỉ tron một tương lai ngắn “Làn sóng moblie” sẽthay đổi cách con người làm việc, giải trí và mang lại những thách thức mới
2.2 Thời kỳ “hậu PC” và cơ hội cho các lập trình viên di động
Thời kỳ “hậu-PC” tiêu biểu là thế hệ các thiết bị di động thông minh có khảnăng chạy hệ điều hành quản lý đa nhiệm, kết nối dữ liệu tốc độ cao có thể đảmnhận hầu hết nhiệm năng của một máy tính cá nhân bình thường (PC) mà thậm chícòn nhiều điểm tiện lợi hơn
Đại diện tiêu biển nhất cho thời đại “hậu PC” đó là những chiếc điện thoạithông minh và máy tính bảng Hai thiết bị đã tạo nên một làng sóng công nghệmạnh mẽ Các xu hướng công nghệ của thế giới đều tập trung nhiều vào nhữngthiết bị này Cùng với nó là sự phát triển chóng mặt của phần cứng và nhất là cácphần mềm, các ứng dụng di động và hệ điều hành di động
Trong năm 2011, 10 xu hướng công nghệ chiến lược được các chuyên gia đánhgiá có bao gồm điện toán đám mây, ứng dụng di động (điện thoại thông minh… ).Mỗi ngày có hàng triệu thiết bị đi động được bán ra dẫn đến nhu cầu về ứng dụng
di động ngày càng tăng Đây là một cơ hội lớn cho các nhà lập trình các thiết bị diđộng Với các của hàng ứng dụng như AppStore, Google Play, lập trình viên haynhóm lập trình các nhân có thể đưa các sản phẩm đưa lên để bán cho người dùng.Đây là một lợi thế lớn cho các lập trình viên lập trình trên thiết bị di động Nhờ đókhông cần phải trực thuộc một công ty lập trình đủ lớn mà sản phần của người lậptrình có thể được trả tiền nếu sử dụng tốt và đáp ứng nhu cầu của người sử dụng.Nhà viết ứng dụng cá nhân cũng có thể tiết kiệm được một khoảng tiền lớn chi phíquản cáo và kênh phân phối đến cho khách hàng của mình
Cụ thể hơn ở Việt Nam, lập trình di động đang là một cơ hội rất tốt cho các lậptrình viên bán ra các sản phẩm của mình Có thể dễ dàng đưa sản phẩm của mình rathế giới tiêu thụ và thu được tiền từ những ứng dụng tốt và độc đáo Đối với thịtrường ứng dụng trong nước, từ năm 2010 đến nay, cùng với xu thế phát triển thiết
bị di động của thế giới, Việt Nam cũng có một sự phát triển vượt bật trong mảngnày.Với các chợ ứng dụng của chính hãng như AppStore, Google Play nhiều người
Trang 9sử dụng vẫn còn vấp phải rào cảng thanh toán Vì vậy đây là cơ hội để các lập trìnhviên phát triển ứng dụng tiêu thụ trong nước với các chợ ứng dụng của hãng thứ 3.Điện thoại thông minh và máy tính bảng đã góp phần thúc đẩy kỷ nguyên “hậuPC” phát triển Và đã mở ra một cơ hội lớn cho các lập trình viên tự do chứng tỏkhả năng sáng tạo của mình Lập trình di động là một hướng đi mới và đầy triểnvọng, và là cơ hội lớn đối với nền Công nghệ thông tin ở Việt Nam.
3 Mục đích thực hiện đề tài
Quảng bá du lịch và cung cấp thông tin du lịch là một công việc hết sức quantrọng đối với ngành du lịch Hải Phòng Cần phải thực hiện điều đó trên rất nhiềuphương tiện đặt biệt là áp dụng công nghệ mới Có nhiều website đã được xâydựng để quản bá du lịch và cung cấp thông tin du lịch và đạt được hiệu quả tốt Tuynhiên với xu hướng công nghệ hiện nay thì website đã không còn là phương tiệncung cấp thông tin du lịch một cách thuận tiện nhất đối với khách du lịch
Ví dụ muốn tìm một điểm ăn uống, vui chơi, mua sắm ở Hải Phòng khách dulịch phải tìm trước ở nhà, nguyên cứu và ghi lại thông tin địa chỉ Hoặc trongchuyến đi có thể mang theo laptop để tra cứu thông tin, tuy nhiên thông thường rất
ít người mang laptop du lịch bởi vì cồng kềnh và nặng nề, có thể sử dụng dịch vụinternet công cộng, tuy nhiên cũng khá bất tiện vì phát sinh thêm vấn đề là phải tìmthêm vị trí của dịch vụ internet công cộng, mỗi lần muốn tìm một địa điểm lại sửdụng internet công cộng Thậm chí bằng một cách nào đó khách du lịch có đượcđịa chỉ của địa điểm mong muốn, nếu không phải quen với đường phố Hải Phòngcũng khó xác địch được vị trí đó ở đâu Giải pháp là sử dụng một bản đồ số trênlaptop nhưng bản đồ số trên laptop rất bất tiện khi mạng theo trong lúc đi đường,thêm một giải pháp nữa là bản đồ giấy Tuy nhiên sử dụng bản đồ giấy rất khókhăn để nhận ra vị trí hiện tại Để tìm một vị trí ăn uống, vui chơi đối với mộtkhách du lịch Hải Phòng trở thành một vấn đề phức tạp, và nhiều du khách chấpnhận việc vui chơi ở các địa điểm tour du lịch xắp xếp sẵn và chỉ đến các địa điểmthật sự nổi tiếng
Để giải quyết vấn đề ví dụ ở trên trở nên đơn giản, có một giải pháp đó chính là
sử dụng ứng dụng trên thiết bị di động Với một bản đồ số Google Map , có mộtdanh sách các địa điểm nhà hàng, khách sạn, quán cà phê … mà khách du lịch cóthể đến để lựa chọn, hiển thị trực tiếp địa địa điểm đó trên bản đồ số Với GPS,bản đồ có thể xác định đươc vị trí hiện tại và từ đó gợi ý tuyến đường ngắn nhấtđến mục tiêu Và đặt biệt thiết bị di động luôn sẵn sàng hoạt động 24/24, kíchthước nhỏ gọn luôn mang theo, cùng với mạng internet 3G hay WIFI thì việc tìmmột địa điểm du lịch và đi đến đó không còn gì thuận tiện hơn
Với một số lượng địa điểm vui chơi, nhà hàng, quán bar, khách sạn, mua sắm
ở Hải Phòng nhiều như hiện nay rất cần thiết phải có một cách tìm kiếm thông tin
du lịch thuận tiện nhất, đơn giản nhất, hiệu quả nhất Để du khách đến Hải Phòng
Trang 10có thể biết đến Hải Phòng một cách trọn vẹn không chỉ ở phong cảnh thiên nhiên,khí hậu.
Trang 11CHƯƠNG II: HỆ ĐIỀU HÀNH ANDROID VÀ CÔNG
NGHỆ LIÊN QUAN
1 Hệ điều hành Android
1.1 Giới thiệu hệ điều hành Android
Android là một hệ điều hành di động dựa trên một phiên bản sửa đổi của Linux.Được phát triển vào năm 2005 với một dự án cùng tên “Android” Như một phầnchiến lược của mình để lấn sâu vào lĩnh vực di động Google Android đã mua vềtoàn bộ quá trình phát triển cũng như đội phát triển nó.Đây là con át chủ bài củaGoogle để cạnh tranh thị phần hệ điều hành di động với Apple
Google Android muốn mở và miễn phí, vì vậy hầu hết các mã android đượcđược đưa ra dưới dạng mã nguồn mở Apache License, điều này tương đương vớiviệc bất cứ ai muốn sử dụng Android có thể làm như vậy bằng cách tải về mãnguồn android đầy đủ Hơn nữa các nhà cung cấp (thường là những nhà phát triểnphần cứng) có thể thêm phần mở rộng và tùy biến cho android để phân biệt sảnphẩm của họ với sản phẩm của những người khác Điều này đơn giản làm cho môhình phát triển android rất hấp dẫn và do đó khơi dậy sự quan tâm của nhiều nhàcung cấp Những nhà sản xuất coi android như một giải pháp – họ sẽ tiếp tục thiết
kế phần cứng của riêng mình và sử dụng android như một hệ điều hành chính
Ưu điểm chính của việc áp dụng android là nó cung cấp một cách tiếp cận thốngnhất để phát triển ứng dụng Các nhà phát triển chỉ cần phát triển cho android vàcác ứng dụng của họ có thể chạy trên nhiều thiết bị khác nhau, miễn là các thiết bịđược hỗ trợ bằng cách sử dụng android Trong thế giới điện thoại thông minh ứngdụng là một phần quan trọng nhất của chuỗi thành công Do đó các nhà sản xuấtthiết bị coi Android như là hy vọng tốt nhất để thách thức sự tấn công của Apple.1.2 Những đặc trưng của hệ điều hành Android
Application framework: cho phép sử dụng lại và thay thế các thành phần
trong lập trình ứng dụng
Dalvik virtual machine: tối ưu hóa cho thiết bị di động.
Intergrated browser: trình duyệt tích hợp, dựa trên cơ chế WebKit mã
nguồn mở
SQLite: sơ sở dữ liệu trong môi trường di động.
Media support: hỗ trợ các định dạng audio, video và hình ảnh thông dụng.
GSM Telephony: mạng điện thoại di động (phụ thuộc vào phần cứng).
Bluetooth, EDGE, 3G, và WiFi :các chuẩn kết nối dữ liệu (phụ thuộc vào
phần cứng)
Camera, GPS, la bàn, và gia tốc kế: (phụ thuộc vào phần cứng).
Trang 12 Môi trường phát triển phong phú: bao gồm thiết bị mô phỏng, công cụ
cho việc dò tìm lỗi, bộ nhớ và định hình hiệu năng và một plugin choEclipse IDE
1.3 Các tính năng hỗ trợ sẵn trong hệ điều hành Android
Các tính năng được hổ trỡ tùy thuộc vào cấu hình phần cứng và phần mềm
Storage: Sử dụng SQLite, một cơ sở dữ liệu quan hệ nhẹ cho việc lưu trữ dữ
liệu
Connectivity: Hỗ trợ GSM/EDGE, IDEN, CDMA, EV-DO, UMTS,
Bluetooth (bao gồm AD2P và AVRCP), Wifi, LTE và WiMAX
Messaging: hỗ trợ cả SMS và MMS
Web browser: Dựa trên mã nguồn mở Webkit, cùng với công nghệ
JavaScript V8 của Chrome
Media support: Bao gồm hỗ trợ các phương tiện truyền thông sau: H.263,
H.264 (Trong 3GP hoặc MP4 container ), MPEG-4 SP, AMR, AMR-WB(3GP container), AAC, HE-AAC (MP4 hoặc 3GP container), MP3, MIDI,Ogg Vorbis, WAV, JPEG, PNG, GIF và BMP
Hardware support: Accelerometer Sensor, Camera, Digital Compass,
Proximity Sensor và GPS
Multi-touch: Hỗ trợ màn hình cảm ứng đa điểm
Multi-tasking: Hỗ trợ ứng dụng đa tác vụ
Flash support: Android 2.3 hỗ trợ Flash 10.1
Tethering: Hỗ trợ kết nối internet không dây/có dây
Trang 131.4 Kiến trúc và các thành phần trong hệ điều hành Android
Mô hình sau thể hiện đầy đủ kiến trúc các thành phần của hệ điều hành
Android
Hình 2.1
1.4.1 Linux kernel (nhân Linux)
Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và tầngdưới của phần mềm Lớp này chứa tất cả các thiết bị mức thấp điều khiển các thànhphần phần cúng khác nhau của một thiết bị Android
1.4.2 Libraries
Libraries bao gồm một tập hợp các thư viện lập trình chứa mã lệnh cung cấp những tính năng và thao tác chính trên hệ điều hành Một số các thư viện cơ bản được liệt kê dưới đây:
System C library – a BSD-derived triển khai các thư viện hệ thống ngôn
ngữ C chuẩn, được nhúng vào các thiết bị dựa trên hệ điều hành Linux
Media Libraries – Dựa trên PacketVideo's OpenCORE; thư viện này hỗ trợ
cho việc chơi nhạc, quay phim, chụp hình theo các định dạng file MPEG4,H.264, MP3, AAC, AMR, JPG, and PNG
Surface Manager – Quản lý truy cập đến các hệ thống con hiển thị cũng
như các lớp đồ họa 2D, 3D từ tầng ứng dụng
Trang 14 LibWebCore – Thư viện được dùng để tạo nên thành phần webview trong
Android và có thể nhúng được vào nhiều ứng dụng
SGL – Thư viện hỗ trợ đồ hoạ 2D.
3D libraries – Thư viện đồ họa 3D.
FreeType - bitmap and vector font rendering.
SQLite – Một cơ sở dữ liệu nhỏ được dùng cho các thiết bị cầm tay có bộ
nhớ hạn chế SQLite không có quan hệ như các cơ sở dữ liệu khác
1.4.3 Android runtime
Tại cùng một tầng với Libraries, android runtime cung cấp một bộ lõi thư việncho phép các nhà phát triển viết các ứng dụng android bằng cách sử dụng ngôn ngữlập trình java Android runtime cũng bao gồm các máy ảo Dalvik, cho phép mọiứng dụng android chạy trong tiến trình riêng của mình Dalvik là một máy ảochuyên dụng được thiết kế đặc biệt cho android và tối ưu hóa cho các thiết bị điệnthoại di động với giới hạn bộ nhớ và CPU
1.4.4 Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhàphát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo Nhàphát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập,các dịch vụ chạy nền, thiết lập hệ thống báo động, thêm các thông báo để các thanhtrạng thái, và nhiều, nhiều hơn nữa
Nhà phát triển có thể truy cập vào các API được sử dụng bởi các ứng dụng lõi.Các kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử dụng lại các API.Đưa ra những khả năng khác nhau của hệ điều hành android vào ứng dụng để sửdụng chúng trong các ứng dụng của mình
Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm: cácView (là dùng để hiển thị thông tin và để người dùng thao tác), Content Provider
để chia sẻ dữ liệu giữa các ứng dụng, Resource Manager truy xuất tài nguyên,Notification Manager hiển thị các thông báo, Activity Manager quản lý chu trìnhsống của ứng dụng và điều hướng Activity
1.4.5 Applications
Tại lớp trên cùng sẽ là các ứng dụng cho android (như điện thoại, danh bạ, trìnhduyệt,…) cũng như các ứng dụng được tải về và cài đặt từ AndroidMarket hay bất
lý ứng dụng nào bạn viết được tại tầng này
1.5 Các khái niệm cơ bản trong lập trình ứng dụng Android
1.5.1 Activity
Một activity thể hiện một giao diện đồ họa người dùng Ví dụ một activity cóthể biểu diễn một danh sách các menu item để người dùng có thể chọn và có thểhiển thị ảnh cùng với tiêu đề Một ứng dụng gửi tin nhắn văn bản có thể có một
Trang 15hoạt động là hiển thị một danh sách các liên hệ để gửi tin nhắn tới, hoạt động thứhai là viết tin nhắn tới liên hệ được chọn, các hoạt động khác nữa là xem lại tinnhắn cũ hay thay đổi cài đặt Mặc dù chúng làm việc cùng nhau để tạo thành mộtgiao diện người dùng, mỗi activity độc lập với những cái khác Mỗi activity là mộtlớp con của lớp cơ sở Activit y.
Một ứng dụng có thể gồm chỉ một activity hay nhiều activity Activity chínhphải được hiển thị đầu tiên khi khởi động chương trình Chuyển từ một activitysang activity khác bằng cách cho activity hiện thời khởi động activity kế tiếp.Mỗi activity được vẽ vào một cửa sổ trên màn hình, mặc định sẽ lấp đầy mànhình, nhưng nó có thể nhỏ hơn màn hình và nằm trên các cửa sổ khác ví dụ nhưactivity thông báo một thông tin gì đó
Nội dung trực quan của cửa sổ được cung cấp bởi một cây phân cấp các đốitượng view dẫn xuất từ lớp View Mỗi view điều khiển một khoảng hình chữ nhật
cụ thể bên trong cửa sổ View cha chứa và tổ chức bố cục các view con Các view
lá vẽ trong hình chữ nhật mà chúng điều khiển và đáp ứng lại các hành động ngườidùng trực tiếp ở khoảng trống này Do đó, các view là nơi mà các tương tác củaactivity với người dùng diễn ra
Một cây phân cấp view được đặt trong một cửa sổ của activity bằng phươngthức Activity.setContentView() Content view là đối tượng View ở gốc của câyphân cấp
Class cơ sở Activity định nghĩa một loạt các sự kiện mà điều chỉnh vòng đờicủa một hoạt động Class Activity định nghĩa các sự kiện sau đây :
onCreate(): Được gọi khi hoạt động được tạo ra lần đầu tiên
onStart(): Được gọi khi hoạt động trở nên hữu hình so với người dùng
onResume(): Được gọi khi hoạt động bắt đầu tương tác với người sử dụng
onPause(): Được gọi để dừng các hoạt động hiện tại và nối lại các hoạt động trước đó
onStop(): Được gọi khi hoạt động không còn hiển thị với người dùng
onDestroy(): Được gọi trước khi hoạt động bị phá hủy bởi hệ thống (bằng tay hoặc bằng hệ thống để bảo tồn bộ nhớ)
onRestart(): Được gọi khi hệ thống đã được dừng lại và khởi động lại một lần nữa
Sau đây là sơ đồ các sự kiện trong vòng đời của một Activity:
Trang 16Hình 2.2
1.5.2 Service
Một service không có giao diện trực quan, nó chạy trên nền trong một khoảngthời gian không xác định Ví dụ một service có thể chơi nhạc nền, hay nó nạp dữliệu trên mạng hay tính toán cái gì đó và cung cấp kết quả cho activity cần đến nó.Mỗi service mở rộng từ lớp cơ sở Service
Trong khi kết nối, người sử dụng có thể giao tiếp với service thông qua giaodiện mà service đó trưng ra Ví dụ như trong service chơi nhạc, giao diện này cóthể cho phép người dùng pause, rewind, stop và restart lại playback
Giống như các activity và các thành phần khác khác, service chạy trong threadchính của tiến trình ứng dụng Vì thế chúng không thể chặn những thành phần kháchay giao diện người dùng, chúng thường tạo ra các thead khác cho các nhiệm vụhao tốn thời gian.Sơ đồ các sự kiện trong vòng đời của một service:
Trang 17có thể nói chuyện với bất cứ content provider nào, chúng cộng tác với provider đểquản lý giao tiếp liên tiến trình.
Trang 18dụng khác biết được một số dữ liệu đã được tải về thiết bị và sẵn sàng cho việc sửdụng chúng.
Một ứng dụng có thể có một số Broadcast Receiver để đáp lại bất cứ thông báonào mà nó cho là quan trọng Tất cả các receiver mở rộng từ lớp cơ sởBroadcastReceiver
Broadcast Receiver không hiển thị một giao diện người dùng Tuy nhiên chúng
có thể bắt đầu một activity để đáp lại thông tin mà chúng nhận, hay chúng có thể sửdụng NotificationManager để cảnh báo người dùng Notifications có thể lấy sự chú
ý của người dùng bằng nhiều cách, lóe sáng đèn sau, rung, tạo ra âm thanh, vânvân Chúng thường lấy một biểu tượng bền vững trong thanh trạng thái, cái màngười dùng có thể mở để lấy thông điệp
1.5.5 View
Trong một ứng dụng Android, giao diện người dùng được xây dựng từ các đốitượng View và ViewGroup Có nhiều kiểu View và ViewGroup Mỗi một kiểu làmột con của class View và tất cả các kiểu đó được gọi là các Widget
Tất cả mọi widget đều có chung các thuộc tính cơ bản như là cách trình bày vịtrí, background, kích thước, lề,… Tất cả những thuộc tính chung này được thể hiệnhết ở trong đối tượng View
Trong Android Platform, các screen luôn được bố trí theo một kiểu cấu trúcphân cấp như hình dưới Một màn hình là một tập hợp các Layout và các widgetđược bố trí có thứ tự Để thể hiện một màn hình thì trong hàm onCreate của mỗiActivity cần phải được gọi một hàm là setContentView(R.layout.main); hàm này sẽload giao diện từ file XML lên để phân tích thành mã bytecode
Hình 2.4
1.5.6 Intent
Là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiềuActivity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việckhác nhau Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng
Trang 19như truyền các dữ liệu cần thiết tới một Activity khác Điều này cũng giống nhưviệc di chuyển qua lại giữa các Forms trong lập trình Windows Form.
File này được tự động sinh ra khi tạo một dự án Android Trong file manifestbao giờ cũng có 3 thành phần chính đó là: application, permission và version
Application: chứa các giá trị định nghĩa cho một ứng dụng Android như
icon,tên ứng dụng, chế độ hiển thị giao diện…Ngoài ra cần phải khai báo các Activity và Service có trong chương trình tại đây
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 Khi cần sử dụng một loại tài nguyên nào đó thì trong file manifest của ứng dụng cần phải khai báo các quyền truy xuất tương ứng
SDK version: Xác định phiên bản SDK nhỏ nhất mà ứng dụng hiện đang sử
dụng tương ứng với một phiên bản hệ điều hành Android mà ứng dụng có thể tương thích
1.6.2 File R.java
File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file 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 và cáctài nguyên hình ảnh.Mã nguồn của file R.java được tự động sinh khi có bất kì một
sự kiện nào xảy xa làm thay đổi các thuộc tính trong ứng dụng
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả quátrình xây dựng ứng dụng
1.6.3 Thư mục src
Là vị trí chứa gói các class trong ứng dụng Các class có thể là các một Activityhoặc Service hoặc các lớp chức năng nào đó được viết bằng ngôn ngữ Java dựa
Trang 20trên API được cung cấp sẵn của Android Cần phải có ít nhất một Activity và khaibáo là Activity chính để chương trình có thể chạy được.
Thư mục layout chứa các file xml dùng để khai báo và thiết kế giao diện chomột Activity hay một thành phần điều khiển con trong ứng dụng Android
Thư mục values gồm các file xml chứa các giá trị chuỗi, mã màu … Giúp ngườilập trình có thể dễ dàng thay đổi những giá trị này trong ứng dụng một cách nhanhchóng mà khôn cần phải sửa trong code của ứng dụng
2 Công nghệ XML và Webservice
2.1 Công nghệ XML
2.1.1 XML là gì?
XML (viết tắt từ tiếng Anh eXtensible Markup Language, “Ngôn ngữ đánh dấu
mở rộng”) là ngôn ngữ đánh dấu do W3C đề nghị Mục đích chính của XML làđơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệthống được kết nối với Internet
XML là một ngôn ngữ đánh dấu tương đối mới vì nó là một subset (một phầnnhỏ hơn) của và đến từ (derived from) một ngôn ngữ đánh dấu ra đời trước tên làStandard Generalized Markup Language (SGML) Ngôn ngữ HTML cũng dựa vàoSGML, thật ra nó là một áp dụng của SGML
2.1.2 Cấu trúc của file XML và tài liệu XML
Document Prolog: lưu trữ metadata của XML gồm 2 phần đó là khai báo XML
và khai báo kiểu dữ liệu trong XML Phần khai báo XML (XML declaration) baogồm các thông tin về version của XML, charset, encoding… Phần khai báo kiểu
dữ liệu trong XML (DTD) dùng để khai báo cấu trúc của các thẻ dùng trong XML.Root element hay còn gọi là Document Element: chứa tất cả các phần tử và nộidung của nó 1 phần tử của XML phải có thẻ mở và thẻ đóng
Dưới đây là sơ đồ cấu trúc của tài liệu XML
Trang 21Hình 2.6
Cấu trúc tài liệu xml:
Gồm có hai phần đó là cấu trúc logic và cấu trúc vật lý
Cấu trúc logic: Định nghĩa các phần tử, các thuộc tính, kiểu dữ liệu
Cấu trúc vật lý:chứa dữ liệu và các phần tử chứa dữ liệu như text, hình ảnh,
XML được dùng kết hợp với HTML, rất hữu ích cho việc trao đổi dữ liệu và tạo
ra tùy biến cho các tags
2.1.4 Ngôn ngữ đặt tả cấu trúc
DTD (Document Type Definition)
Một DTD xác định ngữ pháp của một tài liệu XML, DTD định nghĩa cấu trúc tài liệu XML bằng một tập những qui tắc của phần tử (elements) và thuộc tính (attributes)
Trang 22 Các kiểu dữ liệu của phần tử và thuộc tính.
2.1.5 Ưu điểm của XML
Dễ dàng xử lý, chuyển tải và trao đổi dữ liệu
Mô tả dữ liệu và cách thể hiện dữ liệu thông qua các thẻ
Tổ chức dữ liệu và cấu trúc phân cấp
Dữ liệu độc lập là ưu điểm chính của XML Do XML chỉ dùng để mô tả dữ liệu bằng dạng text nên tất cả các chương trình đều có thể đọc được XML
Dễ dàng để tạo 1 file XML
Lưu trữ cấu hình cho web site
Sử dụng cho phương thức Remote Procedure Calls (RPC) phục vụ web service
Bản thân các dịch vụ này sẽ chạy trên các máy chủ trên nền Internet chứ khôngphải là các máy tính cá nhân, do vậy có thể chuyển các chức nǎng từ máy tính cá
Trang 23nhân lên Internet Người sử dụng có thể làm việc với các dịch vụ thông qua bất kỳloại máy hay phần mềm nào có hỗ trợ web service và có truy cập internet, kể cả cácthiết bị cầm tay Do đó các web service sẽ làm internet biến đổi thành một nơi làmviệc chứ không phải là một phương tiện để xem và tải nội dung.
Điều này cũng sẽ đưa các dữ liệu và các ứng dụng từ máy tính cá nhân tới cácmáy phục vụ của một nhà cung cấp dịch vụ web Các máy phục vụ này cũng cầntrở thành nguồn cung cấp cho người sử dụng cả về độ an toàn, độ riêng tư và khảnǎng truy nhập
Các máy phục vụ ứng dụng sẽ là một phần quan trọng của các web service bởi
vì thường thì các máy chủ này thực hiện các hoạt động ứng dụng phức tạp dựa trên
sự chuyển giao giữa người sử dụng và các chương trình kinh doanh hay các cơ sở
dữ liệu của một tổ chức nào đó
2.2.2 Một số đặt điểm cơ bản của webservice
Một webservice có thể được truy cập thông qua web
Một webservice có giao diện dịch vụ Giao diện này giúp cho webservice có thểđược gọi bởi bất kỳ một ứng dụng nào hay bởi webservice nào khác Giao diệndịch vụ là một tài liệu XML Bởi vì XML có thể thể hiện rõ vai trò trong công nghệtrao đổi thông tin toàn cục (global exchange technology) được chấp nhận bởi phầnlớn công nghệ hiện nay
Các Dịch vụ web dùng giao thức tiêu chuẩn web để giao tiếp, không như COM,RMI hay CORBA XML được dùng để trao đổi thông tin giữa các chương trìnhứng dụng và dịch vụ
2.2.3 Phân loại webservice
Service có hai loại :
Dịch vụ ứng dụng và dịch vụ hệ thống (Application and System Service ) MộtApplication Service thể hiện một hành động của user như duyệt thư email, haykiểm tra tỷ số hối đoái… Một System Service thể hiện yêu cầu của kiến trúc hệthống và sự quản lý như bảo mật , lưu trữ và chịu lỗi, quản lý transaction haymessaging
Một dịch vụ có hai đặc điểm chính : Interface và Registration Sử dụngInterface, một dịch vụ có thể được gọi từ một chương trình khác Một service đượcđăng ký trong một registry
Các ví dụ về công nghệ liên quan đến hệ thống hướng dịch vụ (service-orientedsystem) là Remote Method Invocation (RMI), Jini, CORBA và DistributedComputing Environment (DCE)
Trang 24Một vấn đề tổng quát với service hệ thống là các client cần thiết chỉ rõ giao thức
để yêu cầu các dịch vụ từ các hệ thống Web service là một hệ thống phát triển từ
hệ thống hướng dịch vụ, dùng giao tiếp tổng quát để chuyển tải các thông điệp giữacác hệ thống
Một tập hợp các modular service có thể được cung cấp bởi cùng công ty hay bởinhiều công ty khác nhau được mix và match lại để trở thành một business process.Lấy ví dụ đơn giản dễ nhận thấy nhất về webservice là hệ thống NET passportcủa Hotmail Vấn đề đăng nhập trở nên đơn giản giữa các website nếu giải quyếtbằng webservice Website tương tác với các site khác thông qua WebService, điềunày cho phép thông tin người dùng được chia xẻ giữa chúng Một user khi điềnthông tin đăng nhập chỉ một lần duy nhất, và có thể dùng nó cho dịch vụ email, vàdùng cùng login user cùng mật khẩu trong một “accounting package service site”
3 Google Map và Google Maps API Web Services
3.1 Google Map
3.1.1 Giới thiệu Google Map
Google Maps (thời gian trước còn gọi là Google Local) là một dịch vụ ứngdụng và công nghệ bản đồ trực tuyến trên web miễn phí được cung cấp bởi Google
và hỗ trợ nhiều dịch vụ dựa vào bản đồ như Google Ride Finder và một số có thểdùng để nhúng vào các trang web của bên thứ ba thông qua Google Maps API Nócho phép thấy bản đồ đường sá, đường đi cho xe đạp, cho người đi bộ và x e hơi,
và những địa điểm kinh doanh trong khu vực cũng như khắp nơi trên thế giới.Google Map là một trong những ứng dụng phổ biến nhất của Google hiện nay.Khi mà việc sử dụng bản đồ giấy đã trở lên lỗi thời thì dịch vụ tìm kiếm bản đồ số,bản đồ vệ tinh, hệ thống GPS là hết sức cần thiết Giờ đây chúng ta có thể dễ dàngtruy cập vào Google Map dù ở bất cứ nơi đâu để tra cứu địa chỉ hoặc sử dụng hệthống GPS cũng rất phổ biến Đặt biệt khả năng tích hợp dịch vụ bản đồ GoogleMap là rất cần thiết và quan trọng
3.1.2 Google Maps for Mobile
Năm 2006, Google đã giới thiệu một ứng dụng Java có tên là Google Maps forMobile
Ngày 28 tháng 11, 2007, Google Maps for Mobile 2.0 được phát hành
Thứ tự ưu tiên tính toán vị trí như sau:
Thiết bị bắt vị trí GPS
Trạm WiFi
Trạm BTS
Trang 25 Tính đến ngày 15 tháng 12 năm 2008, dịch vụ này có sẵn cho các nền tảng sau đây:
Android
iOS (iPhone, iPod Touch, iPad)
PlayStation Vita 3G Models
Windows Mobile (không hỗ trợ Windows Phone 7 từ 21/12/2011)
Nokia/Symbian (S60 3rd & 5th)
Symbian OS (UIQ v3)
BlackBerry
Điện thoại hỗ trợ Java-Platform (từ MIDP 2.0 trở lên)
Palm OS (Centro và mới hơn)
Palm webOS (Palm Pre và Palm Pixi)
Tiếp tục phát triển và hoàn thiện
3.2 Google Maps API Web Services
3.2.1 Giới thiệu Google Maps API Web Services
Google Maps API Web Services là một tập các giao diện HTTP cung cấp thôngtin địa lý cho ứng dụng
Google Maps API Web Services bao gồm:
Time Zone API
3.2.2 Sử dụng Google Maps API Web Services
Google Maps API cung cấp các dịch vụ như là các giao diện phục vụ cho việcyêu cầu dữ liệu địa lý và sử dụng dữ liệu đó trong ứng dụng của nhà phát triền Cácdịch vụ này được thiết kế để sử dụng với một ứng dụng bản đồ
Các dịch vụ này sử dụng HTTP request, thiết lập các chuỗi URL request để gởiyêu cầu cho web service Thông thường, web service sẽ trả về kết quả là tập tinJSON hoặc XML Phân tích cú pháp kết quả trả về để sử dụng
Trang 26SSL Access
Có thể truy cập Google Maps API Web Services thông qua HTTPS Truy cậpMaps API Web Service thông qua HTTPS được khuyến khích sử dụng nếu ứngdụng có chứa những dữ liệu nhạy cảm như tọa độ người dùng
https://maps.googleapis.com/maps/api/service/output?parameters
Theo dõi sử dụng với tham số sensor
Sử dụng Google Maps API yêu cầu nhà phát triển phải chỉ ra rằng ứng dụng có
sử dụng một cảm biến (ví dụ cảm biến GPS) để xác định vị trí người dùng trong bất
cứ yêu cầu nào cho service Nó khá quan trọng cho điện thoại Nếu ứng dụngGoogle Map API sử dụng bất cứ dạng cảm biến để xác định vị trí của thiết bị phảithiết lập giá trị của tham số sensor=true Trong trường hợp ứng dụng không sửdụng cảm biến thì vẫn phải gán giá trị sensor=false
Xây dựng chuỗi URL request hợp lệ
Một chuỗi URL có thể chứa những ký tự đặc biệt Ví dụ trong trình duyệt web,chuỗi URL được nhập vào thanh địa chỉ chứa những ký tự đặt biệt (ví dụ chứatiếng Việt có dấu), trình duyệt phải tự chuyển sang kiểu mã hóa khác trước khi gởi
đi Một số trình duyệt có thể nhận những chuỗi ký tự ở dạng mã hóa UTF-8 Quátrình chuyển kiểu mã hóa ký tự đó gọi là URL-encoding
Cần phải dịch những ký tự đặt biệt bởi vì tất cả các URL cần phải phù hợp với
cú pháp đã được qui định ở W3 Uniform Resource Identifier Có nghĩa là URL chỉchứa các ký tự thuộc một tập hợp các ký tự ASCII Các ký tự được sử dụng trongchuỗi URL được qui định trong bảng sau:
Alphanumeric a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F
G H Unreserved I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9Reserved - _ ~
Việc chuỗi URL chỉ chứa các ký tự ASCII đã được qui định dẫn đến 2 tìnhhuống:
Ký tự muốn đưa vào URL không nằm trong tập ký tự được cho phép (ví dụtiếng Việt có dấu)cần được mã hóa bằng các ký tự trên Ký tự khoảng cách thườngđược thay thế bằng ký tự “+”
Ký tự muốn sử dụng theo cách thông thường nằm trong nhóm ký tự dành riêng(Ví dụ ký tự “?”) Nếu muốn sử dụng ký tự dành riêng phải mã hóa
Ký tự được mã hóa bằng cách sử dụng ký tự “%” theo sau là hai ký tự chứa giátrị hex đại diện cho ký tự hệ UTF-8
Trang 27Giới hạn của chuối URL là 2048 ký tự Hầu hết các URL request ít khi đạt đếnngưỡng này, tuy nhiên vẫn phải cẩn thận để tránh trường hợp webservice không trảlời vì chuỗi URL quá dài.
Phân tích cú pháp kết quả nhận được phụ thuộc vào loại tập tin trả về là XMLhay JSON và có thể sử dụng nhiều kỹ thuật và ngôn ngữ lập trình khác nhau
3.3 Google Geocoding API
3.3.1 Mã hóa địa lý là gì?
Mã hóa địa lý là tiến trình chuyển địa chỉ (ví dụ: Tượng nữ tướng Lê Chân) sang tọa độ địa lý (ví dụ: kinh độ 20.8561674957177, vĩ độ 106.680695414543) để đánhdấu trên bảng đồ Google Geocoding API cung cấp một phương thức trực tiếp để truy cập bộ mã hóa địa lý thông qua giao thức HTTP Ngoài ra dịch vụ Google Geocoding API còn cho phép giải mã từ tọa độ sang địa chỉ
Chi tiết xem tại: https://developers.google.com/maps/documentation/geocoding
3.3.2 Geocoding API request
Định dạng chuỗi request URL
Chuỗi request URL có dạng như sau:
http://maps.googleapis.com/maps/api/geocode/output?parameters
HTTPS được khuyến cáo sử dụng cho các ứng dụng có dùng những dữ liệunhạy cảm của người dùng:
https://maps.googleapis.com/maps/api/geocode/output?parameters
Output có thể là xml hoặc json:
json (khuyến cáo): kết quả trả về tập tin JSON (JavaScript Object Notation).Loại tập tin này phù hợp hơn cho các ứng dụng bản đồ trên nền web
xml: kết quả trả về tập tin XML
Tham số của chuỗi request URL
Một số tham số là bắt buộc phải được gán giá trị, một số là tùy chọn Trong mộtchuỗi URL hợp chuẩn mỗi tham số được phân cách bằng ký tự (&)
Trang 28 address (bắt buộc): địa chỉ muốn mã hóa địa lý.
latlng (bắt buộc): Giá trị kinh độ - vĩ độ của điểm muốn lấy địa chỉ gần
nhất
bounds (tùy chọn): Hình chữ nhật mà kết quả mã hóa địa lý sẽ hiện lên nổi
bật
region (tùy chọn): mã vùng, dùng hệ thống tên miền quốc gia.
language (tùy chọn): thiết lập ngôn ngữ sẽ trả về trong kết quả.
sensor (bắt buộc): cho biết yêu cầu tìm đường có phải đến từ một thiết bị có
cảm biến vị trí hay không True hoặc false
Chỉ có thể dùng một trong hai tham số address hoặc latlng để tìm Nếu tham số
latlng được sử dụng thì quá trình này tạm gọi là giải mã địa lý.
3.3.3 Kết quả mã hóa địa lý
Geocoding API sẽ trả về một rong hai loại tập tin là JSON hoặc XML
Cấu trúc của kết quả trả về
Cấu trúc tập tin trả về có hai phần tử gốc:
status: thông báo trạng thái của kết quả.
result: chứa một tập thông tin kết quả.
Thông thường chỉ có một phần tử result trả về trong kết quả, tuy nhiênGeocoding API có thể trả về nhiều thẻ result hơn nếu truy vấn địa chỉ không rõràng
3.3.4 Giải mã địa lý (tìm địa chỉ từ kinh độ-vĩ độ)
Khái niệm mã hóa địa lý dùng để chỉ việc chuyển từ địa chỉ mà con người đọc được thành vị trí trên bản đồ Giải mã địa lý tức là chuyển từ vị trí trên bảng đồ thành địa chỉ mà con người đọc được
Geocoding API sẽ mã hóa địa lý bằng cách tìm vị trí gần nhất trong một khoảngsai số nhất định, nếu không tìm thấy Geocoding API sẽ trả về kết quả rỗng
3.4 Google Distance Matrix API
Google Distance Matrix API là một dịch vụ cung cấp khoảng cách và thời gian
di chuyển cho một ma trận các điểm gốc và điểm đích Thông tin trả về phụ thuộcvào đường đi được đề nghị giữa điểm gốc và điểm đích theo tính toán của GoogleDistance Matrix API, bao gồm các giá trị khoảng cách và thời gian cho mỗi cặp.Dịch vụ Google Distance Matrix API không cung cấp chi tiết đường đi Muốntìm thông tin chi tiết đường đi có thể sử dụng dịch dụ Google Direction API với chỉmột cặp điểm gốc và điểm đích
Chi tiết xem tại:https://developers.google.com/maps/documentation/distancematrix
Trang 293.4.1 Distance Matrix API request
Định dạng chuỗi request URL
Chuỗi request URL có dạng như sau:
http://maps.googleapis.com/maps/api/distancematrix/output?parameters
HTTPS được khuyến cáo sử dụng cho các ứng dụng có dùng những dữ liệunhạy cảm của người dùng:
https://maps.googleapis.com/maps/api/distancematrix/output?parameters
Output có thể là xml hoặc json:
json (khuyến cáo): kết quả trả về tập tin JSON (JavaScript Object Notation).
Loại tập tin này phù hợp hơn cho các ứng dụng bản đồ trên nền web
xml: kết quả trả về tập tin XML.
Tham số của chuỗi request URL
Một số tham số là bắt buộc phải được gán giá trị, một số là tùy chọn Trong mộtchuỗi URL hợp chuẩn mỗi tham số được phân cách bằng ký tự (&)
Các tham số tham gia trong chuỗi URL yêu cầu dịch vụ Distance Matrix gồmcó:
origins (bắt buộc): Một hay nhiều điểm gốc mà từ đó muốn tính khoảng
cách đến các điểm đích Mỗi điểm phân cách nhau bằng ký tự (|) Mỗi điểm
có thể là chuỗi ký tự địa chỉ hoặc giá trị kinh độ - vĩ độ
destinations (bắt buộc): Một hay nhiều điểm đích muốn tính khoảng cách từ
các điểm gốc Mỗi điểm phân cách nhau bằng ký tự (|) Mỗi điểm có thể làchuỗi ký tự địa chỉ hoặc giá trị kinh độ - vĩ độ
Để xác định một điểm cần thông tịn địa chỉ hoặc kinh độ - vĩ độ Nếu sửdụng thông tin địa chỉ, hệ thống Google Map API sẽ tự chuyển địa chỉ đó vềgiá trị kinh độ -vĩ độ Nếu sử dụng giá trị kinh độ - vĩ độ để xác định mộtđiểm thì giá trị kinh độ và vĩ độ được phân cách nhau bằng ký tự (,)
mode(tùy chọn, mặc định là driving): xác định kiểu di chuyển, hiện tại hỗ
trợ 3 kiểu di chuyển sau:
driving (mặc định): lái xe hơi.
walking : đi bộ, có thể qua những con đường cho người đi bộ hoặc đi trên