SlideShare a Scribd company logo
1 of 139
Download to read offline
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN i
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
Ngày.........Tháng..........Năm............
Giáo Viên Hướng Dẫn
(Ký, ghi rõ họ và tên)
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ii
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
Ngày.........Tháng..........Năm............
Giáo Viên Phản Biện
(Ký, ghi rõ họ và tên)
LỜI CẢM ƠN iii
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
LỜI CẢM ƠN
Chúng em xin chân thành cám ơn khoa Công nghệ thông tin, Bộ môn Công nghệ
phần mềm, trường Đại học Sư Phạm Kỹ Thuật Tp.HCM đã tạo điều kiện thuận lợi
cho chúng em thực hiện đề tài này.
Chúng em cũng xin được gửi lời cảm ơn chân thành nhất đến thầy Nguyễn Minh
Đạo, người đã tận tình chỉ bảo và hướng dẫn em thực hiện đề tài này.
Bên cạnh đó, chúng em xin gửi lời cảm ơn đến các thầy cô giáo, những người đã
giảng dạy, tạo điều kiện cho em tích lũy được những kiến thức quý báu trong những
năm học qua.
Chúng em xin gửi lời biết ơn sâu sắc đến cha mẹ, gia đình, bạn bè, những người đã
luôn bên cạnh, chăm sóc, ủng hộ, động viên chúng em trong suốt thời gian học tập
và nghiên cứu.
Dù đã cố gắng hoàn thành đề tài tiểu luận đúng yêu cầu, nhưng do thời gian hạn hẹp
và khả năng còn hạn chế nên chắc chắn sẽ có những thiếu sót không tránh khỏi.
Chúng em mọng nhận được sự thông cảm và tận tình chỉ bảo của các thầy cô và các
bạn.
TP. Hồ Chí Minh, tháng 01 năm 2012
Nhóm sinh viên thực hiện
Huỳnh Công Danh
Phạm Quốc Hùng
MỤC LỤC iv
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ..................................................... i
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ....................................................... ii
LỜI CẢM ƠN.......................................................................................................... iii
MỤC LỤC................................................................................................................ iv
MỤC LỤC HÌNH ẢNH ......................................................................................... vii
MỤC LỤC BẢNG .....................................................................................................x
CÁC KÝ HIỆU VÀ VIẾT TẮT............................................................................ xii
GIỚI THIỆU ĐỀ TÀI........................................................................................... xiii
Phần A MỞ ĐẦU ......................................................................................................1
1. THÁCH THỨC NGHIÊN CỨU .......................................................................2
2. MỤC ĐÍCH NGHIÊN CỨU..............................................................................4
3. ĐỐI TƯỢNG NGHIÊN CỨU ...........................................................................5
4. PHẠM VI NGHIÊN CỨU.................................................................................5
Phần B NỘI DUNG...................................................................................................6
Chương 1. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH MOBILE ANDROID ..............7
1.1. Lịch sử hệ điều hành mobile Android.........................................................7
1.2. Máy ảo Dalvik.............................................................................................9
1.3. Kiến trúc của Android...............................................................................10
1.3.1. Tầng ứng dụng......................................................................................10
1.3.2. Tầng Application Framework...............................................................11
1.3.3. Library và Android Runtime ................................................................12
1.3.4. Linnux Kernel.......................................................................................13
1.4. Ứng dụng Android ....................................................................................13
1.4.1. Các thành phần của ứng dụng Android ................................................13
1.4.2. Vòng đời của ứng dụng Android ..........................................................14
1.4.3. Chu kỳ của một Activity.......................................................................15
1.4.4. Intent .....................................................................................................17
1.4.5. Content Provider và Uri........................................................................19
MỤC LỤC v
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1.4.6. Background Service..............................................................................21
1.5. Android Emulator......................................................................................23
1.6. Các thành phần giao diện trong Android ..................................................24
1.6.1. View......................................................................................................24
1.6.2. ViewGroup............................................................................................24
1.7. SQLITE.....................................................................................................28
Chương 2. GOOGLE APIs.....................................................................................29
2.1. Google Maps API......................................................................................29
2.1.1. Giới thiệu ..............................................................................................29
2.1.2. Sử dụng Google Maps API trên Android .............................................30
2.2. JavaScript Object Notation (JSON) ..........................................................35
2.2.1. JSON là gì? ...........................................................................................35
2.2.2. Cấu trúc của JSON................................................................................35
2.3. Google Places Autocomplete API.............................................................39
2.3.1. Giới thiệu ..............................................................................................39
2.3.2. Sử dụng.................................................................................................40
2.3.3. Request..................................................................................................40
2.3.4. Response ...............................................................................................41
2.4. Google Places API ....................................................................................42
2.4.1. Giới thiệu ..............................................................................................42
2.4.2. Sử dụng.................................................................................................42
2.4.3. Place Searches.......................................................................................43
2.4.4. Place Details .........................................................................................46
2.5. Google Directions API..............................................................................48
2.5.1. Giới thiệu ..............................................................................................48
2.5.2. Direction Request .................................................................................48
2.5.3. Direction Response...............................................................................49
Chương 3. RESTFUL WEB SERVICES..............................................................55
3.1. Định nghĩa REST ......................................................................................55
3.2. Kiến trúc dịch vụ web RESTful................................................................56
MỤC LỤC vi
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
3.2.1. Tài nguyên ............................................................................................56
3.2.2. Bộ định danh tài nguyên đồng bộ - URI...............................................57
3.2.3. Đồng bộ giao diện thông qua yêu cầu HTTP .......................................58
Chương 4. CHƯƠNG TRÌNH MINH HỌA.........................................................64
4.1. QuickPlaces RESTful Web Services ........................................................64
4.1.1. Giới thiệu ..............................................................................................64
4.1.2. Tài nguyên ............................................................................................64
4.1.3. Dịch vụ..................................................................................................65
4.1.4. Thiết kế dữ liệu.....................................................................................78
4.2. Ứng dụng tìm kiếm và chia sẻ địa điểm trên Android – Place360 ...........81
4.2.1. Giới thiệu ..............................................................................................81
4.2.2. Chức năng.............................................................................................83
4.2.3. Sơ đồ lớp...............................................................................................92
4.2.4. Thiết kế dữ liệu.....................................................................................95
4.2.5. Thiết kế giao diện .................................................................................96
4.2.6. Cấu hình cài đặt ..................................................................................117
Phần C KẾT LUẬN ..............................................................................................118
1. Kết quả đạt được ............................................................................................119
2. Hướng phát triển............................................................................................121
Phần D PHỤ LỤC .................................................................................................123
1. TÀI LIỆU THAM KHẢO .............................................................................124
2. HƯỚNG DẪN CÀI ĐẶT...............................................................................125
MỤC LỤC HÌNH ẢNH vii
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
MỤC LỤC HÌNH ẢNH
Chương 1
Hình 1. 1 Các phiên bản hệ điều hành Android ....................................................................8
Hình 1. 2 Kiếm trúc hệ điều hành Android..........................................................................10
Hình 1. 3 Chu kỳ sống của ứng dụng Android.....................................................................14
Hình 1. 4 Activity stack........................................................................................................15
Hình 1. 5 Chu kỳ sống của Activity......................................................................................15
Hình 1. 6 Intent ....................................................................................................................18
Hình 1. 7 Các Action được dựng sẵn...................................................................................19
Hình 1. 8 Chu trình sống của một Service...........................................................................22
Hình 1. 9 Emulator ..............................................................................................................23
Hình 1. 10 Các thành phần giao diện..................................................................................24
Hình 1. 11 Bố trí các widget sử dụng LinearLayout ...........................................................25
Hình 1. 12 FrameLayout......................................................................................................25
Hình 1. 13 RelativeLayout ...................................................................................................26
Hình 1. 14 TableLayout .......................................................................................................27
Hình 1. 15 ListView .............................................................................................................28
Chương 2
Hình 2. 1 Cài đặt Google APIs trên Eclipse........................................................................31
Hình 2. 2 Tạo project cho ứng dụng Google APIs ..............................................................31
Hình 2. 3 Đường dẫn đến file debug.keystore .....................................................................32
Hình 2. 4 Đăng ký Google Maps APIs.................................................................................33
Hình 2. 5 Object trong JSON...............................................................................................36
Hình 2. 6 Array trong JSON ................................................................................................36
Hình 2. 7 Value trong JSON ................................................................................................37
Hình 2. 8 String trong JSON................................................................................................38
Hình 2. 9 Number trong JSON.............................................................................................38
Hình 2. 10 Bản đồ minh họa Google Direction...................................................................50
Hình 2. 11 Hiển thị dữ liệu JSON dạng cây của Google Direction API .............................51
MỤC LỤC HÌNH ẢNH viii
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Chương 3
Hình 3. 1 Lược đồ tuần tự của một yêu cầu GET................................................................60
Hình 3. 2 Lược đồ tuần tự của một yêu cầu POST..............................................................61
Hình 3. 3 Lược đồ tuần tự của một yêu cầu PUT................................................................62
Hình 3. 4 Lược đồ tuần tự của một yêu cầu DELETE.........................................................63
Chương 4
Hình 4. 1 Sơ đồ Use-case Dịch vụ người dùng....................................................................65
Hình 4. 2Sơ đồ Use-case Dịch vụ địa điểm .........................................................................70
Hình 4. 3 Sơ đồ Use-case Dịch vụ bình luận.......................................................................73
Hình 4. 4 Sơ đồ Use-case Dịch vụ thông báo......................................................................75
Hình 4. 5 Sơ đồ Use-case Dịch vụ bạn bè ...........................................................................76
Hình 4. 6 Sơ đồ dữ liệu Web Services..................................................................................78
Hình 4. 7 Sơ đồ Use-case ứng dụng tìm kiếm và chia sẻ địa điểm trên Android ................83
Hình 4. 8 Sơ đồ lớp phần liên lạc với Server.......................................................................92
Hình 4. 9 Sơ đồ lớp các danh sách ......................................................................................93
Hình 4. 10 Sơ độc lớp phần truy xuất Database..................................................................94
Hình 4. 11 Thiết kế dữ liệu - Sơ đồ Logic............................................................................95
Hình 4. 12 Giao diện chính..................................................................................................96
Hình 4. 13 Giao diện tìm kiếm địa điểm..............................................................................97
Hình 4. 14 Giao diện quản lý từ khóa tìm kiếm...................................................................98
Hình 4. 15 Giao diện tìm và thay đổi vị trí hiện tại.............................................................99
Hình 4. 16 Nhập từ khóa tìm kiếm.....................................................................................100
Hình 4. 17 Giao diện kết quả tìm kiếm ..............................................................................101
Hình 4. 18 Chi tiết địa điểm...............................................................................................102
Hình 4. 19 Giao diện bản đồ kết quả tìm kiếm ..................................................................103
Hình 4. 20 Giao diện dẫn đường .......................................................................................104
Hình 4. 21 Giao diện Favourite.........................................................................................105
Hình 4. 22 Giao diện tùy chỉnh tìm kiếm ...........................................................................106
Hình 4. 23 Giao diện đăng ký............................................................................................107
Hình 4. 24 Giao diện đăng nhập........................................................................................108
MỤC LỤC HÌNH ẢNH ix
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Hình 4. 25 Thông tin cá nhân ............................................................................................109
Hình 4. 26 Chỉnh sửa thông tin cá nhân............................................................................110
Hình 4. 27 Chia sẻ địa điểm ..............................................................................................111
Hình 4. 28 Danh sách các địa điểm được chia sẻ .............................................................112
Hình 4. 29 Giao diện bình luận .........................................................................................113
Hình 4. 30 Những người thích một địa điểm .....................................................................114
Hình 4. 31 Bản đồ các địa điểm được chia sẻ ...................................................................115
Hình 4. 32 Danh sách bạn bè ............................................................................................116
MỤC LỤC BẢNG x
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
MỤC LỤC BẢNG
Bảng 1. 1 Các thuộc tính của đối tượng Intent....................................................................18
Bảng 2. 1 Đường dẫn file debug.keystore trên các hệ điều hành........................................32
Bảng 2. 2 Các kiểu dữ liệu trong JSON...............................................................................39
Bảng 2. 3 Response của Place Search.................................................................................45
Bảng 2. 4 Response của Place Details ................................................................................47
Bảng 2. 5 Các tham số trong Google Directions API request.............................................48
Bảng 2. 6 Các thuộc tính trong root của Directions Response ...........................................51
Bảng 2. 7 Các thuộc tính trong routes của Directions Response........................................52
Bảng 2. 8 Các thuộc tính trong legs của Directions Response............................................53
Bảng 2. 9 Các thuộc tính trong steps của Directions Response..........................................53
Bảng 3. 1 Các hành động CRUD và phương thức HTTP tương ứng..................................59
Bảng 4. 1 Các tham số trong request của dịch vụ Đăng ký.................................................66
Bảng 4. 2 Các tham số trong request của dịch vụ Đăng nhập ............................................66
Bảng 4. 3 Các tham số trong request của dịch vụ Đăng xuất .............................................67
Bảng 4. 4 Các tham số trong request của dịch vụ Lấy thông tin cá nhân...........................67
Bảng 4. 5 Các tham số trong request của dịch vụ cập nhật thông tin cá nhân ...................68
Bảng 4. 6 Các tham số trong request của dịch vụ Like .......................................................68
Bảng 4. 7 Các tham số trong request của dịch vụ Unlike ...................................................69
Bảng 4. 8 Các tham số trong request của dịch vụ lấy danh sách bạn bè ............................69
Bảng 4. 9 Các tham số trong request của dịch vụ Feeds.....................................................70
Bảng 4. 10 Các tham số trong request của dịch vụ Thông tin địa điểm..............................71
Bảng 4. 11 Các tham số trong request của dịch vụ chia sẻ địa điểm..................................71
Bảng 4. 12 Các tham số trong request của dịch vụ Xóa địa điểm......................................72
Bảng 4. 13 Các tham số trong request của dịch vụ Danh sách người thích .......................72
Bảng 4. 14 Các tham số trong request của dịch vụ Lấy danh sách bình luận....................73
Bảng 4. 15 Các tham số trong request của dịch vụ Bình luận ............................................74
Bảng 4. 16 Các tham số trong request của dịch vụ Xóa bình luận .....................................74
Bảng 4. 17 Các tham số trong request của dịch vụ nhận thông báo...................................75
Bảng 4. 18 Các tham số trong request của dịch vụ cập nhật thông báo ............................76
Bảng 4. 19 Các tham số trong request của dịch vụ kết bạn ...............................................77
MỤC LỤC BẢNG xi
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Bảng 4. 20 Các tham số trong request của dịch vụ trả lời yêu cầu kết bạn.......................77
Bảng 4. 21 Các tham số trong request của dịch vụ Unfriend.............................................78
Bảng 4. 22 Bảng User.........................................................................................................79
Bảng 4. 23 Bảng Place ........................................................................................................79
Bảng 4. 24 Bảng Comment ..................................................................................................80
Bảng 4. 25 Bảng Likes ........................................................................................................80
Bảng 4. 26 Bảng Notification ..............................................................................................80
Bảng 4. 27 Bảng Friends ....................................................................................................81
Bảng 4. 28 Bảng Photo.......................................................................................................81
Bảng 4. 29 Danh sách các chức năng của ứng dụng Place360 ..........................................84
Bảng 4. 30 Bảng Catalog.....................................................................................................95
Bảng 4. 31 Bảng Favourite..................................................................................................95
Bảng 4. 32 Các thành phần trên giao diện chính ................................................................96
Bảng 4. 33 Các thành phần trên giao diện tìm kiếm địa điểm ............................................97
Bảng 4. 34 Các thành phần trên giao diện quản lý từ khóa tìm kiếm .................................99
Bảng 4. 35 Các thành phần trên giao diện thay đổi vị trí hiện tại ....................................100
Bảng 4. 36 Các thành phần trên giao diện tìm kiếm nhanh ..............................................100
Bảng 4. 37 Các thành phần trên giao diện kết quả tìm kiếm.............................................101
Bảng 4. 38 Các thành phần trên giao diện chi tiết địa điểm.............................................102
Bảng 4. 39 Các thành phần trên giao diện chi tiết địa điểm.............................................103
Bảng 4. 40 Các thành phần của giao diện dẫn đường ......................................................105
Bảng 4. 41 Các thành phần của giao diện favourite .........................................................106
Bảng 4. 42 Các thành phần của giao diện tùy chỉnh tìm kiếm ..........................................106
Bảng 4. 43 Các thành phần của giao diện đăng ký ...........................................................107
Bảng 4. 44 Các thành phần của giao diện đăng nhập.......................................................108
Bảng 4. 45 Các thành phần của giao diện Thông tin cá nhân .........................................109
Bảng 4. 46 Các thành phần của giao diện chỉnh sửa thông tin cá nhân..........................110
Bảng 4. 47 Các thành phần của giao diện chia sẻ địa điểm.............................................111
Bảng 4. 48 Các thành phần của giao diện Feeds ............................................................112
Bảng 4. 49 Các thành phần của giao diện bình luận .......................................................114
Bảng 4. 50 Các thành phần của giao diện những người đã thích....................................115
Bảng 4. 51 Các thành phần của giao diện bản đồ địa điểm chia sẻ.................................116
CÁC KÝ HIỆU VÀ VIẾT TẮT xii
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
CÁC KÝ HIỆU VÀ VIẾT TẮT
Ký hiệu, viết tắt và
thuật ngữ
Giải nghĩa
SDK Software Development Kit
Soft-keyboard Bàn phím ảo trong điện thoại
SD Card Bộ nhớ ngoài hay thẻ nhớ của điện thoại
VM Visual Machine (Máy ảo)
Android Emulator Thiết bị giả lập điện thoại Android để chạy các ứng dụng.
URI
Uniform Resource Identifier
Trong Android là đường dẫn chỉ đến các dữ liệu trong hệ
thống Android
API Application Programming Interface
KML
Một định dạng file dùng để biểu diễn dữ liệu dạng địa lý cho
một trình hiển thị bản đồ trái đất (như Google Earth, Google
Maps, Google Maps cho mobile).
LatLng
Lat (latitude) và Lng (longitude) - vĩ độ và kinh độ của một
điểm trên bản đồ, được định nghĩa thành một kiểu dữ liệu
trong phần cài đặt của nhóm nghiên cứu.
Request Yêu cầu được gửi đến máy chủ (dịch vụ web)
Response Kết quả trả về của máy chủ
Parameter Tham số, cụ thể trong tài liệu là các tham số trong Request
API Key
Mã khóa mà Google cung cấp cho người dùng muốn sử
dụng các dịch vụ web của họ, để có được mã khóa này phải
đăng ký trên trang Google APIs Console.
GIỚI THIỆU ĐỀ TÀI xiii
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
GIỚI THIỆU ĐỀ TÀI
Khoa học công nghệ hiện nay ngày càng phát triển không ngừng, máy móc ngày
càng thông minh và trở nên thân thiết hơn với con người. Tiêu biểu nhất là chiếc
điện thoại di động, không dừng lại ở chức năng chủ yếu của nó là nghe và gọi điện,
chiếc điện thoại di động hiện nay ngày càng hiện đại và thông minh hơn, giúp ích
nhiều hơn cho cuộc sống, cho công việc của con người. Để làm được những điều
này, ngoài việc được trang bị những phần cứng tinh vi nhất, những chiếc điện thoại
di động cần phải được cài đặt những phần mềm, ứng dụng thông minh và hiệu quả
nhất mới có thể phục vụ tốt nhất cho nhu cầu của con người. Vì vậy, một chiếc điện
thoại di động tốt không chỉ là một chiếc điện thoại có cấu hình tốt, mà còn phải
được chạy trên một hệ điều hành tốt, hệ điều hành ấy ngoài việc hoạt động ổn định
trên cấu hình phần cứng còn phải cung cấp cho các nhà phát triển một giao diện lập
trình hiệu quả và thuận lợi nhất, nhằm giúp phát triển những ứng dụng ngày càng
thiết thực và gần gũi hơn với con người.
Một số hệ điều hành hiện nay như: Symbian, Windows Mobile, iOS… tuy đã có
lịch sử ra đời lâu nhưng vẫn chưa là những hệ điều hành hỗ trợ tốt nhất cho các nhà
phát triển. Symbian với việc cấu hình để lập trình khó khăn và phải dùng ngôn ngữ
C/C++ rất không thuận tiện, Windows Mobile của Microsoft hoàn toàn đóng với
người dùng, iOS của Apple thì việc có được môi trường lập trình và phân phối ứng
dụng lại mất nhiều chi phí, và lại chỉ có thể chạy trên phần cứng của Apple. Chính
vì thế, hệ điều hành mobile Android do hãng Google phát triển là một hề điều hành
mã nguồn mở trên nền tản Linux, lấy Java làm ngôn ngữ lập trình ứng dụng chủ
yếu, tuy là hệ điều hành còn non trẻ nhưng đã thể hiện một lợi thế mà các hệ điều
hành trước không thể nào sánh được. Một hệ điều hành có thể tùy biến dễ dàng,
chạy được trên rất nhiều nền tản phần cứng, đặc biệt lại cung cấp một bộ công cụ
lập trình hoàn toàn miễn phí là Android SDK thì việc phát triển và chiếm lĩnh thị
trường là điều hoàn toàn dễ dàng và hiện nay cũng đã trở thành hiện thực.
GIỚI THIỆU ĐỀ TÀI xiv
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Đối với xã hội như ở nước Việt Nam ta, cuộc sống cũng ngày càng phát triển kéo
theo nhu cầu giao thông, đi lại, du lịch của người dân ngày càng cao, đòi hỏi phải
xác định rõ ràng thông tin những điểm đến, đường đi sao cho thật hợp lý nhằm tiết
kiệm thời gian và giảm chi phí di chuyển. Thêm vào đó tính chia sẻ cộng đồng
thông qua môi trường internet hiện nay đang dần trở nên phổ biến, vì thế nếu được
chia sẻ cho bạn bè những nơi hấp dẫn mình đã đến là một điều đang được nhiều
người mong chờ. Chiếc điện thoại di động 10 năm trước đối với người dân Việt
Nam có thể là một điều xa xỉ, nhưng hiện nay nó đã trở nên quá gần gũi với hầu hết
mọi người, và còn hơn thế đó còn là những chiếc điện thoại hiện đại và thông minh
nhất. Vì vậy, chiếc điện thoại di động hoàn toàn có thể giải quyết được những vấn
đề xã hội nêu trên, điều còn lại là cần có một ứng dụng thông minh để làm được
điều đó.
Hiểu được các vấn đề cấp thiêt đó, nhóm nghiên cứu quyết định chọn đề tài “Tìm
hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android”. Đề tài
được giải quyết chủ yếu dựa vào dịch vụ Google Maps, công nghệ RESTful Web
Services 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. RESTful Web Services là một công
nghệ cung cấp những dịch vụ web nhanh chóng và hiệu quả nhất. Android cũng là
hệ điều hành mã nguồn mở của Google và đang chiếm lĩnh thị trường di động, có
thể cài đặt trên nhiều thiết bị, có các giao diện lập trình tích hợp với dịch vụ Google
Maps. Việc kết hợp Google Maps, RESTful Web Services và hệ điều hành Android
hứa hẹn sẽ đem lại một sản phẩm hoàn hảo nhất cho người dùng trong việc tìm
kiếm và chia sẻ địa điểm.
Nội dung đề tài gồm có 4 chương:
 Chương 1: Tổng quan về hệ điều hành mobile Android
 Chương 2: Google APIs
 Chương 3: RESTful Web Services
 Chương 4: Chương trình minh họa
Phần Mở Đầu 1
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Phần A
MỞ ĐẦU
Phần Mở Đầu 2
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1. THÁCH THỨC NGHIÊN CỨU
Ngày nay, khi khoa học công nghệ ngày càng phát triển, máy móc cũng ngày càng
trở nên gần gũi với con người hơn. Đặc biệt là chiếc điện thoại di động dường như
là vật dụng không thể thiếu đối với mỗi người. Không ngừng ở chức năng đơn giản
là làm phương tiện liên lạc, chiếc điện thoại di động hiện nay còn là những chiếc
điện thoại thông minh, hiện đại và tinh vi, làm được rất nhiều việc khác phục vụ cho
nhu cầu công việc cũng như giải trí của con người. Để cho một chiếc điện thoại di
động càng thông minh hơn, thì cái quyết định sự thông minh đó chính là hệ điều
hành. Hệ điều hành quyết định toàn bộ thành phần giao diện và quản lý tất cả các
hoạt động, các ứng dụng chạy trên điện thoại. Và đến nay, các hệ điều hành di động
ra đời sớm như: Symbian, Windows Phone, iOS,… đã làm nên rất nhiều điều kỳ
diệu trên một chiếc điện thoại di động. Tuy nhiên, trên thị trường hiện nay, hệ điều
hành được cài đặt trên số điện thoại di động nhiều nhất không phải là một trong
những hệ điều hành lâu đời trên, mà đó là một cái tên khác, một người em sinh sau
đẻ muộn – hệ điều hành Android.
Tại sao một hệ điều hành non trẻ lại chiếm được thi phần cao đến như vậy? Nó có
những điểm gì hay và đặc biệt hơn? Nó hỗ trợ các nhà phát triển phần mềm đến
mức nào?
Bên cạnh đó, mạng xã hội hiện nay đang là một hình thức được rất nhiều người sử
dụng trên Internet. Tuy nhiên, một mạng xã hội địa điểm chuyên biệt về vấn đề tìm
kiếm và chia sẻ các địa điểm giữa những người sử dụng Internet, xét riêng ở Việt
Nam tuy đã có nhưng chưa thực sự hiệu quả, thu hút nhiều người sử dụng.
Khảo sát hiện trạng về mạng xã hội địa điểm:
Hiện nay trên thế giới, mô hình mạng xã hội dựa trên địa điểm (location based
social networking) không mới. Foursquare có thể xem là hình mẫu thành công đầu
tiên của hình thức mạng xã hội này. Foursquare do Dennis Crowley và Naveen
Selvadurai phát triển từ năm 2009, đến năm 2010, sản phẩm này đã có sự phát triển
Phần Mở Đầu 3
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
ngoạn mục và cũng được cộng đồng mạng Việt Nam đón nhận. Tuy nhiên, mạng xã
hội này thiên về tính location-based (định vị trên điện thoại di động) và mang tính
chất giải trí hơn là tính kết nối. Mạng xã hội này giống như một trò chơi khi mà
người chơi mải mê “check in” càng nhiều địa điểm ở nhiều nơi để giành về những
danh hiệu, huân chương ảo để thể hiện “thương hiệu cá nhân”. Trong khi đó, sự kết
nối có giá trị thật của những người dùng, những chia sẻ mà họ muốn dành cho nhau
lại không được thể hiện rõ ràng. Thêm vào đó, việc phải cung cấp quá nhiều thông
tin cá nhân khi gia nhập mạng xã hội này khiến cho nhiều người dùng lo ngại những
thông tin của họ sẽ khai thác cho các hoạt động tiếp thị. [1]
Ở Việt Nam, mạng xã hội bản đồ được nhắc đến lần đầu tiên khoảng đầu năm 2009,
khi ứng dụng KunKun của hai sinh viên khoa Công nghệ thông tin, đại học Bách
Khoa TP.HCM giành giải nhất cuộc thi Mùa hè sáng tạo (tháng 3/2009) và được
Viettel đầu tư phát triển. Tuy nhiên cho đến nay, sau gần 3 năm triển khai và hoạt
động, mạng xã hội Kunkun vẫn chưa có sự nổi trội, số lượng người dùng ít ỏi và bị
giới hạn chỉ những thuê bao của Viettel mới có thể sử dụng. Hiện tại mạng xã hội
này cũng đã có trên Android, tuy nhiên với giao diện chưa được bắt mắt và các chức
năng chưa thật sự tiện lợi cho người sử dụng như: bản đồ chỉ giới hạn ở lãnh thổ
Việt Nam, không hiển thị được nhiều địa điểm được chia sẻ một lúc trên bản đồ.. Vì
vậy, hiện nay KunKun vẫn chưa gây được sự chú ý trên thị trường mạng xã hội địa
điểm ở Việt Nam.
Ngoài ra, hai mạng xã hội dựa trên địa điểm khác có xuất xứ “nội địa” là
goLocation của mạng xã hội Goolnline.vn và Yoo! (yoo.vn) do Công ty Cổ phần
Công nghệ trẻ (NES) phát triển. Tuy nhiên, goLocation chỉ có phiên bản trên Web,
khiến cho việc chia sẻ và cập nhật địa điểm ngay lập tức khi người dùng đang ở
ngoài trời khó thực hiện được, vấn đề xác định chính xác vị trí cũng khó khăn khi
không thể sử dụng GPS. Còn đối với Yoo!, sau một thời gian ngắn triển khai thì nay
trang web Yoo.vn cũng không còn tồn tại.
Phần Mở Đầu 4
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Các mạng xã hội truyền thống cũng đã và đang dần tích hợp tính năng địa điểm
trong mạng xã hội sẵn có của họ. Đó chính là hai mạng xã hội lớn nhất hiện nay:
Facebook và Google+. Facebook đã phát triển Facebook Places cho phép người
dùng đính kèm thông tin về địa điểm khi họ cập nhật trạng thái của mình và “Check
in” những địa điểm mà họ lui tới. Google+ cũng phát triển tính năng tương tự. Tuy
nhiên, đây cũng chỉ là những sự tích hợp (plugin) vào một mạng xã hội truyền
thống chứ không phải là một mạng xã hội địa điểm chuyên biệt, nơi mà những
người tham gia không phải lạc vào mê cung của vô số những chức năng: trạng thái,
mối quan hệ, game,.. mà là tìm thấy sự đơn giản, nhanh chóng và thuận tiện khi
muốn tìm kiếm một địa điểm hoặc chia sẻ một địa điểm với bạn bè của họ.
Chính vì vậy, đây là những tiền đề thôi thúc nhóm nghiên cứu đặt ra nhiệm vụ là
phải tìm hiểu hệ điều hành mobile Android và xây dựng một ứng dụng mạng xã hội
địa điểm trên Android một cách có hiệu quả nhất.
2. MỤC ĐÍCH NGHIÊN CỨU
Luận văn nghiên cứu và thực hiện các vấn đề sau:
 Xây dựng cái nhìn tổng quan về hệ điều hành mobile Android, về lịch sử hình
thành và phát triển, ưu thế so với các hệ điều hành khác cũng như thị trường
hiện nay của Android.
 Tìm hiểu kiến trúc của hệ điều hành Android, các thành phần của một ứng dụng
Android và cách xây dựng một ứng dụng trên Android.
 Xây dựng cái nhìn tổng quan về RESTful Web Services, cách xây dựng một
RESTful Web Services để cung cấp các dịch vụ dựa theo kiểu dữ liệu trao đổi
là JSON.
 Tìm hiểu các dịch vụ về địa điểm và bản đồ do Google cung cấp, cách thức sử
dụng các dịch vụ đó.
 Xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android theo mô hình
mạng xã hội địa điểm.
Phần Mở Đầu 5
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
3. ĐỐI TƯỢNG NGHIÊN CỨU
Đối tượng nghiên cứu của luận văn là:
 Nghiên cứu hệ điều hành Android dành cho mobile và ứng dụng chạy trên hệ
điều hành Android.
 Các dịch vụ của Google: Google Maps API, Google Places API, Google
Directions API.
 Web Services được sử dụng phổ biến nhất hiện nay: RESTful.
4. PHẠM VI NGHIÊN CỨU
Do thời gian hạn hep và khả năng của nhóm nghiên cứu còn có hạn, cho nên luận
văn chỉ tập trung nghiên cứu sâu một số lĩnh vực sau:
 Hệ điều hành Android dành cho mobile (phiên bản từ 2.3 trở xuống), không
nghiên cứu Android trên tablet và các thiết bị khác.
 Các dịch vụ của Google: Google Maps API, Google Places API, Google
Directions API.
 RESTful Web Services với kiểu dữ liệu trao đổi là JSON.
Phần Nội Dung 6
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Phần B
NỘI DUNG
Tổng quan về hệ điều hành mobile Android 7
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Chương 1. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH MOBILE ANDROID
Chương này giới thiệu tổng quan về hệ điều hành Android, về lịch sử, kiến trúc và
các thành phần cốt lõi của Android, chu kỳ sống của ứng dụng Android, cơ chế
truyền thông điệp giữa các thành phần của một ứng dụng và giữa các ứng dụng với
nhau (Intent), Background service, các thành phần của giao diện và quản lý cơ sở
dữ liệu (SQLite).
1.1. Lịch sử hệ điều hành mobile Android
Android là một hệ điều hành dành cho thiết bị di động như smartphone, tablet hay
netbook. Android do Google phát triển dựa trên nền tảng Linux kernel và các phần
mềm mã nguồn mở.
Android là hệ điều hành mã nguồn mở với 12 triệu dòng mã bao gồm 3 triệu dòng
mã XML, 2.8 triệu dòng mã C, 2.1 triệu dòng Java và 1.75 triệu dòng C++.
Ban đầu nền tảng này được phát triển bởi Android Inc (sau đó được Google mua
lại) và gần đây nó trở thành một trong những phần mềm đứng đầu của liên minh
OHA (Open Handset Alliance – với khoảng 78 thành viên bao gồm cả nhà sản xuất,
nhà phát triển ứng dụng… cho thiết bị di dộng mà dẫn đầu là Google).
Android được phát triển nhằm cạnh tranh với các hệ điều hành di động khác như
iOS (Apple), BlackBerry OS (RIM), Windows Mobile (Microsoft), Symbian
(Nokia), Samsung (Bada), WebOS (Palm),… Tính đến thời điểm này, Android đã
trở thành nền tảng di động tăng trưởng nhanh nhất thế giới.
 Các phiên bản hệ điều hành Android:
Từ lúc ra mắt phiên bản đầu tiên cho tới nay, Android đã có rất nhiều bản nâng cấp.
Đa số đều tập trung vào việc vá lỗi và thêm những tính năng mới.
Tổng quan về hệ điều hành mobile Android 8
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Hình 1. 1 Các phiên bản hệ điều hành Android
Android những thế hệ đầu tiên 1.0 ( 9/2008) và 1.1 ( 2/2009) chưa có tên gọi chính
thức. Từ thế hệ tiếp theo, mỗi bản nâng cấp đều được đặt với những mã tên riêng
dựa theo các món ăn hấp dẫn theo thứ tự bảng chữ cái từ “C-D-E-F-G-H-I”. Hiện
tại các phiên bản chính của Android bao gồm:
 1.5 (Cupcake): Ra mắt tháng 4/2009: Phiên bản này có một số tính năng đáng
chú ý như: khả năng ghi lại và xem video thông qua chế độ máy ghi hình, tải
video lên YouTube và ảnh lên Picasa trực tiếp từ điện thoại, tích hợp bàn phím
ảo với khả năng đoán trước văn bản, tự động kết nối với một thiết bị Bluetooth
trong một khoảng cách nhất định, các widget và thư mục mới có thể cài đặt
linh động trên màn hình chủ.
 1.6 (Donut) : Ra mắt tháng 9/2009. Phiên bản này giúp Nâng cao trải nghiệm
trên kho ứng dụng Android Market, tích hợp giao diện tùy biến cho phép
người dùng xóa nhiều ảnh cùng lúc, nâng cấp Voice Search, nâng cấp khả
năng tìm kiếm bookmarks, history, contacts và web trên màn hình chủ, bước
đầu hỗ trợ màn hình độ phân giải WVGA.
 2.0/2.1 (Eclair): Ra mắt tháng 10/2009. Phiên bản này có sự cải thiện rõ rệt
trong giao diện người dùng, tối ưu hóa tốc độ phần cứng, hỗ trợ nhiều kích cỡ
và độ phân giải màn hình hơn, thay đổi giao diện duyệt web và hỗ trợ chuẩn
HTML5, Exchange ActiveSync 2.5, nâng cấp Google Maps 3.1.2, camera
zoom kĩ thuật số tích hợp đèn flash, nâng cấp bàn phím ảo và kết nối
Bluetooth 2.1.
Tổng quan về hệ điều hành mobile Android 9
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
 2.2 (Froyo): Ra mắt tháng 5/2010: Phiên bản này chú trọng nâng cấp tốc độ xử
lí, giới thiệu engine Chrome V8 JavaScript, hỗ trợ Adobe Flash10.1, thêm tính
năng tạo điểm truy cập Wi-Fi. Một tính năng đáng chú ý khác hỗ trợ chuyển
đổi nhanh chóng giữa các ngôn ngữ và từ điển trên bàn phím đồng thời cho
phép cài đặt và cập nhật ứng dụng ở các thiết bị mở rộng bộ nhớ. Một trong
những smartphone đầu tiên chạy phiên bản Android 2.2 Froyo là LG Optimus
One.
 2.3 (Gingerbread): Ra mắt tháng 12/2010: Phiên bản này đã nâng cấp đáng kể
giao diện người dùng, cải thiện bàn phím ảo, thêm tính năng copy/paste, hỗ trợ
công nghệ giao tiếp tầm sóng ngắn NFC, hỗ trợ chuẩn video WebM và nâng
cao tính năng copy–paste. Cùng với phiên bản Gingerbread, Google cũng ra
mắt điện thoại đầu tiên của hãng sử dụng nền tảng này là Google Nexus S.
 3.0 (Honeycomb): Ra mắt tháng 2/2011: Đây là phiên bản hệ điều hành dành
riêng cho máy tính bảng tablet với giao diện mới tối ưu hóa cho tablet, từ các
thao tác đều phụ thuộc màn hình cảm ứng (như lướt web, duyệt mail..).
Honeycomb hỗ trợ bộ xử lí đa nhân và xử lý đồ họa đồng thời hỗ trợ nhiều
màn hình home khác nhau, cho phép người dùng dễ dàng tùy biến giao diện
nếu muốn.
 4.0 (Ice-cream sandwich): Ra mắt tháng 10/2011, là sự kết hợp giữa
Gingerbread và Honeycomb và sẽ chạy trên tất cả các thiết bị như điện thoại,
máy tính bảng, máy tính xách tay,… [2]
1.2. Máy ảo Dalvik
Dalvik là máy ảo giúp các ứng dụng java chạy được trên các thiết bị động Android.
Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex).
Định dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc độ xử
lý. Dalvik đã được thiết kế và viết bởi Dan Bornstein, người đã đặt tên cho nó sau
khi đến thăm một ngôi làng đánh cá nhỏ có tên là Dalvík ở đảo Eyjafjörður, nơi mà
một số tổ tiên của ông sinh sống.
Tổng quan về hệ điều hành mobile Android 10
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Từ góc nhìn của một nhà phát triển, Dalvik trông giống như máy ảo Java (Java
Virtual Machine) nhưng thực tế thì hoàn toàn khác. Khi nhà phát triển viết một ứng
dụng dành cho Android, đoạn mã sẽ được thực hiện trong môi trường Java. Sau đó,
nó sẽ được biên dịch sang các bytecode của Java, tuy nhiên để thực thi được ứng
dụng này trên 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 bytecode sang một dạng gọi là dex bytecode. "Dex"
là từ viết tắt của "Dalvik executable" đóng vai trò như cơ chế ảo thực thi các ứng
dụng Android. [3]
1.3. Kiến trúc của Android
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành Android.
Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây.
Hình 1. 2 Kiếm trúc hệ điều hành Android
1.3.1. Tầng ứng dụng
Là các ứng dụng hoàn chỉnh được người sử dụng trực tiếp sử dụng. Android được
tích hợp sẵn một số ứng dụng cần thiết cơ bản như: contacts, browser, camera,
Tổng quan về hệ điều hành mobile Android 11
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
phone,… Tất cả các ứng dụng chạy trên hệ điều hành Android đều được viết bằng
Java.
1.3.2. Tầng 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 thanh trạ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ùng một khuôn khổ đượ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 thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình và ứng
dụng nào khác sau đó có thể sử dụng những khả năng (có thể hạn chế bảo mật được
thực thi bởi khuôn khổ). Cơ chế này cho phép các thành phần tương tự sẽ được thay
thế bởi người sử dụng.
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:
 Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để thiết
kế phần giao diện ứng dụng như: gridview, tableview, linearlayout,…
 Một “Content Provider” cho phép các ứng dụng có thể truy xuất dữ liệu từ
các ứng dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các
ứng dụng đó.
 Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không phải là
mã nguồn, chẳng hạn như: localized strings, graphics, layout files.
 Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các thông
báo (alert) trong thanh trạng thái (status bar).
Activity Manager được dùng để quản lý chu trình sống của ứng dụng và điều hướng
các activity.
Tổng quan về hệ điều hành mobile Android 12
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1.3.3. Library và Android Runtime
 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. Điều này được thể hiện thông qua nền tảng
ứng dụng Android. Một số các thư viện cơ bản được liệt kê dưới đây:
 System C library: hệ thống thư viện chuẩn C (libc), được điều chỉnh để
nhúng vào các thiết bị dựa trên Linux.
 Media Libraries: các thư viện hỗ trợ phát âm và ghi âm của nhiều định dạng
audio và video thông dụng, cũng như các tập tin ảnh tĩnh, bao gồm MPEG4,
H.264, MP3, AAC, AMR, JPG và PNG…
 Surface Manager – quản lý việc truy xuất vào hệ thống hiển thị.
 LibWebCore – trình duyệt web của Android.
 SGL – công cụ đồ họa 2D.
 3D libraries – thư viện dùng để tạo ra các đồ họa 3D dựa vào chuẩn
OpenGLES 1.0 API.
 FreeType - hỗ trợ xử lý bitmap và font vector.
 SQLite – mô hình cơ sở dữ liệu gọn nhẹ, dùng để lưu trữ dữ liệu của ứng
dụng.
 Android Runtime:
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể
hoạt động. Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính
thường. Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như Java IO,
Collections, File Access. Thứ hai là một máy ảo Java ( Dalvik Virtual Machine).
Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điều
hành Android không được chạy bằng JRE của Sun (JVM) mà là chạy bằng máy ảo
Dalvik do Google phát triển.
Tổng quan về hệ điều hành mobile Android 13
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1.3.4. Linnux Kernel
Android dựa trên Linux phiên bản 2.6 cung cấp cho hệ thống các dịch vụ cốt lõi như
bảo mật (security), quản lý bộ nhớ (memory management), quản lý tiến trình
(process management), giao tiếp với phần cứng (driver model),... Kernel Linux hoạt
động như một lớp trừu tượng hóa giữa phần cứng và phần còn lại của phần mềm.
1.4. Ứng dụng Android
1.4.1. Các thành phần của ứng dụng Android
Các thành phần chính của một ứng dụng Android gồm:
1) Activity
Hiểu một cách đơn giản thì Activity là một màn hình của 1 ứng dụng. Mỗi một
màn hình là một lớp mở rộng của lớp Activity. Khi khởi động 1 ứng dụng
Android nào đó thì bao giờ cũng có một main Activity được gọi, hiển thị màn
hình giao diện chính của ứng dụng cho phép người dùng tương tác và từ đó mở
ra các màn hình khác.
2) Services
Thành phần chạy ẩn trong Android. Service sử dụng để thực hiện những công
việc mà không cần hiển thị xuyên suốt cho người dùng thấy như hẹn giờ, theo
dõi các cập nhật của ứng dụng, đưa ra các cảnh báo (Notification).
3) Content Provider
Kho dữ liệu chia sẻ. Content Provider được sử dụng để quản lý và chia sẻ dữ liệu
giữa các ứng dụng.
4) Intent
Nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các thông báo
đi nhằm khởi tạo 1 Activity hay Service để thực hiện công việc bạn mong muốn.
Ví dụ: khi mở 1 trang web, bạn gửi 1 intent đi để tạo 1 activity mới hiển thị trang
web đó.
5) Broadcast Receiver
Tổng quan về hệ điều hành mobile Android 14
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Thành phần thu nhận các Intent bên ngoài gửi tới. Ví dụ: bạn viết 1 chương trình
thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần 1 Broadcast
Receiver để nhận biết các Intent là các cuộc gọi tới.
6) Notification
Đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động. Đây
là một kỹ thuật được ưa chuộng để tạo một chú ý người dùng từ bên trong một
Service hoặc một Broadcast Receiver. Ví dụ khi người dùng đang nhận một tin
nhắn hoặc đang nhận cuộc gọi, chúng sẽ gửi đến họ một tín hiệu bằng đèn, tạo
một âm thanh hoặc hiển thị một biểu tượng nào đó.
1.4.2. Vòng đời của ứng dụng Android
Một sự khác thường và là đặc tính cơ bản của Android là thời gian sống của tiến
trình ứng dụng không được điều khiển trực tiếp bởi chính nó. Thay vào đó, nó được
xác định bởi hệ thống qua sự kết hợp của việc theo dõi:
 Những phần của ứng dụng mà hệ thống biết là đang chạy.
 Độ ưu tiên của các thành phần ứng dụng.
 Ứng dụng chiếm lĩnh bao nhiêu vùng nhớ của hệ thống.
Một tiến trình của một ứng dụng Android được tao ra và còn chạy cho đến khi
người sử dụng hủy hoàn toàn hay khi hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ
để cung cấp cho các ứng dụng khác có độ ưu tiên cao hơn.
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc bắt đầu
khởi tạo và đến thời điểm kết thúc. Giữa đó, đôi lúc chúng có thể là active hoặc
inactive, hoặc là trong trường hợp activie nó có thể visible hoặc invisible
Hình 1. 3 Chu kỳ sống của ứng dụng Android
Tổng quan về hệ điều hành mobile Android 15
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1.4.3. Chu kỳ của một Activity
Bên trong hệ thống các activity được quản lý như một stack. Khi một Activity mới
được khởi động, nó được đặt ở đỉnh của stack và trở thành activity đang chạy.
Activity trước sẽ ở bên dưới activity mới và sẽ không được thấy trong suốt quá trình
activity mới tồn tại.
Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển lên và trở
thành active Activity.
Hình 1. 4 Activity stack
 Các trạng thái trong chu kỳ sống của một Activity:
Hình 1. 5 Chu kỳ sống của Activity
Tổng quan về hệ điều hành mobile Android 16
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Một Activity có 3 chu kỳ chính sau:
 Active hoặc running: khi Activity đang được chạy và hiển thị trên màn hình,
Activity này tập trung vào những thao tác của người dùng trên ứng dụng.
 Paused: Activity đang được tạm dừng, tuy bị khi mất focus do có một Activity
khác với màn hình không che hết Activity bị tạm dừng nằm ở trên, vì thế người
dùng vẫn có thể trông thấy nó. Một Activity tạm dừng là còn sống nhưng có thể
bị kết thúc bởi hệ thống trong trường hợp thiếu vùng nhớ.
 Stopped: nếu nó hoàn toàn bao phủ bởi Activity khác. Nó vẫn còn các trạng thái
và thông tin thành viên trong nó. Người dùng không thấy nó và thường bị loại
bỏ trong trường hợp hệ thống cần vùng nhớ cho tác vụ khác. [3]
 Các phương thức trong chu kỳ sống của một Activity:
Phương thức: onCreate()
- Được gọi khi activity lần đầu tiên được tạo
- Ở đây bạn làm tất cả các cài đặt tĩnh -- tạo các view, kết nối dữ liệu đến list và
.v.v…
- Phương thức này gửi qua một đối tượngBundle chứa đựng từ trạng thái trược
của Activity.
- Luôn theo sau bởi onStart() .
Phương thức: onRestart()
- Được gọi sau khi activity đã được dừng, chỉ một khoảng đang khởi động lần
nữa (stared again).
- Luôn theo sau bởi onStart().
Phương thức: onStart()
- Được gọi trước khi một activity visible với người dùng.
- Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặc onStop()
nế nó trở nên ẩn.
Phương thức: onResume()
Tổng quan về hệ điều hành mobile Android 17
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
- Được gọi trước khi activity bắt đầu tương tác với người dùng.
- Tại thời điểm này activity ở trên dỉnh của stack activity.
- Luôn theo sau bởi onPause().
Phương thức: onPause()
- Được gọi khi hệ thống đang resuming activity khác.
- Phương thức này là điển hình việc giữ lại không đổi dữ liệu.
- Nó nên được diễn ra một cách nhanh chóng bởi vì activity kế tiếp sẽ không
được resumed ngay cho đến khi nó trở lại.
- Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởi onStop nếu nó
trở nên visible với người dùng.
- Trạng thái của activity có thể bị giết bởi hệ thống.
Phương thức: onStop()
- Được gọi khi activity không thuộc tầm nhìn của người dùng.
- Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa được
resumed và bao phủ nó.
- Được theo sau bởi onRestart() nếu activity đang đở lại để tương tác với người
dùng, hoặc onDestroy() nếu activity đang bỏ.
- Trạng thái của activity có thể bị giết bởi hệ thống.
Phương thức: onDestroy()
- Được gọi trước khi activity bị hủy.
- Đó là lần gọi cuối cùng mà activity này được nhận.
- Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm
thởi bị hủy diệt để tiết kiệm vùng nhớ.
- Bạn có thể phân biệt giữa 2 kịch bản với phương isFinshing().
1.4.4. Intent
 Khái niện Intent:
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.
Nó là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều Activity,
mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau.
Tổng quan về hệ điều hành mobile Android 18
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng như truyền các
dữ liệu cần thiết tới một Activity khác. Đ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.
Hình 1. 6 Intent
Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớp android.content.Intent
 Các thuộc tính của một đối tượng Intent:
Bảng 1. 1 Các thuộc tính của đối tượng Intent
Tên thuộc tính Chức năng
action
Tên (string) của action mà Intent sẽ yêu cầu thực hiện.
Action có thể do Android định nghĩa sẵn (built-in
standard action) hoặc do người lập trình tự định nghĩa.
data Dữ liệu mà Activity được gọi sẽ xử lý.
catelogy Thông tin về nhóm của action.
type
Định dạng kiểu dữ liệu (chuẩn MIME), thường được tự
động xác định.
component
Chỉ định cụ thể lớp sẽ thực thi Activity. Khi được xác
định, các thuộc tính khác trở thành không bắt buộc
(optional).
extras
Chứa tất cả các cặp (key, value) do ứng dụng thêm vào
để truyền qua Intent (theo cấu trúc Bundle).
Tổng quan về hệ điều hành mobile Android 19
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
 Các Action được định nghĩa sẵn:
Dưới đây là những hằng String đã được định nghĩa sẵn trong lớp Intent. Đi kèm với
nó là các Activity hay Application được xây dựng sẵn sẽ được triệu gọi mỗi khi
Intent tương ứng được gửi (tất nhiên khi được cung cấp đúng data).
Ví dụ: Gọi tới một số điện thoại:
Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:123456"));
startActivity(dialIntent);
Hình 1. 7 Các Action được dựng sẵn
1.4.5. Content Provider và Uri
Trong hệ thống Android tất cả các tài nguyên như Contact, SMS,… đều được lưu
trữ vào CSDL SQLite của hệ thống. Cũng như các CSDL khác, CSDL mà hệ thống
Android sử dụng để lưu trữ thông tin cũng cho phép chúng ta truy vấn dữ liệu như
một CSDL thông thường. Tuy nhiên, trong hệ thống đó chúng ta không cần phải
thao tác bằng lệnh SQL nhiều để truy xuất dữ liệu mà thay vào đó Android đã được
trang bị một API cho phép người lập trình có thể dễ dàng truy xuất dữ liệu. Đó gọi
Tổng quan về hệ điều hành mobile Android 20
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
là ContentProvider. ContentProvider cung cấp cho chúng ta một đối tượng con trỏ
giúp chúng ta có thể dễ dàng lấy được bất cứ dữ liệu lưu trữ nào chỉ cần cung cấp
một đường dẫn đúng đến dữ liệu đó. Đường dẫn này còn được gọi là Uri.
Tạo một Uri:
Uri uri = Uri.parse(“content://com.android.contacts/contacts”);
Cấu trúc gồm có 4 phần chính như sau:
 Phần A: Đây là tiền tố chỉ ra dữ liệu được điều khiển bởi Content Provider và
nó không bao giờ thay đổi.
 Phần B: Phần này chỉ đến nơi lưu trữ dữ liệu. Cũng giống như cấu trúc của
một số điện thoại thì cái này có thể hình dung nó như là mã quốc gia hoặc
cũng có thể coi nó như là tên của CSDL.
 Phần C: phần này chỉ ra loại dữ liệu. Chẳng hạn như, dữ liệu contact, dữ liệu
SMS,… Phần này có thể coi nó như là tên của một table
 Phần D: phần này chỉ đến đúng vị trí của dữ liệu, có thể coi phần này như là
ID của row trong table hoặc một dữ liệu nào đó dùng để truy vấn.
Ví dụ: Uri chỉ đến contact thứ 0 trong CSDL là: content://contacts/people/0
Để có thể thực hiện truy vấn đến vùng dữ liệu được chỉ ra bởi một Uri ta cần có 2
đối tượng con trỏ được cung cấp bởi Activity đó là: Cursor và ContentResolver.
Để lấy được 2 đối tượng này thì trong Activity sử dụng hàm
getContentResolver(); - trả về đối tượng ContentResolver.
getContentResolver().query(Uri uri); - trả về đối tượng Cursor.
Tổng quan về hệ điều hành mobile Android 21
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1.4.6. Background Service
Service là một trong 4 thành phần chính trong một ứng dụng Android (Activity,
Service, BroadcastReceiver, ContentProvider) thành phần này chạy trong hậu
trường và làm những công việc không cần tới giao diện như chơi nhạc, download,
xử lí tính toán,…
Một Service có thể được sử dụng theo 2 cách:
 Nó có thể được bắt đầu và được cho phép hoạt động cho đến khi một người
nào đó dừng nó lại hoặc nó tự ngắt. Ở chế độ này, nó được bắt đầu bằng cách
gọi Context.startService() và dừng bằng lệnh Context.stopService(). Nó có
thể tự ngắt bằng lệnh Service.stopSelf() hoặc Service.stopSelfResult(). Chỉ
cần một lệnh stopService() để ngừng Service lại cho dù lệnh startService()
được gọi ra bao nhiêu lần.
 Service có thể được vận hành bằng việc sử dụng một Interface mà nó định
nghĩa. Người dùng thiết lập một đường truyền tới đối tượng Service và sử
dụng đường kết nối đó để thâm nhập vào Service. Kết nối này được thiết lập
bằng cách gọi lệnh Context.bindService() và được đóng lại bằng cách gọi
lệnh Context.unbindService(). Nhiều người dùng có thể kết nối tới cùng một
Service. Nếu Service vẫn chưa được khởi chạy, lệnh bindService() có thể tùy
ý khởi chạy nó.
Hai chế độ này không tách biệt hoàn toàn, có thể kết nối với một Service mà nó đã
được bắt đầu với lệnh startService(). Ví dụ, một Service nghe nhạc ở chế độ nền có
thể được bắt đầu bằng cách gọi lệnh startService() cùng với một đối tượng Intent mà
định dạng được âm nhạc để chơi. Chỉ sau đó, có thể là khi người sử dụng muốn
kiểm soát trình chơi nhạc hoặc biết thêm thông tin về bài hát hiện tại đang chơi, thì
sẽ có một Activity tạo lập một đường truyền tới Service bằng cách gọi
bindService(). Trong trường hợp như thế này, stopService() sẽ không thực sự ngừng
Service cho đến khi liên kết cuối cùng được đóng lại.
Tổng quan về hệ điều hành mobile Android 22
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Giống như một Activity, một Service cũng có các phương thức chu kỳ sống mà ta
có thể cài đặt để kiểm soát những sự thay đổi trong trạng thái của nó. Service chỉ có
3 phương thức được gọi đến trong chu trình sống là:
void onCreate()
void onStart(Intent intent)
void onDestroy()
Các phương thức kết nối và hủy kết nối đến một Service:
IBinder onBind(Intent intent)
boolean onUnbind(Intent intent)
void onRebind(Intent intent)
Hình 1. 8 Chu trình sống của một Service
Tổng quan về hệ điều hành mobile Android 23
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1.5. Android Emulator
Android SDK và Plugin Eclipse được gọi là một Android Deverloper Tool (ADT).
Các lập trình viên Android sẽ cần phải sử dụng công cụ IDE (Integrated
Development Enveronment) này để phát triển, debugging và testing cho ứng dụng.
Tuy nhiên, các lập trình viên cũng có thể không cần phải sử dụng IDE mà thay vào
đó là sử dụng command line để biên dịch và tất nhiên là vẫn có Emulator như
thường.
Android Emulator được trang bị đầy đủ hầu hết các tính năng của một thiết bị thật.
Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB, camera và video,
nghe phone, nguồn điện giả lập và bluetooth.
Android Emulator thực hiện các công việc thông qua một bộ xử lý mã nguồn mở,
công nghệ này được gọi là QEMU (http://bellard.org/qemu/) được phát triển bởi
Fabrice Bellard.
Hình 1. 9 Emulator
Tổng quan về hệ điều hành mobile Android 24
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1.6. Các thành phần giao diện trong Android
1.6.1. View
View là lớp thành phần giao diện cơ bản nhất của Android. Nó định nghĩa những
thuộc tính và phương thức cơ bản nhất cần có cho một thành phần giao diện trên
Android. Các thành phần giao diện khác đều được mở rộng từ View, tạo nên nhiều
kiểu View và ViewGroup gọi chung là các Widget. Trong đó, hầu hết các
ViewGroup đều là các Layout dùng để chứa đựng, sắp xếp những thành phần giao
diện khác bên trong nó.
Hình 1. 10 Các thành phần giao diện
Một màn hình giao diện trên Android bắt buộc phải được thiết kế bao bọc bên ngoài
bằng một Layout, các thành phần khác đều được sắp xếp có thứ tự hoặc có vị trí phụ
thuộc nhau trong Layout này. Việc thiết kế giao diện có thể dược tiến hành bằng các
thẻ trên một tập tin XML hoặc có thể thiết kế bằng mã code Java.
1.6.2. ViewGroup
ViewGroup được mở rộng từ lớp View, ngoài ListView thì còn lại hầu hết các
ViewGroup đều là các Layout để chứa đựng các Layout hay các View khác. Một số
Layout được sử dụng phổ biến như: LinearLayout, FrameLayout, AbsoluteLayout,
RelativeLayout, TableLayout.
Tổng quan về hệ điều hành mobile Android 25
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1.6.2.1. LinearLayout
LinearLayout dùng để sắp xếp các thành phần con bên trong nó theo một thứ tự
chiều ngang hay chiều dọc nhất định. LinearLayout làm cho các thành phần trong
nó không bị phụ thuộc vào kích thước của màn hình mà chủ yếu phụ thuộc vào các
thành phần khác và Layout chứa nó.
Hình 1. 11 Bố trí các widget sử dụng LinearLayout
1.6.2.2. FrameLayout
FrameLayout bố trí các thành phần bên trong nó theo từng lớp xếp chồng lên nhau.
Đối tượng nằm bên trên sẽ che khuất đối tượng nằm bên dưới. Vì thế FrameLayout
hay được dùng để thiết kế các giao diện có phần nền và các đối tượng khác nhỏ hơn
nằm bên trên như bản đồ, khung hiển thị ảnh,…
Hình 1. 12 FrameLayout
Tổng quan về hệ điều hành mobile Android 26
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1.6.2.3. AbsoluteLayout
Layout này được sử dụng để bố trí các widget vào một vị trí bất kì trong layout dựa
vào 2 thuộc tính toạ độ x, y. Tuy nhiên Layout này ít được khuyến khích sử dụng
bởi vì có nhiều loại màn hình với kích thước, độ phân giải khác nhau nên nếu các
thành phần giao diện không có sự ràng buộc tương đối, tỉ lệ khoảng các với nhau sẽ
không được hiển thị như ý muốn trên các màn hình khác nhau.
1.6.2.4. RelativeLayout
RelativeLayout bố trí các Widget bên trong nó bằng cách định nghĩa sự ràng buộc
giữa các Widget và giữa các Widget với RelativeLayout chứa đựng chúng. Các vị
trí được bố trí theo một trục đối xứng ngang hoặc dọc dựa vào các tham số: Top,
Left, Right và Bottom. Dựa vào những mối ràng buộc đó mà RetaliveLayout cũng
không phụ thuộc vào kích thước của màn hình. Ngoài ra, nó còn có ưu điểm là giúp
tiết kiệm layout sử dụng nhằm mục đích giảm lượng tài nguyên sử dụng, đẩy nhanh
tốc độ của ứng dụng.
Hình 1. 13 RelativeLayout
Tổng quan về hệ điều hành mobile Android 27
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
1.6.2.5. TableLayout
TableLayout thiết kế một bảng dạng lưới với số dòng, số cột nhất định được định
nghĩa bằng các TableRow và TableColunm. TableLayout thường được dùng để thiết
kế các giao diện bao gồm một danh sách các thành phần nhưng cố định, chẳng hạn
như, giao diện của một chiếc máy tính đơn giản hoặc một danh sách dữ liệu có
nhiều cột.
Hình 1. 14 TableLayout
1.6.2.6. ListView
ListView thể hiện một danh sách các thông tin theo từng dòng, mỗi dòng có thể
chứa một hay nhiều thông tin hiển thị trên các Widget tương ứng. Android dựng sẵn
một số kiểu ListView đơn giản dựa vào định nghĩa một dòng (item) của nó như:
simple_list_item_1, simple_list_item_2, simple_list_item_3,… Chúng ta hoàn toàn
có thể định nghĩa lại một “CustomItem” với các thành phần widget tùy ý để có thể
tạo ra những giao diện như ý muốn.
ListView chỉ là thành phần hiển thị thông tin, nó phụ thuộc vào nguồn dữ liệu gọi là
Data Source và cầu nối giữa nó với nguồn dữ liệu gọi là Adapter.
Tổng quan về hệ điều hành mobile Android 28
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
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: Adapter là một lớp trung gian giúp ánh xạ dữ liệu trong Data Source vào
đúng vị trí hiển thị trong ListView thông qua phương thức getView(). Khi một
Adapter được khởi tạo nó sẽ phải được chỉ định Data Source và ListItem mà nó hiển
thị. Sau đó adapter này sẽ được gán cho ListView thông qua phương thức
ListView.setAdapter(adaper). Mọi sự thay đổi dữ liệu trên Data Source sẽ được
adapter cập nhật lên ListView bằng phương thức notifyDataSetChanged().
Hình 1. 15 ListView
1.7. SQLITE
SQLite là một dạng CSDL tương tự như Mysql, PostgreSQL... Đặc điểm của
SQLite là gọn, nhẹ, đơn giản. Chương trình gồm 1 file duy nhất vỏn vẹn chưa đến
500kB, không cần cài đặt, không cần cấu hình hay khởi động mà có thể sử dụng
ngay. Dữ liệu database cũng được lưu ở một file duy nhất. Không có khái niệm
user, password hay quyền hạn trong SQLite database.
SQLite 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.
Google APIs 29
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Chương 2. GOOGLE APIs
Chương này giới thiệu một số API có liên quan đến các dịch vụ về bản đồ của
Google, với trọng tâm nghiên cứu tập trung vào việc tìm hiểu cách sử dụng các dịch
vụ này trên hệ điều hành mobile Android là chính. Lồng vào đó là nội dung giới
thiệu về JavaScript Object Notation (JSON), kiểu dữ liệu gọn nhẹ được sử dụng hầu
hết trong các kết quả trả về của Google APIs.
Nội dụng bao gồm:
- Google Maps API: sử dụng bản đồ Google Maps trên Android.
- JavaScript Object Notation (JSON): giới thiệu JSON và cấu trúc của JSON.
- Google Places Autocomplete API: tìm kiếm nhanh tên địa điểm dựa vào từ khóa.
- Google Places API: tìm kiếm địa điểm có giới hạn phạm vi tìm kiếm.
- Google Directions API: tìm đường đi, khoảng cách, thời gian giữa hai địa điểm.
2.1. Google Maps API
2.1.1. Giới thiệu
Google Maps là một dịch vụ và công nghệ bản đồ trực tuyến miễn phí được cung
cấp bởi công ty Google, hỗ trợ nhiều dịch vụ dựa vào bản đồ như Google Maps trên
web, Google Ride Finder, Google Transit, Google Places,… 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 các hàm dịch vụ Google
Maps API.
Google Maps cho phép thấy bản đồ đường sá, bản đồ vệ tinh, hướng dẫn đường đi
cho người đi bộ, xe hơi hoặc các phương tiện công cộng, và những địa điểm kinh
doanh trong các thành phố của nhiều quốc gia cũng như khắp nơi trên thế giới.
Google Maps API cho phép các nhà phát triển có thể tích hợp Google Maps vào
trang web hoặc ứng dụng của họ. Đây là một dịch vụ miễn phí và hiện không bị
chèn quảng cáo.
Google APIs 30
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Bằng cách sử dụng Google Maps API, bản đồ của Google có thể được nhúng vào
bất kỳ website nào mà vẫn đảm bảo dữ liệu của nó được che phủ. Mặc dù ban đầu
chỉ là một JavaScript API, nhưng các hàm dịch vụ Maps API đã ngày càng được mở
rộng bao gồm cả các API cho ứng dụng Adobe Flash, dịch vụ lấy ảnh bản đồ tĩnh,
dịch vụ web phục vụ cho địa lý, dịch vụ hướng dẫn đường đi, lái xe,…
Thành công của Google Maps API tạo nên những sự cạnh tranh trên cùng lĩnh vực
của các nhà cung cấp khác như: Yahoo! Maps API, Bing Maps Platform, MapQuest
Development Platform và OpenLayers.
Năm 2006, Google giới thiệu công nghệ mới được gọi là Google Maps cho Mobile,
với dự định có thể ứng dụng Google Map trên bất kỳ thiết bị di động có hỗ rợ nền
tảng Java nào. Nhiều tính năng trên web đã được cung cấp đầy đủ trên các ứng
dụng.
Android platform là một nền tảng hỗ trợ tối đa cho Google Maps, chúng ta có thể
nhúng nó vào ứng dụng của mình một cách dễ dàng và hiệu quả.
2.1.2. Sử dụng Google Maps API trên Android
a) Tạo ứng dụng sử dụng Google Maps API trên Android với Eclipse
Để tạo được ứng dụng sử dụng Google Maps API, bạn phải cài đặt gói GoogleAPIs
bằng cách sử dụng Android SDK and AVD Manager.
Google APIs 31
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Hình 2. 1 Cài đặt Google APIs trên Eclipse
Sau đó tạo project mới:
Hình 2. 2 Tạo project cho ứng dụng Google APIs
Google APIs 32
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
b) Đăng ký và lấy key Google Maps API
Để sử đụng dược Google Maps API trong ứng dụng của mình thì phải đăng ký một
key miễn phí từ Google Maps API.
 Các bước để đăng ký key từ Google Maps API
B1. Lấy MD5 fingerprint code.
- Xác định được file debug.keystore, đường dẫn thông thường là:
Bảng 2. 1 Đường dẫn file debug.keystore trên các hệ điều hành
Hệ điều hành Đường dẫn
Windows Vista &
Window7
C:Users<user>.androiddebug.keystore
Windows XP
C:Documents and
Settings<user>.androiddebug.keystore
OS X and Linux ~/.android/debug.keystore
- Nếu dùng Eclipse thì có thể vào Windows > Preferences > Android > Build
để lấy đường dẫn như bên dưới:
Hình 2. 3 Đường dẫn đến file debug.keystore
Google APIs 33
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
- Sau khi lấy được đường dẫn của debug.keystore. Mở cmd lên và chạy lệnh sau để
lấy MD5 fingerprint code:
keytool -list -alias androiddebugkey -keystore
<path_to_debug_keystore>.keystore -storepass android –
keypass android
 Lưu ý: keytool nằm trong bin của java. Nếu chưa thêm đường dẫn của bin vào
path trong Environment varialbles của Windows thì phải chuyển thư mục hiện
hành trên cmd tại thư mục bin của java.
- Kết quả sẽ cho ra dãy MD5 Certificate fingerprint. Bạn lưu lại dãy MD5 này.
B2. Lấy key Google Maps API
Vào đường dẫn sau : http://code.google.com/android/maps-api-signup.html
Điền vào mã MD5 fingerprint code và chọn Generate API key , hệ thống sẽ tự
đông sinh ra một API key. Đây chính là Google Maps API key mà ta đã đăng ký
thành công.
Hình 2. 4 Đăng ký Google Maps APIs
Google APIs 34
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
c) Nhúng bản đồ Google vào ứng dụng Android
B1. Khai báo AndroidManifest
Để sử dụng Google Maps API, phải khai báo trong file AndroidManifest.xml bằng
cách thêm hai phần tử <uses-library> và <user-permission> như sau:
<uses-library android:name="com.google.android.maps"/>
<uses-permission android:name="android.permission.INTERNET"/>
B2. Tạo layout hiển thị Map
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
android:id="@+id/mymap"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="031rbjQgtWLoC3N3Nv1bouVoK0HG5S-g3LuQ"
android:clickable="true"
/>
</RelativeLayout>
B3. Tạo class GoolgeMap extends MapActivity, overrides phương thức onCreate và
isRouteDisplayed
public class GoogleMap extends MapActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maplayout);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
Google APIs 35
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
2.2. JavaScript Object Notation (JSON)
JSON là định dạng dữ liệu được sử dụng hầu hết trong các kết quả trả về của các
dịch vụ do Google cung cấp, vì vậy cần phải hiểu được cấu trúc của JSON để thuận
lợi cho việc tìm hiểu các API sau này.
2.2.1. JSON là gì?
JSON (JavaScript Object Notation) là một dạng dữ liệu mở và nhẹ nhàng, được
thiết kế theo định dạng kiểu text để dễ dàng trao đổi và con người có thể đọc được.
Nó có nguồn gốc từ ngôn ngữ kịch bản JavaScript, thể hiện các cấu trúc dữ liệu đơn
giản và các mảng kết hợp, gọi chung là các đối tượng. Mặc dù có quan hệ với
JavaScript, nhưng JSON là một ngôn ngữ độc lập, có thể phân tích và chuyển đổi
sang hầu hết các ngôn ngữ kịch bản khác.
Định dạng JSON đầu tiên do Douglas Crockford định nghĩa và được miêu tả trong
RFC 4627. Tên của một file dữ liệu json có đuôi mở rộng là .json.
JSON thường được sử dụng cho các cấu trúc dữ liệu truyền qua mạng có thứ tự và
có cấu trúc, chủ yếu là truyền dữ liệu giữa máy chủ và các ứng dụng web, thay thế
cho XML. [4]
2.2.2. Cấu trúc của JSON
JSON được xây dựng trên 2 cấu trúc:
 Là tập hợp của các cặp tên và giá trị name-value, thay thế cho hầu hết các cấu
trúc ở các ngôn ngữ khác như: đối tượng (object), bảng ghi (record), cấu trúc
(struct), từ điển (dictionary), bảng băm (hash table), danh sách có khoá (keyed
list), hay mảng liên hợp (associative array).
 Là 1 mảng các giá trị đã được sắp xếp. Trong hầu hết các ngôn ngữ khác thì đây
chính là: 1 mảng (array), vector, danh sách (list) hay là 1 chuỗi (sequence).
Google APIs 36
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Đó là 2 cấu trúc dữ liệu rất phổ biến, hầu như tất cả các ngôn ngữ lập trình hiện đại
đều hổ trợ chúng theo một hình thức nào đó. Nhờ cấu trúc này mà đã tạo nên một
định dạng dữ liệu có thể dễ dàng và nhanh chóng được chuyển đổi bằng các ngôn
ngữ lập trình.
JSON có những dạng sau:
Đối tượng: một đối tượng là một tập không có thứ tự của các cặp tên và giá trị
(name:value). Một đối tượng bắt đầu bởi dấu mở ngoặc đơn “{“ và kết thúc với dấu
đóng ngoặc đơn “}”. Theo sau tên là dấu hai chấm “:” và các cặp “tên:giá trị” được
tách ra bởi dấu phẩy “,”.
Hình 2. 5 Object trong JSON
Ví dụ:
{
“ten”: “Nguyen Van A”,
“tuoi”: 21,
“gioitinh”: “Nam”
}
Mảng: một mảng là một tập hợp các giá trị đã được sắp xếp. Một mảng bắt đầu bởi
dấu mở ngoặc vuông “[“ và kết thúc với dấu đóng ngoặc vuông “]”. Các giá trị được
cách nhau bởi dấu phẩy “,”.
Hình 2. 6 Array trong JSON
Google APIs 37
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Ví dụ: Mảng các “sinhVien”
“sinhVien”:
[
{
“ten”: “Nguyen Van A”,
“tuoi”: 21,
“gioitinh”: “Nam”
},
{
“ten”: “Nguyen Thi B”,
“tuoi”: 20,
“gioitinh”: “Nu”
}
]
Giá trị: một giá trị có thể là một chuỗi (string) trong cặp dấu nháy kép “” hoặc một
số, hoặc một giá trị true hoặc false, hoặc giá trị null, hoặc một đối tượng (object),
hoặc một mảng (array). Những cấu trúc này có thể được lồng vào nhau.
Hình 2. 7 Value trong JSON
Chuỗi: một chuỗi (string) là một tập hợp của 0 hay nhiều ký tự Unicode, được bao
trong các dấu nháy kép ("), giống như là string trong C hay là Java. Chuỗi không
chứa các ký tự ““ và " đứng đơn độc, ta dùng dấu “” cùng với “b”, “f”, “n”, “r”,
Google APIs 38
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
“t”, “u” để biểu diễn các ý nghĩa đặc biệt, và muốn thể hiện các ký tự “” và " trong
chuỗi, ta thêm vào trước nó ký tự “”.
Hình 2. 8 String trong JSON
Số (number): một số giống một số trong C và Java, trừ định dạng bát phân và hexa
là không thể dùng.
Hình 2. 9 Number trong JSON
Google APIs 39
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
Bảng tóm tắt các kiểu dữ liệu trong JSON:
Bảng 2. 2 Các kiểu dữ liệu trong JSON
2.3. Google Places Autocomplete API
2.3.1. Giới thiệu
Google Places Autocomplete API là một dịch vụ web cung cấp bởi Google, giúp tự
động hoàn chỉnh từ khóa tìm kiếm bằng cách trả về danh sách các địa điểm kinh
doanh, địa chỉ,.. gần với từ khóa nhận được nhất.
Ví dụ: từ khóa gửi đến là: “New Y”, thì kết quả trả về sẽ là: “New York, NY,
USA”, “New York, NY, United States”, “The New Yorker, 8th Avenue, New York,
NY, United States”,… [5]
Google APIs 40
Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android
2.3.2. Sử dụng
- API Key:
Google Places Autocomplete API là một phần của Google Places API nên
sử dụng chung key và các điều khoản dịch vụ khác như Google Places API.
API key được quản lý và cung cấp bởi Google APIs console:
http://code.google.com/apis/console
- Yêu cầu về Logo:
Nếu ứng dụng hiển thị dữ liệu lấy được từ Places API mà không sử dụng
Google Map thì phải chèn vào logo “Powered by Goolge” kèm theo.
Logo được cung cấp tại:
http://code.google.com/apis/maps/documentation/places/images/powered-by-
google.zip
2.3.3. Request
Một yêu cầu của Places Autocomplete là một đường dẫn HTTP URL có dạng:
https://maps.googleapis.com/maps/api/place/autocomplete/output?parameters
Trong đó, output có thể có các giá trị:
 json cho biết kết quả trả về dạng JavaScript Object Notation (JSON).
 xml cho biết kết quả trả về dạng XML.
Parameters là các tham số được phân biệt nhau bởi dấu &. Bao gồm các tham số bắt
buộc và các tham số không bắt buộc:
Tham số bắt buộc:
 input – từ khóa tìm kiếm. Server sẽ trả về kết quả phù hợp nhất với từ khóa
này.
 sensor – cho biết yêu cầu được gửi có sử dụng thiết bị định vị để xác định ví
trí gửi yêu cầu không. Tham số này có thể có giá trị true hoặc false.
 key – API key của ứng dụng, đăng ký từ Google APIs Console.
Tham số không bắc buộc:
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem
Android Mang Dia Diem

More Related Content

Viewers also liked

How to become a Linguist
How to become a LinguistHow to become a Linguist
How to become a LinguistOECS110Wheeler
 
Shari Hughes Resume 2016-2
Shari Hughes Resume 2016-2Shari Hughes Resume 2016-2
Shari Hughes Resume 2016-2Shari Hughes
 
How To Get Unstuck - Don't Let Your Resistance Eclipse Your Brilliance!
How To Get Unstuck - Don't Let Your Resistance Eclipse Your Brilliance!How To Get Unstuck - Don't Let Your Resistance Eclipse Your Brilliance!
How To Get Unstuck - Don't Let Your Resistance Eclipse Your Brilliance!Davender Gupta
 
Running an erlang based messaging system on AWS
Running an erlang based messaging system on AWSRunning an erlang based messaging system on AWS
Running an erlang based messaging system on AWSLahav Savir
 
Gianluca Simonetta - Teorie e tecniche di comunicazione organizzativa
Gianluca Simonetta - Teorie e tecniche di comunicazione organizzativaGianluca Simonetta - Teorie e tecniche di comunicazione organizzativa
Gianluca Simonetta - Teorie e tecniche di comunicazione organizzativaCenter for Generative Communication
 
U-SQL Intro (SQLBits 2016)
U-SQL Intro (SQLBits 2016)U-SQL Intro (SQLBits 2016)
U-SQL Intro (SQLBits 2016)Michael Rys
 
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...Plesk
 
In it for the long haul - How Wooga boosts long-term retention
In it for the long haul - How Wooga boosts long-term retentionIn it for the long haul - How Wooga boosts long-term retention
In it for the long haul - How Wooga boosts long-term retentionWooga
 
選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲Herman Wu
 
Tìm đường trên di động (PhoneGap)
Tìm đường trên di động (PhoneGap)Tìm đường trên di động (PhoneGap)
Tìm đường trên di động (PhoneGap)Lương Bá Hợp
 

Viewers also liked (14)

How to become a Linguist
How to become a LinguistHow to become a Linguist
How to become a Linguist
 
Wordpress Tech Talk
Wordpress Tech Talk Wordpress Tech Talk
Wordpress Tech Talk
 
Shari Hughes Resume 2016-2
Shari Hughes Resume 2016-2Shari Hughes Resume 2016-2
Shari Hughes Resume 2016-2
 
BAR St.P
BAR St.PBAR St.P
BAR St.P
 
How To Get Unstuck - Don't Let Your Resistance Eclipse Your Brilliance!
How To Get Unstuck - Don't Let Your Resistance Eclipse Your Brilliance!How To Get Unstuck - Don't Let Your Resistance Eclipse Your Brilliance!
How To Get Unstuck - Don't Let Your Resistance Eclipse Your Brilliance!
 
Essence of the Company
Essence of the CompanyEssence of the Company
Essence of the Company
 
Running an erlang based messaging system on AWS
Running an erlang based messaging system on AWSRunning an erlang based messaging system on AWS
Running an erlang based messaging system on AWS
 
Multicast in OpenStack Tips
Multicast in OpenStack TipsMulticast in OpenStack Tips
Multicast in OpenStack Tips
 
Gianluca Simonetta - Teorie e tecniche di comunicazione organizzativa
Gianluca Simonetta - Teorie e tecniche di comunicazione organizzativaGianluca Simonetta - Teorie e tecniche di comunicazione organizzativa
Gianluca Simonetta - Teorie e tecniche di comunicazione organizzativa
 
U-SQL Intro (SQLBits 2016)
U-SQL Intro (SQLBits 2016)U-SQL Intro (SQLBits 2016)
U-SQL Intro (SQLBits 2016)
 
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
 
In it for the long haul - How Wooga boosts long-term retention
In it for the long haul - How Wooga boosts long-term retentionIn it for the long haul - How Wooga boosts long-term retention
In it for the long haul - How Wooga boosts long-term retention
 
選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲
 
Tìm đường trên di động (PhoneGap)
Tìm đường trên di động (PhoneGap)Tìm đường trên di động (PhoneGap)
Tìm đường trên di động (PhoneGap)
 

Similar to Android Mang Dia Diem

Tìm hiểu triển khai Android Appls trên Google play.pdf
Tìm hiểu triển khai Android Appls trên Google play.pdfTìm hiểu triển khai Android Appls trên Google play.pdf
Tìm hiểu triển khai Android Appls trên Google play.pdfMan_Ebook
 
Bao cao giua ky
Bao cao giua kyBao cao giua ky
Bao cao giua kyNhoxPO
 
Giải pháp nâng cao hiệu quả thu hút ứng viên tại Công Ty Cổ Phần Giao Nhận Kh...
Giải pháp nâng cao hiệu quả thu hút ứng viên tại Công Ty Cổ Phần Giao Nhận Kh...Giải pháp nâng cao hiệu quả thu hút ứng viên tại Công Ty Cổ Phần Giao Nhận Kh...
Giải pháp nâng cao hiệu quả thu hút ứng viên tại Công Ty Cổ Phần Giao Nhận Kh...nataliej4
 
Luận Văn Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...
Luận Văn  Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...Luận Văn  Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...
Luận Văn Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...Viết Thuê Luận Văn Luanvanpanda.com
 
Luận Văn Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...
Luận Văn  Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...Luận Văn  Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...
Luận Văn Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...Hỗ Trợ Viết Đề Tài luanvanpanda.com
 
Đề tài thực trạng sử dụng vốn lưu động tại công ty xây dựng, RẤT HAY, 2018
Đề tài  thực trạng sử dụng vốn lưu động tại công ty xây dựng, RẤT HAY, 2018Đề tài  thực trạng sử dụng vốn lưu động tại công ty xây dựng, RẤT HAY, 2018
Đề tài thực trạng sử dụng vốn lưu động tại công ty xây dựng, RẤT HAY, 2018Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Thực trạng sử dụng vốn lưu động tại công ty cổ phần xây dựng và kinh doanh th...
Thực trạng sử dụng vốn lưu động tại công ty cổ phần xây dựng và kinh doanh th...Thực trạng sử dụng vốn lưu động tại công ty cổ phần xây dựng và kinh doanh th...
Thực trạng sử dụng vốn lưu động tại công ty cổ phần xây dựng và kinh doanh th...https://www.facebook.com/garmentspace
 
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...Viết Thuê Luận Văn Luanvanpanda.com
 
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...Viết Thuê Luận Văn Luanvanpanda.com
 
Đo lường mức độ hài lòng của khách hàng về chất lượng dịch vụ tại Đại lý Ford...
Đo lường mức độ hài lòng của khách hàng về chất lượng dịch vụ tại Đại lý Ford...Đo lường mức độ hài lòng của khách hàng về chất lượng dịch vụ tại Đại lý Ford...
Đo lường mức độ hài lòng của khách hàng về chất lượng dịch vụ tại Đại lý Ford...HanaTiti
 
Những yếu tố ảnh hưởng đến giá trị cảm nhận và ý định mua đất nền dự án của K...
Những yếu tố ảnh hưởng đến giá trị cảm nhận và ý định mua đất nền dự án của K...Những yếu tố ảnh hưởng đến giá trị cảm nhận và ý định mua đất nền dự án của K...
Những yếu tố ảnh hưởng đến giá trị cảm nhận và ý định mua đất nền dự án của K...Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Hoàn thiện kiểm soát nội bộ hoạt động tín dụng tại Ngân hàng đầu tư và Phát t...
Hoàn thiện kiểm soát nội bộ hoạt động tín dụng tại Ngân hàng đầu tư và Phát t...Hoàn thiện kiểm soát nội bộ hoạt động tín dụng tại Ngân hàng đầu tư và Phát t...
Hoàn thiện kiểm soát nội bộ hoạt động tín dụng tại Ngân hàng đầu tư và Phát t...Hỗ Trợ Viết Đề Tài luanvanpanda.com
 
Luận Văn Mối Quan Hệ Giữa Đặc Điểm Tính Cách, Sự Hài Lòng Công Việc
Luận Văn Mối Quan Hệ Giữa Đặc Điểm Tính  Cách, Sự Hài Lòng Công ViệcLuận Văn Mối Quan Hệ Giữa Đặc Điểm Tính  Cách, Sự Hài Lòng Công Việc
Luận Văn Mối Quan Hệ Giữa Đặc Điểm Tính Cách, Sự Hài Lòng Công ViệcHỗ Trợ Viết Đề Tài luanvanpanda.com
 
Giải pháp hoàn thiện công tác quản trị nguồn nhân lực tại Công ty YCH - Protr...
Giải pháp hoàn thiện công tác quản trị nguồn nhân lực tại Công ty YCH - Protr...Giải pháp hoàn thiện công tác quản trị nguồn nhân lực tại Công ty YCH - Protr...
Giải pháp hoàn thiện công tác quản trị nguồn nhân lực tại Công ty YCH - Protr...NuioKila
 
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Rủi Ro Tín Dụng Của Các Ngân Hàng
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Rủi Ro Tín Dụng Của Các Ngân HàngLuận Văn Các Yếu Tố Ảnh Hưởng Đến Rủi Ro Tín Dụng Của Các Ngân Hàng
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Rủi Ro Tín Dụng Của Các Ngân HàngViết Thuê Luận Văn Luanvanpanda.com
 
Luận Văn Động Lực Làm Việc Của Nhân Viên tạii Bảo Hiểm Xã Hội
Luận Văn Động Lực Làm Việc Của Nhân Viên tạii Bảo Hiểm Xã HộiLuận Văn Động Lực Làm Việc Của Nhân Viên tạii Bảo Hiểm Xã Hội
Luận Văn Động Lực Làm Việc Của Nhân Viên tạii Bảo Hiểm Xã HộiViết Thuê Luận Văn Luanvanpanda.com
 
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...Hỗ Trợ Viết Đề Tài luanvanpanda.com
 

Similar to Android Mang Dia Diem (20)

Tìm hiểu triển khai Android Appls trên Google play.pdf
Tìm hiểu triển khai Android Appls trên Google play.pdfTìm hiểu triển khai Android Appls trên Google play.pdf
Tìm hiểu triển khai Android Appls trên Google play.pdf
 
Luận Văn Nâng Cao Động Lực Làm Việc Cho Nhân Viên Tại Mobifone
Luận Văn Nâng Cao Động Lực Làm Việc Cho Nhân Viên Tại MobifoneLuận Văn Nâng Cao Động Lực Làm Việc Cho Nhân Viên Tại Mobifone
Luận Văn Nâng Cao Động Lực Làm Việc Cho Nhân Viên Tại Mobifone
 
Bao cao giua ky
Bao cao giua kyBao cao giua ky
Bao cao giua ky
 
Giải pháp nâng cao hiệu quả thu hút ứng viên tại Công Ty Cổ Phần Giao Nhận Kh...
Giải pháp nâng cao hiệu quả thu hút ứng viên tại Công Ty Cổ Phần Giao Nhận Kh...Giải pháp nâng cao hiệu quả thu hút ứng viên tại Công Ty Cổ Phần Giao Nhận Kh...
Giải pháp nâng cao hiệu quả thu hút ứng viên tại Công Ty Cổ Phần Giao Nhận Kh...
 
Nghiên Cứu Phát Triển Năng Lực Tổng Thể Của Con Người Tại Doanh Nghiệp Nhỏ Và...
Nghiên Cứu Phát Triển Năng Lực Tổng Thể Của Con Người Tại Doanh Nghiệp Nhỏ Và...Nghiên Cứu Phát Triển Năng Lực Tổng Thể Của Con Người Tại Doanh Nghiệp Nhỏ Và...
Nghiên Cứu Phát Triển Năng Lực Tổng Thể Của Con Người Tại Doanh Nghiệp Nhỏ Và...
 
Luận Văn Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...
Luận Văn  Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...Luận Văn  Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...
Luận Văn Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...
 
Luận Văn Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...
Luận Văn  Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...Luận Văn  Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...
Luận Văn Tác Động Của Yếu Tố Đạo Đức Đến Ý Định Vi Phạm Bản Quyền Của Người ...
 
Đề tài thực trạng sử dụng vốn lưu động tại công ty xây dựng, RẤT HAY, 2018
Đề tài  thực trạng sử dụng vốn lưu động tại công ty xây dựng, RẤT HAY, 2018Đề tài  thực trạng sử dụng vốn lưu động tại công ty xây dựng, RẤT HAY, 2018
Đề tài thực trạng sử dụng vốn lưu động tại công ty xây dựng, RẤT HAY, 2018
 
Thực trạng sử dụng vốn lưu động tại công ty cổ phần xây dựng và kinh doanh th...
Thực trạng sử dụng vốn lưu động tại công ty cổ phần xây dựng và kinh doanh th...Thực trạng sử dụng vốn lưu động tại công ty cổ phần xây dựng và kinh doanh th...
Thực trạng sử dụng vốn lưu động tại công ty cổ phần xây dựng và kinh doanh th...
 
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
 
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
 
Đo lường mức độ hài lòng của khách hàng về chất lượng dịch vụ tại Đại lý Ford...
Đo lường mức độ hài lòng của khách hàng về chất lượng dịch vụ tại Đại lý Ford...Đo lường mức độ hài lòng của khách hàng về chất lượng dịch vụ tại Đại lý Ford...
Đo lường mức độ hài lòng của khách hàng về chất lượng dịch vụ tại Đại lý Ford...
 
Tìm hiểu và triển khai Android Apps trên Google Play
Tìm hiểu và triển khai Android Apps trên Google PlayTìm hiểu và triển khai Android Apps trên Google Play
Tìm hiểu và triển khai Android Apps trên Google Play
 
Những yếu tố ảnh hưởng đến giá trị cảm nhận và ý định mua đất nền dự án của K...
Những yếu tố ảnh hưởng đến giá trị cảm nhận và ý định mua đất nền dự án của K...Những yếu tố ảnh hưởng đến giá trị cảm nhận và ý định mua đất nền dự án của K...
Những yếu tố ảnh hưởng đến giá trị cảm nhận và ý định mua đất nền dự án của K...
 
Hoàn thiện kiểm soát nội bộ hoạt động tín dụng tại Ngân hàng đầu tư và Phát t...
Hoàn thiện kiểm soát nội bộ hoạt động tín dụng tại Ngân hàng đầu tư và Phát t...Hoàn thiện kiểm soát nội bộ hoạt động tín dụng tại Ngân hàng đầu tư và Phát t...
Hoàn thiện kiểm soát nội bộ hoạt động tín dụng tại Ngân hàng đầu tư và Phát t...
 
Luận Văn Mối Quan Hệ Giữa Đặc Điểm Tính Cách, Sự Hài Lòng Công Việc
Luận Văn Mối Quan Hệ Giữa Đặc Điểm Tính  Cách, Sự Hài Lòng Công ViệcLuận Văn Mối Quan Hệ Giữa Đặc Điểm Tính  Cách, Sự Hài Lòng Công Việc
Luận Văn Mối Quan Hệ Giữa Đặc Điểm Tính Cách, Sự Hài Lòng Công Việc
 
Giải pháp hoàn thiện công tác quản trị nguồn nhân lực tại Công ty YCH - Protr...
Giải pháp hoàn thiện công tác quản trị nguồn nhân lực tại Công ty YCH - Protr...Giải pháp hoàn thiện công tác quản trị nguồn nhân lực tại Công ty YCH - Protr...
Giải pháp hoàn thiện công tác quản trị nguồn nhân lực tại Công ty YCH - Protr...
 
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Rủi Ro Tín Dụng Của Các Ngân Hàng
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Rủi Ro Tín Dụng Của Các Ngân HàngLuận Văn Các Yếu Tố Ảnh Hưởng Đến Rủi Ro Tín Dụng Của Các Ngân Hàng
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Rủi Ro Tín Dụng Của Các Ngân Hàng
 
Luận Văn Động Lực Làm Việc Của Nhân Viên tạii Bảo Hiểm Xã Hội
Luận Văn Động Lực Làm Việc Của Nhân Viên tạii Bảo Hiểm Xã HộiLuận Văn Động Lực Làm Việc Của Nhân Viên tạii Bảo Hiểm Xã Hội
Luận Văn Động Lực Làm Việc Của Nhân Viên tạii Bảo Hiểm Xã Hội
 
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
Luận Văn Mối Quan Hệ Giữa Trải Nghiệm Dòng Chảy, Thái Độ Và Ý Định Mua Của Ng...
 

Recently uploaded

Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxendkay31
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdftohoanggiabao81
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếHệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếngTonH1
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...Nguyen Thanh Tu Collection
 
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocBai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocVnPhan58
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxnhungdt08102004
 
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Học viện Kstudy
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...Nguyen Thanh Tu Collection
 
Ma trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếMa trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếngTonH1
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdf
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếHệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
 
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocBai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
 
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
 
Ma trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếMa trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tế
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 

Android Mang Dia Diem

  • 1. NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN i Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... Ngày.........Tháng..........Năm............ Giáo Viên Hướng Dẫn (Ký, ghi rõ họ và tên)
  • 2. NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ii Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... Ngày.........Tháng..........Năm............ Giáo Viên Phản Biện (Ký, ghi rõ họ và tên)
  • 3. LỜI CẢM ƠN iii Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android LỜI CẢM ƠN Chúng em xin chân thành cám ơn khoa Công nghệ thông tin, Bộ môn Công nghệ phần mềm, trường Đại học Sư Phạm Kỹ Thuật Tp.HCM đã tạo điều kiện thuận lợi cho chúng em thực hiện đề tài này. Chúng em cũng xin được gửi lời cảm ơn chân thành nhất đến thầy Nguyễn Minh Đạo, người đã tận tình chỉ bảo và hướng dẫn em thực hiện đề tài này. Bên cạnh đó, chúng em xin gửi lời cảm ơn đến các thầy cô giáo, những người đã giảng dạy, tạo điều kiện cho em tích lũy được những kiến thức quý báu trong những năm học qua. Chúng em xin gửi lời biết ơn sâu sắc đến cha mẹ, gia đình, bạn bè, những người đã luôn bên cạnh, chăm sóc, ủng hộ, động viên chúng em trong suốt thời gian học tập và nghiên cứu. Dù đã cố gắng hoàn thành đề tài tiểu luận đúng yêu cầu, nhưng do thời gian hạn hẹp và khả năng còn hạn chế nên chắc chắn sẽ có những thiếu sót không tránh khỏi. Chúng em mọng nhận được sự thông cảm và tận tình chỉ bảo của các thầy cô và các bạn. TP. Hồ Chí Minh, tháng 01 năm 2012 Nhóm sinh viên thực hiện Huỳnh Công Danh Phạm Quốc Hùng
  • 4. MỤC LỤC iv Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android MỤC LỤC NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ..................................................... i NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ....................................................... ii LỜI CẢM ƠN.......................................................................................................... iii MỤC LỤC................................................................................................................ iv MỤC LỤC HÌNH ẢNH ......................................................................................... vii MỤC LỤC BẢNG .....................................................................................................x CÁC KÝ HIỆU VÀ VIẾT TẮT............................................................................ xii GIỚI THIỆU ĐỀ TÀI........................................................................................... xiii Phần A MỞ ĐẦU ......................................................................................................1 1. THÁCH THỨC NGHIÊN CỨU .......................................................................2 2. MỤC ĐÍCH NGHIÊN CỨU..............................................................................4 3. ĐỐI TƯỢNG NGHIÊN CỨU ...........................................................................5 4. PHẠM VI NGHIÊN CỨU.................................................................................5 Phần B NỘI DUNG...................................................................................................6 Chương 1. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH MOBILE ANDROID ..............7 1.1. Lịch sử hệ điều hành mobile Android.........................................................7 1.2. Máy ảo Dalvik.............................................................................................9 1.3. Kiến trúc của Android...............................................................................10 1.3.1. Tầng ứng dụng......................................................................................10 1.3.2. Tầng Application Framework...............................................................11 1.3.3. Library và Android Runtime ................................................................12 1.3.4. Linnux Kernel.......................................................................................13 1.4. Ứng dụng Android ....................................................................................13 1.4.1. Các thành phần của ứng dụng Android ................................................13 1.4.2. Vòng đời của ứng dụng Android ..........................................................14 1.4.3. Chu kỳ của một Activity.......................................................................15 1.4.4. Intent .....................................................................................................17 1.4.5. Content Provider và Uri........................................................................19
  • 5. MỤC LỤC v Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1.4.6. Background Service..............................................................................21 1.5. Android Emulator......................................................................................23 1.6. Các thành phần giao diện trong Android ..................................................24 1.6.1. View......................................................................................................24 1.6.2. ViewGroup............................................................................................24 1.7. SQLITE.....................................................................................................28 Chương 2. GOOGLE APIs.....................................................................................29 2.1. Google Maps API......................................................................................29 2.1.1. Giới thiệu ..............................................................................................29 2.1.2. Sử dụng Google Maps API trên Android .............................................30 2.2. JavaScript Object Notation (JSON) ..........................................................35 2.2.1. JSON là gì? ...........................................................................................35 2.2.2. Cấu trúc của JSON................................................................................35 2.3. Google Places Autocomplete API.............................................................39 2.3.1. Giới thiệu ..............................................................................................39 2.3.2. Sử dụng.................................................................................................40 2.3.3. Request..................................................................................................40 2.3.4. Response ...............................................................................................41 2.4. Google Places API ....................................................................................42 2.4.1. Giới thiệu ..............................................................................................42 2.4.2. Sử dụng.................................................................................................42 2.4.3. Place Searches.......................................................................................43 2.4.4. Place Details .........................................................................................46 2.5. Google Directions API..............................................................................48 2.5.1. Giới thiệu ..............................................................................................48 2.5.2. Direction Request .................................................................................48 2.5.3. Direction Response...............................................................................49 Chương 3. RESTFUL WEB SERVICES..............................................................55 3.1. Định nghĩa REST ......................................................................................55 3.2. Kiến trúc dịch vụ web RESTful................................................................56
  • 6. MỤC LỤC vi Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 3.2.1. Tài nguyên ............................................................................................56 3.2.2. Bộ định danh tài nguyên đồng bộ - URI...............................................57 3.2.3. Đồng bộ giao diện thông qua yêu cầu HTTP .......................................58 Chương 4. CHƯƠNG TRÌNH MINH HỌA.........................................................64 4.1. QuickPlaces RESTful Web Services ........................................................64 4.1.1. Giới thiệu ..............................................................................................64 4.1.2. Tài nguyên ............................................................................................64 4.1.3. Dịch vụ..................................................................................................65 4.1.4. Thiết kế dữ liệu.....................................................................................78 4.2. Ứng dụng tìm kiếm và chia sẻ địa điểm trên Android – Place360 ...........81 4.2.1. Giới thiệu ..............................................................................................81 4.2.2. Chức năng.............................................................................................83 4.2.3. Sơ đồ lớp...............................................................................................92 4.2.4. Thiết kế dữ liệu.....................................................................................95 4.2.5. Thiết kế giao diện .................................................................................96 4.2.6. Cấu hình cài đặt ..................................................................................117 Phần C KẾT LUẬN ..............................................................................................118 1. Kết quả đạt được ............................................................................................119 2. Hướng phát triển............................................................................................121 Phần D PHỤ LỤC .................................................................................................123 1. TÀI LIỆU THAM KHẢO .............................................................................124 2. HƯỚNG DẪN CÀI ĐẶT...............................................................................125
  • 7. MỤC LỤC HÌNH ẢNH vii Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android MỤC LỤC HÌNH ẢNH Chương 1 Hình 1. 1 Các phiên bản hệ điều hành Android ....................................................................8 Hình 1. 2 Kiếm trúc hệ điều hành Android..........................................................................10 Hình 1. 3 Chu kỳ sống của ứng dụng Android.....................................................................14 Hình 1. 4 Activity stack........................................................................................................15 Hình 1. 5 Chu kỳ sống của Activity......................................................................................15 Hình 1. 6 Intent ....................................................................................................................18 Hình 1. 7 Các Action được dựng sẵn...................................................................................19 Hình 1. 8 Chu trình sống của một Service...........................................................................22 Hình 1. 9 Emulator ..............................................................................................................23 Hình 1. 10 Các thành phần giao diện..................................................................................24 Hình 1. 11 Bố trí các widget sử dụng LinearLayout ...........................................................25 Hình 1. 12 FrameLayout......................................................................................................25 Hình 1. 13 RelativeLayout ...................................................................................................26 Hình 1. 14 TableLayout .......................................................................................................27 Hình 1. 15 ListView .............................................................................................................28 Chương 2 Hình 2. 1 Cài đặt Google APIs trên Eclipse........................................................................31 Hình 2. 2 Tạo project cho ứng dụng Google APIs ..............................................................31 Hình 2. 3 Đường dẫn đến file debug.keystore .....................................................................32 Hình 2. 4 Đăng ký Google Maps APIs.................................................................................33 Hình 2. 5 Object trong JSON...............................................................................................36 Hình 2. 6 Array trong JSON ................................................................................................36 Hình 2. 7 Value trong JSON ................................................................................................37 Hình 2. 8 String trong JSON................................................................................................38 Hình 2. 9 Number trong JSON.............................................................................................38 Hình 2. 10 Bản đồ minh họa Google Direction...................................................................50 Hình 2. 11 Hiển thị dữ liệu JSON dạng cây của Google Direction API .............................51
  • 8. MỤC LỤC HÌNH ẢNH viii Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Chương 3 Hình 3. 1 Lược đồ tuần tự của một yêu cầu GET................................................................60 Hình 3. 2 Lược đồ tuần tự của một yêu cầu POST..............................................................61 Hình 3. 3 Lược đồ tuần tự của một yêu cầu PUT................................................................62 Hình 3. 4 Lược đồ tuần tự của một yêu cầu DELETE.........................................................63 Chương 4 Hình 4. 1 Sơ đồ Use-case Dịch vụ người dùng....................................................................65 Hình 4. 2Sơ đồ Use-case Dịch vụ địa điểm .........................................................................70 Hình 4. 3 Sơ đồ Use-case Dịch vụ bình luận.......................................................................73 Hình 4. 4 Sơ đồ Use-case Dịch vụ thông báo......................................................................75 Hình 4. 5 Sơ đồ Use-case Dịch vụ bạn bè ...........................................................................76 Hình 4. 6 Sơ đồ dữ liệu Web Services..................................................................................78 Hình 4. 7 Sơ đồ Use-case ứng dụng tìm kiếm và chia sẻ địa điểm trên Android ................83 Hình 4. 8 Sơ đồ lớp phần liên lạc với Server.......................................................................92 Hình 4. 9 Sơ đồ lớp các danh sách ......................................................................................93 Hình 4. 10 Sơ độc lớp phần truy xuất Database..................................................................94 Hình 4. 11 Thiết kế dữ liệu - Sơ đồ Logic............................................................................95 Hình 4. 12 Giao diện chính..................................................................................................96 Hình 4. 13 Giao diện tìm kiếm địa điểm..............................................................................97 Hình 4. 14 Giao diện quản lý từ khóa tìm kiếm...................................................................98 Hình 4. 15 Giao diện tìm và thay đổi vị trí hiện tại.............................................................99 Hình 4. 16 Nhập từ khóa tìm kiếm.....................................................................................100 Hình 4. 17 Giao diện kết quả tìm kiếm ..............................................................................101 Hình 4. 18 Chi tiết địa điểm...............................................................................................102 Hình 4. 19 Giao diện bản đồ kết quả tìm kiếm ..................................................................103 Hình 4. 20 Giao diện dẫn đường .......................................................................................104 Hình 4. 21 Giao diện Favourite.........................................................................................105 Hình 4. 22 Giao diện tùy chỉnh tìm kiếm ...........................................................................106 Hình 4. 23 Giao diện đăng ký............................................................................................107 Hình 4. 24 Giao diện đăng nhập........................................................................................108
  • 9. MỤC LỤC HÌNH ẢNH ix Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Hình 4. 25 Thông tin cá nhân ............................................................................................109 Hình 4. 26 Chỉnh sửa thông tin cá nhân............................................................................110 Hình 4. 27 Chia sẻ địa điểm ..............................................................................................111 Hình 4. 28 Danh sách các địa điểm được chia sẻ .............................................................112 Hình 4. 29 Giao diện bình luận .........................................................................................113 Hình 4. 30 Những người thích một địa điểm .....................................................................114 Hình 4. 31 Bản đồ các địa điểm được chia sẻ ...................................................................115 Hình 4. 32 Danh sách bạn bè ............................................................................................116
  • 10. MỤC LỤC BẢNG x Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android MỤC LỤC BẢNG Bảng 1. 1 Các thuộc tính của đối tượng Intent....................................................................18 Bảng 2. 1 Đường dẫn file debug.keystore trên các hệ điều hành........................................32 Bảng 2. 2 Các kiểu dữ liệu trong JSON...............................................................................39 Bảng 2. 3 Response của Place Search.................................................................................45 Bảng 2. 4 Response của Place Details ................................................................................47 Bảng 2. 5 Các tham số trong Google Directions API request.............................................48 Bảng 2. 6 Các thuộc tính trong root của Directions Response ...........................................51 Bảng 2. 7 Các thuộc tính trong routes của Directions Response........................................52 Bảng 2. 8 Các thuộc tính trong legs của Directions Response............................................53 Bảng 2. 9 Các thuộc tính trong steps của Directions Response..........................................53 Bảng 3. 1 Các hành động CRUD và phương thức HTTP tương ứng..................................59 Bảng 4. 1 Các tham số trong request của dịch vụ Đăng ký.................................................66 Bảng 4. 2 Các tham số trong request của dịch vụ Đăng nhập ............................................66 Bảng 4. 3 Các tham số trong request của dịch vụ Đăng xuất .............................................67 Bảng 4. 4 Các tham số trong request của dịch vụ Lấy thông tin cá nhân...........................67 Bảng 4. 5 Các tham số trong request của dịch vụ cập nhật thông tin cá nhân ...................68 Bảng 4. 6 Các tham số trong request của dịch vụ Like .......................................................68 Bảng 4. 7 Các tham số trong request của dịch vụ Unlike ...................................................69 Bảng 4. 8 Các tham số trong request của dịch vụ lấy danh sách bạn bè ............................69 Bảng 4. 9 Các tham số trong request của dịch vụ Feeds.....................................................70 Bảng 4. 10 Các tham số trong request của dịch vụ Thông tin địa điểm..............................71 Bảng 4. 11 Các tham số trong request của dịch vụ chia sẻ địa điểm..................................71 Bảng 4. 12 Các tham số trong request của dịch vụ Xóa địa điểm......................................72 Bảng 4. 13 Các tham số trong request của dịch vụ Danh sách người thích .......................72 Bảng 4. 14 Các tham số trong request của dịch vụ Lấy danh sách bình luận....................73 Bảng 4. 15 Các tham số trong request của dịch vụ Bình luận ............................................74 Bảng 4. 16 Các tham số trong request của dịch vụ Xóa bình luận .....................................74 Bảng 4. 17 Các tham số trong request của dịch vụ nhận thông báo...................................75 Bảng 4. 18 Các tham số trong request của dịch vụ cập nhật thông báo ............................76 Bảng 4. 19 Các tham số trong request của dịch vụ kết bạn ...............................................77
  • 11. MỤC LỤC BẢNG xi Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Bảng 4. 20 Các tham số trong request của dịch vụ trả lời yêu cầu kết bạn.......................77 Bảng 4. 21 Các tham số trong request của dịch vụ Unfriend.............................................78 Bảng 4. 22 Bảng User.........................................................................................................79 Bảng 4. 23 Bảng Place ........................................................................................................79 Bảng 4. 24 Bảng Comment ..................................................................................................80 Bảng 4. 25 Bảng Likes ........................................................................................................80 Bảng 4. 26 Bảng Notification ..............................................................................................80 Bảng 4. 27 Bảng Friends ....................................................................................................81 Bảng 4. 28 Bảng Photo.......................................................................................................81 Bảng 4. 29 Danh sách các chức năng của ứng dụng Place360 ..........................................84 Bảng 4. 30 Bảng Catalog.....................................................................................................95 Bảng 4. 31 Bảng Favourite..................................................................................................95 Bảng 4. 32 Các thành phần trên giao diện chính ................................................................96 Bảng 4. 33 Các thành phần trên giao diện tìm kiếm địa điểm ............................................97 Bảng 4. 34 Các thành phần trên giao diện quản lý từ khóa tìm kiếm .................................99 Bảng 4. 35 Các thành phần trên giao diện thay đổi vị trí hiện tại ....................................100 Bảng 4. 36 Các thành phần trên giao diện tìm kiếm nhanh ..............................................100 Bảng 4. 37 Các thành phần trên giao diện kết quả tìm kiếm.............................................101 Bảng 4. 38 Các thành phần trên giao diện chi tiết địa điểm.............................................102 Bảng 4. 39 Các thành phần trên giao diện chi tiết địa điểm.............................................103 Bảng 4. 40 Các thành phần của giao diện dẫn đường ......................................................105 Bảng 4. 41 Các thành phần của giao diện favourite .........................................................106 Bảng 4. 42 Các thành phần của giao diện tùy chỉnh tìm kiếm ..........................................106 Bảng 4. 43 Các thành phần của giao diện đăng ký ...........................................................107 Bảng 4. 44 Các thành phần của giao diện đăng nhập.......................................................108 Bảng 4. 45 Các thành phần của giao diện Thông tin cá nhân .........................................109 Bảng 4. 46 Các thành phần của giao diện chỉnh sửa thông tin cá nhân..........................110 Bảng 4. 47 Các thành phần của giao diện chia sẻ địa điểm.............................................111 Bảng 4. 48 Các thành phần của giao diện Feeds ............................................................112 Bảng 4. 49 Các thành phần của giao diện bình luận .......................................................114 Bảng 4. 50 Các thành phần của giao diện những người đã thích....................................115 Bảng 4. 51 Các thành phần của giao diện bản đồ địa điểm chia sẻ.................................116
  • 12. CÁC KÝ HIỆU VÀ VIẾT TẮT xii Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android CÁC KÝ HIỆU VÀ VIẾT TẮT Ký hiệu, viết tắt và thuật ngữ Giải nghĩa SDK Software Development Kit Soft-keyboard Bàn phím ảo trong điện thoại SD Card Bộ nhớ ngoài hay thẻ nhớ của điện thoại VM Visual Machine (Máy ảo) Android Emulator Thiết bị giả lập điện thoại Android để chạy các ứng dụng. URI Uniform Resource Identifier Trong Android là đường dẫn chỉ đến các dữ liệu trong hệ thống Android API Application Programming Interface KML Một định dạng file dùng để biểu diễn dữ liệu dạng địa lý cho một trình hiển thị bản đồ trái đất (như Google Earth, Google Maps, Google Maps cho mobile). LatLng Lat (latitude) và Lng (longitude) - vĩ độ và kinh độ của một điểm trên bản đồ, được định nghĩa thành một kiểu dữ liệu trong phần cài đặt của nhóm nghiên cứu. Request Yêu cầu được gửi đến máy chủ (dịch vụ web) Response Kết quả trả về của máy chủ Parameter Tham số, cụ thể trong tài liệu là các tham số trong Request API Key Mã khóa mà Google cung cấp cho người dùng muốn sử dụng các dịch vụ web của họ, để có được mã khóa này phải đăng ký trên trang Google APIs Console.
  • 13. GIỚI THIỆU ĐỀ TÀI xiii Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android GIỚI THIỆU ĐỀ TÀI Khoa học công nghệ hiện nay ngày càng phát triển không ngừng, máy móc ngày càng thông minh và trở nên thân thiết hơn với con người. Tiêu biểu nhất là chiếc điện thoại di động, không dừng lại ở chức năng chủ yếu của nó là nghe và gọi điện, chiếc điện thoại di động hiện nay ngày càng hiện đại và thông minh hơn, giúp ích nhiều hơn cho cuộc sống, cho công việc của con người. Để làm được những điều này, ngoài việc được trang bị những phần cứng tinh vi nhất, những chiếc điện thoại di động cần phải được cài đặt những phần mềm, ứng dụng thông minh và hiệu quả nhất mới có thể phục vụ tốt nhất cho nhu cầu của con người. Vì vậy, một chiếc điện thoại di động tốt không chỉ là một chiếc điện thoại có cấu hình tốt, mà còn phải được chạy trên một hệ điều hành tốt, hệ điều hành ấy ngoài việc hoạt động ổn định trên cấu hình phần cứng còn phải cung cấp cho các nhà phát triển một giao diện lập trình hiệu quả và thuận lợi nhất, nhằm giúp phát triển những ứng dụng ngày càng thiết thực và gần gũi hơn với con người. Một số hệ điều hành hiện nay như: Symbian, Windows Mobile, iOS… tuy đã có lịch sử ra đời lâu nhưng vẫn chưa là những hệ điều hành hỗ trợ tốt nhất cho các nhà phát triển. Symbian với việc cấu hình để lập trình khó khăn và phải dùng ngôn ngữ C/C++ rất không thuận tiện, Windows Mobile của Microsoft hoàn toàn đóng với người dùng, iOS của Apple thì việc có được môi trường lập trình và phân phối ứng dụng lại mất nhiều chi phí, và lại chỉ có thể chạy trên phần cứng của Apple. Chính vì thế, hệ điều hành mobile Android do hãng Google phát triển là một hề điều hành mã nguồn mở trên nền tản Linux, lấy Java làm ngôn ngữ lập trình ứng dụng chủ yếu, tuy là hệ điều hành còn non trẻ nhưng đã thể hiện một lợi thế mà các hệ điều hành trước không thể nào sánh được. Một hệ điều hành có thể tùy biến dễ dàng, chạy được trên rất nhiều nền tản phần cứng, đặc biệt lại cung cấp một bộ công cụ lập trình hoàn toàn miễn phí là Android SDK thì việc phát triển và chiếm lĩnh thị trường là điều hoàn toàn dễ dàng và hiện nay cũng đã trở thành hiện thực.
  • 14. GIỚI THIỆU ĐỀ TÀI xiv Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Đối với xã hội như ở nước Việt Nam ta, cuộc sống cũng ngày càng phát triển kéo theo nhu cầu giao thông, đi lại, du lịch của người dân ngày càng cao, đòi hỏi phải xác định rõ ràng thông tin những điểm đến, đường đi sao cho thật hợp lý nhằm tiết kiệm thời gian và giảm chi phí di chuyển. Thêm vào đó tính chia sẻ cộng đồng thông qua môi trường internet hiện nay đang dần trở nên phổ biến, vì thế nếu được chia sẻ cho bạn bè những nơi hấp dẫn mình đã đến là một điều đang được nhiều người mong chờ. Chiếc điện thoại di động 10 năm trước đối với người dân Việt Nam có thể là một điều xa xỉ, nhưng hiện nay nó đã trở nên quá gần gũi với hầu hết mọi người, và còn hơn thế đó còn là những chiếc điện thoại hiện đại và thông minh nhất. Vì vậy, chiếc điện thoại di động hoàn toàn có thể giải quyết được những vấn đề xã hội nêu trên, điều còn lại là cần có một ứng dụng thông minh để làm được điều đó. Hiểu được các vấn đề cấp thiêt đó, nhóm nghiên cứu quyết định chọn đề tài “Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android”. Đề tài được giải quyết chủ yếu dựa vào dịch vụ Google Maps, công nghệ RESTful Web Services 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. RESTful Web Services là một công nghệ cung cấp những dịch vụ web nhanh chóng và hiệu quả nhất. Android cũng là hệ điều hành mã nguồn mở của Google và đang chiếm lĩnh thị trường di động, có thể cài đặt trên nhiều thiết bị, có các giao diện lập trình tích hợp với dịch vụ Google Maps. Việc kết hợp Google Maps, RESTful Web Services và hệ điều hành Android hứa hẹn sẽ đem lại một sản phẩm hoàn hảo nhất cho người dùng trong việc tìm kiếm và chia sẻ địa điểm. Nội dung đề tài gồm có 4 chương:  Chương 1: Tổng quan về hệ điều hành mobile Android  Chương 2: Google APIs  Chương 3: RESTful Web Services  Chương 4: Chương trình minh họa
  • 15. Phần Mở Đầu 1 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Phần A MỞ ĐẦU
  • 16. Phần Mở Đầu 2 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1. THÁCH THỨC NGHIÊN CỨU Ngày nay, khi khoa học công nghệ ngày càng phát triển, máy móc cũng ngày càng trở nên gần gũi với con người hơn. Đặc biệt là chiếc điện thoại di động dường như là vật dụng không thể thiếu đối với mỗi người. Không ngừng ở chức năng đơn giản là làm phương tiện liên lạc, chiếc điện thoại di động hiện nay còn là những chiếc điện thoại thông minh, hiện đại và tinh vi, làm được rất nhiều việc khác phục vụ cho nhu cầu công việc cũng như giải trí của con người. Để cho một chiếc điện thoại di động càng thông minh hơn, thì cái quyết định sự thông minh đó chính là hệ điều hành. Hệ điều hành quyết định toàn bộ thành phần giao diện và quản lý tất cả các hoạt động, các ứng dụng chạy trên điện thoại. Và đến nay, các hệ điều hành di động ra đời sớm như: Symbian, Windows Phone, iOS,… đã làm nên rất nhiều điều kỳ diệu trên một chiếc điện thoại di động. Tuy nhiên, trên thị trường hiện nay, hệ điều hành được cài đặt trên số điện thoại di động nhiều nhất không phải là một trong những hệ điều hành lâu đời trên, mà đó là một cái tên khác, một người em sinh sau đẻ muộn – hệ điều hành Android. Tại sao một hệ điều hành non trẻ lại chiếm được thi phần cao đến như vậy? Nó có những điểm gì hay và đặc biệt hơn? Nó hỗ trợ các nhà phát triển phần mềm đến mức nào? Bên cạnh đó, mạng xã hội hiện nay đang là một hình thức được rất nhiều người sử dụng trên Internet. Tuy nhiên, một mạng xã hội địa điểm chuyên biệt về vấn đề tìm kiếm và chia sẻ các địa điểm giữa những người sử dụng Internet, xét riêng ở Việt Nam tuy đã có nhưng chưa thực sự hiệu quả, thu hút nhiều người sử dụng. Khảo sát hiện trạng về mạng xã hội địa điểm: Hiện nay trên thế giới, mô hình mạng xã hội dựa trên địa điểm (location based social networking) không mới. Foursquare có thể xem là hình mẫu thành công đầu tiên của hình thức mạng xã hội này. Foursquare do Dennis Crowley và Naveen Selvadurai phát triển từ năm 2009, đến năm 2010, sản phẩm này đã có sự phát triển
  • 17. Phần Mở Đầu 3 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android ngoạn mục và cũng được cộng đồng mạng Việt Nam đón nhận. Tuy nhiên, mạng xã hội này thiên về tính location-based (định vị trên điện thoại di động) và mang tính chất giải trí hơn là tính kết nối. Mạng xã hội này giống như một trò chơi khi mà người chơi mải mê “check in” càng nhiều địa điểm ở nhiều nơi để giành về những danh hiệu, huân chương ảo để thể hiện “thương hiệu cá nhân”. Trong khi đó, sự kết nối có giá trị thật của những người dùng, những chia sẻ mà họ muốn dành cho nhau lại không được thể hiện rõ ràng. Thêm vào đó, việc phải cung cấp quá nhiều thông tin cá nhân khi gia nhập mạng xã hội này khiến cho nhiều người dùng lo ngại những thông tin của họ sẽ khai thác cho các hoạt động tiếp thị. [1] Ở Việt Nam, mạng xã hội bản đồ được nhắc đến lần đầu tiên khoảng đầu năm 2009, khi ứng dụng KunKun của hai sinh viên khoa Công nghệ thông tin, đại học Bách Khoa TP.HCM giành giải nhất cuộc thi Mùa hè sáng tạo (tháng 3/2009) và được Viettel đầu tư phát triển. Tuy nhiên cho đến nay, sau gần 3 năm triển khai và hoạt động, mạng xã hội Kunkun vẫn chưa có sự nổi trội, số lượng người dùng ít ỏi và bị giới hạn chỉ những thuê bao của Viettel mới có thể sử dụng. Hiện tại mạng xã hội này cũng đã có trên Android, tuy nhiên với giao diện chưa được bắt mắt và các chức năng chưa thật sự tiện lợi cho người sử dụng như: bản đồ chỉ giới hạn ở lãnh thổ Việt Nam, không hiển thị được nhiều địa điểm được chia sẻ một lúc trên bản đồ.. Vì vậy, hiện nay KunKun vẫn chưa gây được sự chú ý trên thị trường mạng xã hội địa điểm ở Việt Nam. Ngoài ra, hai mạng xã hội dựa trên địa điểm khác có xuất xứ “nội địa” là goLocation của mạng xã hội Goolnline.vn và Yoo! (yoo.vn) do Công ty Cổ phần Công nghệ trẻ (NES) phát triển. Tuy nhiên, goLocation chỉ có phiên bản trên Web, khiến cho việc chia sẻ và cập nhật địa điểm ngay lập tức khi người dùng đang ở ngoài trời khó thực hiện được, vấn đề xác định chính xác vị trí cũng khó khăn khi không thể sử dụng GPS. Còn đối với Yoo!, sau một thời gian ngắn triển khai thì nay trang web Yoo.vn cũng không còn tồn tại.
  • 18. Phần Mở Đầu 4 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Các mạng xã hội truyền thống cũng đã và đang dần tích hợp tính năng địa điểm trong mạng xã hội sẵn có của họ. Đó chính là hai mạng xã hội lớn nhất hiện nay: Facebook và Google+. Facebook đã phát triển Facebook Places cho phép người dùng đính kèm thông tin về địa điểm khi họ cập nhật trạng thái của mình và “Check in” những địa điểm mà họ lui tới. Google+ cũng phát triển tính năng tương tự. Tuy nhiên, đây cũng chỉ là những sự tích hợp (plugin) vào một mạng xã hội truyền thống chứ không phải là một mạng xã hội địa điểm chuyên biệt, nơi mà những người tham gia không phải lạc vào mê cung của vô số những chức năng: trạng thái, mối quan hệ, game,.. mà là tìm thấy sự đơn giản, nhanh chóng và thuận tiện khi muốn tìm kiếm một địa điểm hoặc chia sẻ một địa điểm với bạn bè của họ. Chính vì vậy, đây là những tiền đề thôi thúc nhóm nghiên cứu đặt ra nhiệm vụ là phải tìm hiểu hệ điều hành mobile Android và xây dựng một ứng dụng mạng xã hội địa điểm trên Android một cách có hiệu quả nhất. 2. MỤC ĐÍCH NGHIÊN CỨU Luận văn nghiên cứu và thực hiện các vấn đề sau:  Xây dựng cái nhìn tổng quan về hệ điều hành mobile Android, về lịch sử hình thành và phát triển, ưu thế so với các hệ điều hành khác cũng như thị trường hiện nay của Android.  Tìm hiểu kiến trúc của hệ điều hành Android, các thành phần của một ứng dụng Android và cách xây dựng một ứng dụng trên Android.  Xây dựng cái nhìn tổng quan về RESTful Web Services, cách xây dựng một RESTful Web Services để cung cấp các dịch vụ dựa theo kiểu dữ liệu trao đổi là JSON.  Tìm hiểu các dịch vụ về địa điểm và bản đồ do Google cung cấp, cách thức sử dụng các dịch vụ đó.  Xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android theo mô hình mạng xã hội địa điểm.
  • 19. Phần Mở Đầu 5 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 3. ĐỐI TƯỢNG NGHIÊN CỨU Đối tượng nghiên cứu của luận văn là:  Nghiên cứu hệ điều hành Android dành cho mobile và ứng dụng chạy trên hệ điều hành Android.  Các dịch vụ của Google: Google Maps API, Google Places API, Google Directions API.  Web Services được sử dụng phổ biến nhất hiện nay: RESTful. 4. PHẠM VI NGHIÊN CỨU Do thời gian hạn hep và khả năng của nhóm nghiên cứu còn có hạn, cho nên luận văn chỉ tập trung nghiên cứu sâu một số lĩnh vực sau:  Hệ điều hành Android dành cho mobile (phiên bản từ 2.3 trở xuống), không nghiên cứu Android trên tablet và các thiết bị khác.  Các dịch vụ của Google: Google Maps API, Google Places API, Google Directions API.  RESTful Web Services với kiểu dữ liệu trao đổi là JSON.
  • 20. Phần Nội Dung 6 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Phần B NỘI DUNG
  • 21. Tổng quan về hệ điều hành mobile Android 7 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Chương 1. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH MOBILE ANDROID Chương này giới thiệu tổng quan về hệ điều hành Android, về lịch sử, kiến trúc và các thành phần cốt lõi của Android, chu kỳ sống của ứng dụng Android, cơ chế truyền thông điệp giữa các thành phần của một ứng dụng và giữa các ứng dụng với nhau (Intent), Background service, các thành phần của giao diện và quản lý cơ sở dữ liệu (SQLite). 1.1. Lịch sử hệ điều hành mobile Android Android là một hệ điều hành dành cho thiết bị di động như smartphone, tablet hay netbook. Android do Google phát triển dựa trên nền tảng Linux kernel và các phần mềm mã nguồn mở. Android là hệ điều hành mã nguồn mở với 12 triệu dòng mã bao gồm 3 triệu dòng mã XML, 2.8 triệu dòng mã C, 2.1 triệu dòng Java và 1.75 triệu dòng C++. Ban đầu nền tảng này được phát triển bởi Android Inc (sau đó được Google mua lại) và gần đây nó trở thành một trong những phần mềm đứng đầu của liên minh OHA (Open Handset Alliance – với khoảng 78 thành viên bao gồm cả nhà sản xuất, nhà phát triển ứng dụng… cho thiết bị di dộng mà dẫn đầu là Google). Android được phát triển nhằm cạnh tranh với các hệ điều hành di động khác như iOS (Apple), BlackBerry OS (RIM), Windows Mobile (Microsoft), Symbian (Nokia), Samsung (Bada), WebOS (Palm),… Tính đến thời điểm này, Android đã trở thành nền tảng di động tăng trưởng nhanh nhất thế giới.  Các phiên bản hệ điều hành Android: Từ lúc ra mắt phiên bản đầu tiên cho tới nay, Android đã có rất nhiều bản nâng cấp. Đa số đều tập trung vào việc vá lỗi và thêm những tính năng mới.
  • 22. Tổng quan về hệ điều hành mobile Android 8 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Hình 1. 1 Các phiên bản hệ điều hành Android Android những thế hệ đầu tiên 1.0 ( 9/2008) và 1.1 ( 2/2009) chưa có tên gọi chính thức. Từ thế hệ tiếp theo, mỗi bản nâng cấp đều được đặt với những mã tên riêng dựa theo các món ăn hấp dẫn theo thứ tự bảng chữ cái từ “C-D-E-F-G-H-I”. Hiện tại các phiên bản chính của Android bao gồm:  1.5 (Cupcake): Ra mắt tháng 4/2009: Phiên bản này có một số tính năng đáng chú ý như: khả năng ghi lại và xem video thông qua chế độ máy ghi hình, tải video lên YouTube và ảnh lên Picasa trực tiếp từ điện thoại, tích hợp bàn phím ảo với khả năng đoán trước văn bản, tự động kết nối với một thiết bị Bluetooth trong một khoảng cách nhất định, các widget và thư mục mới có thể cài đặt linh động trên màn hình chủ.  1.6 (Donut) : Ra mắt tháng 9/2009. Phiên bản này giúp Nâng cao trải nghiệm trên kho ứng dụng Android Market, tích hợp giao diện tùy biến cho phép người dùng xóa nhiều ảnh cùng lúc, nâng cấp Voice Search, nâng cấp khả năng tìm kiếm bookmarks, history, contacts và web trên màn hình chủ, bước đầu hỗ trợ màn hình độ phân giải WVGA.  2.0/2.1 (Eclair): Ra mắt tháng 10/2009. Phiên bản này có sự cải thiện rõ rệt trong giao diện người dùng, tối ưu hóa tốc độ phần cứng, hỗ trợ nhiều kích cỡ và độ phân giải màn hình hơn, thay đổi giao diện duyệt web và hỗ trợ chuẩn HTML5, Exchange ActiveSync 2.5, nâng cấp Google Maps 3.1.2, camera zoom kĩ thuật số tích hợp đèn flash, nâng cấp bàn phím ảo và kết nối Bluetooth 2.1.
  • 23. Tổng quan về hệ điều hành mobile Android 9 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android  2.2 (Froyo): Ra mắt tháng 5/2010: Phiên bản này chú trọng nâng cấp tốc độ xử lí, giới thiệu engine Chrome V8 JavaScript, hỗ trợ Adobe Flash10.1, thêm tính năng tạo điểm truy cập Wi-Fi. Một tính năng đáng chú ý khác hỗ trợ chuyển đổi nhanh chóng giữa các ngôn ngữ và từ điển trên bàn phím đồng thời cho phép cài đặt và cập nhật ứng dụng ở các thiết bị mở rộng bộ nhớ. Một trong những smartphone đầu tiên chạy phiên bản Android 2.2 Froyo là LG Optimus One.  2.3 (Gingerbread): Ra mắt tháng 12/2010: Phiên bản này đã nâng cấp đáng kể giao diện người dùng, cải thiện bàn phím ảo, thêm tính năng copy/paste, hỗ trợ công nghệ giao tiếp tầm sóng ngắn NFC, hỗ trợ chuẩn video WebM và nâng cao tính năng copy–paste. Cùng với phiên bản Gingerbread, Google cũng ra mắt điện thoại đầu tiên của hãng sử dụng nền tảng này là Google Nexus S.  3.0 (Honeycomb): Ra mắt tháng 2/2011: Đây là phiên bản hệ điều hành dành riêng cho máy tính bảng tablet với giao diện mới tối ưu hóa cho tablet, từ các thao tác đều phụ thuộc màn hình cảm ứng (như lướt web, duyệt mail..). Honeycomb hỗ trợ bộ xử lí đa nhân và xử lý đồ họa đồng thời hỗ trợ nhiều màn hình home khác nhau, cho phép người dùng dễ dàng tùy biến giao diện nếu muốn.  4.0 (Ice-cream sandwich): Ra mắt tháng 10/2011, là sự kết hợp giữa Gingerbread và Honeycomb và sẽ chạy trên tất cả các thiết bị như điện thoại, máy tính bảng, máy tính xách tay,… [2] 1.2. Máy ảo Dalvik Dalvik là máy ảo giúp các ứng dụng java chạy được trên các thiết bị động Android. Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex). Định dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc độ xử lý. Dalvik đã được thiết kế và viết bởi Dan Bornstein, người đã đặt tên cho nó sau khi đến thăm một ngôi làng đánh cá nhỏ có tên là Dalvík ở đảo Eyjafjörður, nơi mà một số tổ tiên của ông sinh sống.
  • 24. Tổng quan về hệ điều hành mobile Android 10 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Từ góc nhìn của một nhà phát triển, Dalvik trông giống như máy ảo Java (Java Virtual Machine) nhưng thực tế thì hoàn toàn khác. Khi nhà phát triển viết một ứng dụng dành cho Android, đoạn mã sẽ được thực hiện trong môi trường Java. Sau đó, nó sẽ được biên dịch sang các bytecode của Java, tuy nhiên để thực thi được ứng dụng này trên 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 bytecode sang một dạng gọi là dex bytecode. "Dex" là từ viết tắt của "Dalvik executable" đóng vai trò như cơ chế ảo thực thi các ứng dụng Android. [3] 1.3. Kiến trúc của Android Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành Android. Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây. Hình 1. 2 Kiếm trúc hệ điều hành Android 1.3.1. Tầng ứng dụng Là các ứng dụng hoàn chỉnh được người sử dụng trực tiếp sử dụng. Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: contacts, browser, camera,
  • 25. Tổng quan về hệ điều hành mobile Android 11 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android phone,… Tất cả các ứng dụng chạy trên hệ điều hành Android đều được viết bằng Java. 1.3.2. Tầng 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 thanh trạ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ùng một khuôn khổ đượ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 thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình và ứng dụng nào khác sau đó có thể sử dụng những khả năng (có thể hạn chế bảo mật được thực thi bởi khuôn khổ). Cơ chế này cho phép các thành phần tương tự sẽ được thay thế bởi người sử dụng. 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:  Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để thiết kế phần giao diện ứng dụng như: gridview, tableview, linearlayout,…  Một “Content Provider” cho phép các ứng dụng có thể truy xuất dữ liệu từ các ứng dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các ứng dụng đó.  Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không phải là mã nguồn, chẳng hạn như: localized strings, graphics, layout files.  Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các thông báo (alert) trong thanh trạng thái (status bar). Activity Manager được dùng để quản lý chu trình sống của ứng dụng và điều hướng các activity.
  • 26. Tổng quan về hệ điều hành mobile Android 12 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1.3.3. Library và Android Runtime  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. Điều này được thể hiện thông qua nền tảng ứng dụng Android. Một số các thư viện cơ bản được liệt kê dưới đây:  System C library: hệ thống thư viện chuẩn C (libc), được điều chỉnh để nhúng vào các thiết bị dựa trên Linux.  Media Libraries: các thư viện hỗ trợ phát âm và ghi âm của nhiều định dạng audio và video thông dụng, cũng như các tập tin ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG và PNG…  Surface Manager – quản lý việc truy xuất vào hệ thống hiển thị.  LibWebCore – trình duyệt web của Android.  SGL – công cụ đồ họa 2D.  3D libraries – thư viện dùng để tạo ra các đồ họa 3D dựa vào chuẩn OpenGLES 1.0 API.  FreeType - hỗ trợ xử lý bitmap và font vector.  SQLite – mô hình cơ sở dữ liệu gọn nhẹ, dùng để lưu trữ dữ liệu của ứng dụng.  Android Runtime: Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể hoạt động. Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường. Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như Java IO, Collections, File Access. Thứ hai là một máy ảo Java ( Dalvik Virtual Machine). Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điều hành Android không được chạy bằng JRE của Sun (JVM) mà là chạy bằng máy ảo Dalvik do Google phát triển.
  • 27. Tổng quan về hệ điều hành mobile Android 13 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1.3.4. Linnux Kernel Android dựa trên Linux phiên bản 2.6 cung cấp cho hệ thống các dịch vụ cốt lõi như bảo mật (security), quản lý bộ nhớ (memory management), quản lý tiến trình (process management), giao tiếp với phần cứng (driver model),... Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và phần còn lại của phần mềm. 1.4. Ứng dụng Android 1.4.1. Các thành phần của ứng dụng Android Các thành phần chính của một ứng dụng Android gồm: 1) Activity Hiểu một cách đơn giản thì Activity là một màn hình của 1 ứng dụng. Mỗi một màn hình là một lớp mở rộng của lớp Activity. Khi khởi động 1 ứng dụng Android nào đó thì bao giờ cũng có một main Activity được gọi, hiển thị màn hình giao diện chính của ứng dụng cho phép người dùng tương tác và từ đó mở ra các màn hình khác. 2) Services Thành phần chạy ẩn trong Android. Service sử dụng để thực hiện những công việc mà không cần hiển thị xuyên suốt cho người dùng thấy như hẹn giờ, theo dõi các cập nhật của ứng dụng, đưa ra các cảnh báo (Notification). 3) Content Provider Kho dữ liệu chia sẻ. Content Provider được sử dụng để quản lý và chia sẻ dữ liệu giữa các ứng dụng. 4) Intent Nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các thông báo đi nhằm khởi tạo 1 Activity hay Service để thực hiện công việc bạn mong muốn. Ví dụ: khi mở 1 trang web, bạn gửi 1 intent đi để tạo 1 activity mới hiển thị trang web đó. 5) Broadcast Receiver
  • 28. Tổng quan về hệ điều hành mobile Android 14 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Thành phần thu nhận các Intent bên ngoài gửi tới. Ví dụ: bạn viết 1 chương trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần 1 Broadcast Receiver để nhận biết các Intent là các cuộc gọi tới. 6) Notification Đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động. Đây là một kỹ thuật được ưa chuộng để tạo một chú ý người dùng từ bên trong một Service hoặc một Broadcast Receiver. Ví dụ khi người dùng đang nhận một tin nhắn hoặc đang nhận cuộc gọi, chúng sẽ gửi đến họ một tín hiệu bằng đèn, tạo một âm thanh hoặc hiển thị một biểu tượng nào đó. 1.4.2. Vòng đời của ứng dụng Android Một sự khác thường và là đặc tính cơ bản của Android là thời gian sống của tiến trình ứng dụng không được điều khiển trực tiếp bởi chính nó. Thay vào đó, nó được xác định bởi hệ thống qua sự kết hợp của việc theo dõi:  Những phần của ứng dụng mà hệ thống biết là đang chạy.  Độ ưu tiên của các thành phần ứng dụng.  Ứng dụng chiếm lĩnh bao nhiêu vùng nhớ của hệ thống. Một tiến trình của một ứng dụng Android được tao ra và còn chạy cho đến khi người sử dụng hủy hoàn toàn hay khi hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ để cung cấp cho các ứng dụng khác có độ ưu tiên cao hơn. Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc bắt đầu khởi tạo và đến thời điểm kết thúc. Giữa đó, đôi lúc chúng có thể là active hoặc inactive, hoặc là trong trường hợp activie nó có thể visible hoặc invisible Hình 1. 3 Chu kỳ sống của ứng dụng Android
  • 29. Tổng quan về hệ điều hành mobile Android 15 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1.4.3. Chu kỳ của một Activity Bên trong hệ thống các activity được quản lý như một stack. Khi một Activity mới được khởi động, nó được đặt ở đỉnh của stack và trở thành activity đang chạy. Activity trước sẽ ở bên dưới activity mới và sẽ không được thấy trong suốt quá trình activity mới tồn tại. Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển lên và trở thành active Activity. Hình 1. 4 Activity stack  Các trạng thái trong chu kỳ sống của một Activity: Hình 1. 5 Chu kỳ sống của Activity
  • 30. Tổng quan về hệ điều hành mobile Android 16 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Một Activity có 3 chu kỳ chính sau:  Active hoặc running: khi Activity đang được chạy và hiển thị trên màn hình, Activity này tập trung vào những thao tác của người dùng trên ứng dụng.  Paused: Activity đang được tạm dừng, tuy bị khi mất focus do có một Activity khác với màn hình không che hết Activity bị tạm dừng nằm ở trên, vì thế người dùng vẫn có thể trông thấy nó. Một Activity tạm dừng là còn sống nhưng có thể bị kết thúc bởi hệ thống trong trường hợp thiếu vùng nhớ.  Stopped: nếu nó hoàn toàn bao phủ bởi Activity khác. Nó vẫn còn các trạng thái và thông tin thành viên trong nó. Người dùng không thấy nó và thường bị loại bỏ trong trường hợp hệ thống cần vùng nhớ cho tác vụ khác. [3]  Các phương thức trong chu kỳ sống của một Activity: Phương thức: onCreate() - Được gọi khi activity lần đầu tiên được tạo - Ở đây bạn làm tất cả các cài đặt tĩnh -- tạo các view, kết nối dữ liệu đến list và .v.v… - Phương thức này gửi qua một đối tượngBundle chứa đựng từ trạng thái trược của Activity. - Luôn theo sau bởi onStart() . Phương thức: onRestart() - Được gọi sau khi activity đã được dừng, chỉ một khoảng đang khởi động lần nữa (stared again). - Luôn theo sau bởi onStart(). Phương thức: onStart() - Được gọi trước khi một activity visible với người dùng. - Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặc onStop() nế nó trở nên ẩn. Phương thức: onResume()
  • 31. Tổng quan về hệ điều hành mobile Android 17 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android - Được gọi trước khi activity bắt đầu tương tác với người dùng. - Tại thời điểm này activity ở trên dỉnh của stack activity. - Luôn theo sau bởi onPause(). Phương thức: onPause() - Được gọi khi hệ thống đang resuming activity khác. - Phương thức này là điển hình việc giữ lại không đổi dữ liệu. - Nó nên được diễn ra một cách nhanh chóng bởi vì activity kế tiếp sẽ không được resumed ngay cho đến khi nó trở lại. - Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởi onStop nếu nó trở nên visible với người dùng. - Trạng thái của activity có thể bị giết bởi hệ thống. Phương thức: onStop() - Được gọi khi activity không thuộc tầm nhìn của người dùng. - Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa được resumed và bao phủ nó. - Được theo sau bởi onRestart() nếu activity đang đở lại để tương tác với người dùng, hoặc onDestroy() nếu activity đang bỏ. - Trạng thái của activity có thể bị giết bởi hệ thống. Phương thức: onDestroy() - Được gọi trước khi activity bị hủy. - Đó là lần gọi cuối cùng mà activity này được nhận. - Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm thởi bị hủy diệt để tiết kiệm vùng nhớ. - Bạn có thể phân biệt giữa 2 kịch bản với phương isFinshing(). 1.4.4. Intent  Khái niện Intent: 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. Nó là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau.
  • 32. Tổng quan về hệ điều hành mobile Android 18 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng như truyền các dữ liệu cần thiết tới một Activity khác. Đ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. Hình 1. 6 Intent Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớp android.content.Intent  Các thuộc tính của một đối tượng Intent: Bảng 1. 1 Các thuộc tính của đối tượng Intent Tên thuộc tính Chức năng action Tên (string) của action mà Intent sẽ yêu cầu thực hiện. Action có thể do Android định nghĩa sẵn (built-in standard action) hoặc do người lập trình tự định nghĩa. data Dữ liệu mà Activity được gọi sẽ xử lý. catelogy Thông tin về nhóm của action. type Định dạng kiểu dữ liệu (chuẩn MIME), thường được tự động xác định. component Chỉ định cụ thể lớp sẽ thực thi Activity. Khi được xác định, các thuộc tính khác trở thành không bắt buộc (optional). extras Chứa tất cả các cặp (key, value) do ứng dụng thêm vào để truyền qua Intent (theo cấu trúc Bundle).
  • 33. Tổng quan về hệ điều hành mobile Android 19 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android  Các Action được định nghĩa sẵn: Dưới đây là những hằng String đã được định nghĩa sẵn trong lớp Intent. Đi kèm với nó là các Activity hay Application được xây dựng sẵn sẽ được triệu gọi mỗi khi Intent tương ứng được gửi (tất nhiên khi được cung cấp đúng data). Ví dụ: Gọi tới một số điện thoại: Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:123456")); startActivity(dialIntent); Hình 1. 7 Các Action được dựng sẵn 1.4.5. Content Provider và Uri Trong hệ thống Android tất cả các tài nguyên như Contact, SMS,… đều được lưu trữ vào CSDL SQLite của hệ thống. Cũng như các CSDL khác, CSDL mà hệ thống Android sử dụng để lưu trữ thông tin cũng cho phép chúng ta truy vấn dữ liệu như một CSDL thông thường. Tuy nhiên, trong hệ thống đó chúng ta không cần phải thao tác bằng lệnh SQL nhiều để truy xuất dữ liệu mà thay vào đó Android đã được trang bị một API cho phép người lập trình có thể dễ dàng truy xuất dữ liệu. Đó gọi
  • 34. Tổng quan về hệ điều hành mobile Android 20 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android là ContentProvider. ContentProvider cung cấp cho chúng ta một đối tượng con trỏ giúp chúng ta có thể dễ dàng lấy được bất cứ dữ liệu lưu trữ nào chỉ cần cung cấp một đường dẫn đúng đến dữ liệu đó. Đường dẫn này còn được gọi là Uri. Tạo một Uri: Uri uri = Uri.parse(“content://com.android.contacts/contacts”); Cấu trúc gồm có 4 phần chính như sau:  Phần A: Đây là tiền tố chỉ ra dữ liệu được điều khiển bởi Content Provider và nó không bao giờ thay đổi.  Phần B: Phần này chỉ đến nơi lưu trữ dữ liệu. Cũng giống như cấu trúc của một số điện thoại thì cái này có thể hình dung nó như là mã quốc gia hoặc cũng có thể coi nó như là tên của CSDL.  Phần C: phần này chỉ ra loại dữ liệu. Chẳng hạn như, dữ liệu contact, dữ liệu SMS,… Phần này có thể coi nó như là tên của một table  Phần D: phần này chỉ đến đúng vị trí của dữ liệu, có thể coi phần này như là ID của row trong table hoặc một dữ liệu nào đó dùng để truy vấn. Ví dụ: Uri chỉ đến contact thứ 0 trong CSDL là: content://contacts/people/0 Để có thể thực hiện truy vấn đến vùng dữ liệu được chỉ ra bởi một Uri ta cần có 2 đối tượng con trỏ được cung cấp bởi Activity đó là: Cursor và ContentResolver. Để lấy được 2 đối tượng này thì trong Activity sử dụng hàm getContentResolver(); - trả về đối tượng ContentResolver. getContentResolver().query(Uri uri); - trả về đối tượng Cursor.
  • 35. Tổng quan về hệ điều hành mobile Android 21 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1.4.6. Background Service Service là một trong 4 thành phần chính trong một ứng dụng Android (Activity, Service, BroadcastReceiver, ContentProvider) thành phần này chạy trong hậu trường và làm những công việc không cần tới giao diện như chơi nhạc, download, xử lí tính toán,… Một Service có thể được sử dụng theo 2 cách:  Nó có thể được bắt đầu và được cho phép hoạt động cho đến khi một người nào đó dừng nó lại hoặc nó tự ngắt. Ở chế độ này, nó được bắt đầu bằng cách gọi Context.startService() và dừng bằng lệnh Context.stopService(). Nó có thể tự ngắt bằng lệnh Service.stopSelf() hoặc Service.stopSelfResult(). Chỉ cần một lệnh stopService() để ngừng Service lại cho dù lệnh startService() được gọi ra bao nhiêu lần.  Service có thể được vận hành bằng việc sử dụng một Interface mà nó định nghĩa. Người dùng thiết lập một đường truyền tới đối tượng Service và sử dụng đường kết nối đó để thâm nhập vào Service. Kết nối này được thiết lập bằng cách gọi lệnh Context.bindService() và được đóng lại bằng cách gọi lệnh Context.unbindService(). Nhiều người dùng có thể kết nối tới cùng một Service. Nếu Service vẫn chưa được khởi chạy, lệnh bindService() có thể tùy ý khởi chạy nó. Hai chế độ này không tách biệt hoàn toàn, có thể kết nối với một Service mà nó đã được bắt đầu với lệnh startService(). Ví dụ, một Service nghe nhạc ở chế độ nền có thể được bắt đầu bằng cách gọi lệnh startService() cùng với một đối tượng Intent mà định dạng được âm nhạc để chơi. Chỉ sau đó, có thể là khi người sử dụng muốn kiểm soát trình chơi nhạc hoặc biết thêm thông tin về bài hát hiện tại đang chơi, thì sẽ có một Activity tạo lập một đường truyền tới Service bằng cách gọi bindService(). Trong trường hợp như thế này, stopService() sẽ không thực sự ngừng Service cho đến khi liên kết cuối cùng được đóng lại.
  • 36. Tổng quan về hệ điều hành mobile Android 22 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Giống như một Activity, một Service cũng có các phương thức chu kỳ sống mà ta có thể cài đặt để kiểm soát những sự thay đổi trong trạng thái của nó. Service chỉ có 3 phương thức được gọi đến trong chu trình sống là: void onCreate() void onStart(Intent intent) void onDestroy() Các phương thức kết nối và hủy kết nối đến một Service: IBinder onBind(Intent intent) boolean onUnbind(Intent intent) void onRebind(Intent intent) Hình 1. 8 Chu trình sống của một Service
  • 37. Tổng quan về hệ điều hành mobile Android 23 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1.5. Android Emulator Android SDK và Plugin Eclipse được gọi là một Android Deverloper Tool (ADT). Các lập trình viên Android sẽ cần phải sử dụng công cụ IDE (Integrated Development Enveronment) này để phát triển, debugging và testing cho ứng dụng. Tuy nhiên, các lập trình viên cũng có thể không cần phải sử dụng IDE mà thay vào đó là sử dụng command line để biên dịch và tất nhiên là vẫn có Emulator như thường. Android Emulator được trang bị đầy đủ hầu hết các tính năng của một thiết bị thật. Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB, camera và video, nghe phone, nguồn điện giả lập và bluetooth. Android Emulator thực hiện các công việc thông qua một bộ xử lý mã nguồn mở, công nghệ này được gọi là QEMU (http://bellard.org/qemu/) được phát triển bởi Fabrice Bellard. Hình 1. 9 Emulator
  • 38. Tổng quan về hệ điều hành mobile Android 24 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1.6. Các thành phần giao diện trong Android 1.6.1. View View là lớp thành phần giao diện cơ bản nhất của Android. Nó định nghĩa những thuộc tính và phương thức cơ bản nhất cần có cho một thành phần giao diện trên Android. Các thành phần giao diện khác đều được mở rộng từ View, tạo nên nhiều kiểu View và ViewGroup gọi chung là các Widget. Trong đó, hầu hết các ViewGroup đều là các Layout dùng để chứa đựng, sắp xếp những thành phần giao diện khác bên trong nó. Hình 1. 10 Các thành phần giao diện Một màn hình giao diện trên Android bắt buộc phải được thiết kế bao bọc bên ngoài bằng một Layout, các thành phần khác đều được sắp xếp có thứ tự hoặc có vị trí phụ thuộc nhau trong Layout này. Việc thiết kế giao diện có thể dược tiến hành bằng các thẻ trên một tập tin XML hoặc có thể thiết kế bằng mã code Java. 1.6.2. ViewGroup ViewGroup được mở rộng từ lớp View, ngoài ListView thì còn lại hầu hết các ViewGroup đều là các Layout để chứa đựng các Layout hay các View khác. Một số Layout được sử dụng phổ biến như: LinearLayout, FrameLayout, AbsoluteLayout, RelativeLayout, TableLayout.
  • 39. Tổng quan về hệ điều hành mobile Android 25 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1.6.2.1. LinearLayout LinearLayout dùng để sắp xếp các thành phần con bên trong nó theo một thứ tự chiều ngang hay chiều dọc nhất định. LinearLayout làm cho các thành phần trong nó không bị phụ thuộc vào kích thước của màn hình mà chủ yếu phụ thuộc vào các thành phần khác và Layout chứa nó. Hình 1. 11 Bố trí các widget sử dụng LinearLayout 1.6.2.2. FrameLayout FrameLayout bố trí các thành phần bên trong nó theo từng lớp xếp chồng lên nhau. Đối tượng nằm bên trên sẽ che khuất đối tượng nằm bên dưới. Vì thế FrameLayout hay được dùng để thiết kế các giao diện có phần nền và các đối tượng khác nhỏ hơn nằm bên trên như bản đồ, khung hiển thị ảnh,… Hình 1. 12 FrameLayout
  • 40. Tổng quan về hệ điều hành mobile Android 26 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1.6.2.3. AbsoluteLayout Layout này được sử dụng để bố trí các widget vào một vị trí bất kì trong layout dựa vào 2 thuộc tính toạ độ x, y. Tuy nhiên Layout này ít được khuyến khích sử dụng bởi vì có nhiều loại màn hình với kích thước, độ phân giải khác nhau nên nếu các thành phần giao diện không có sự ràng buộc tương đối, tỉ lệ khoảng các với nhau sẽ không được hiển thị như ý muốn trên các màn hình khác nhau. 1.6.2.4. RelativeLayout RelativeLayout bố trí các Widget bên trong nó bằng cách định nghĩa sự ràng buộc giữa các Widget và giữa các Widget với RelativeLayout chứa đựng chúng. Các vị trí được bố trí theo một trục đối xứng ngang hoặc dọc dựa vào các tham số: Top, Left, Right và Bottom. Dựa vào những mối ràng buộc đó mà RetaliveLayout cũng không phụ thuộc vào kích thước của màn hình. Ngoài ra, nó còn có ưu điểm là giúp tiết kiệm layout sử dụng nhằm mục đích giảm lượng tài nguyên sử dụng, đẩy nhanh tốc độ của ứng dụng. Hình 1. 13 RelativeLayout
  • 41. Tổng quan về hệ điều hành mobile Android 27 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 1.6.2.5. TableLayout TableLayout thiết kế một bảng dạng lưới với số dòng, số cột nhất định được định nghĩa bằng các TableRow và TableColunm. TableLayout thường được dùng để thiết kế các giao diện bao gồm một danh sách các thành phần nhưng cố định, chẳng hạn như, giao diện của một chiếc máy tính đơn giản hoặc một danh sách dữ liệu có nhiều cột. Hình 1. 14 TableLayout 1.6.2.6. ListView ListView thể hiện một danh sách các thông tin theo từng dòng, mỗi dòng có thể chứa một hay nhiều thông tin hiển thị trên các Widget tương ứng. Android dựng sẵn một số kiểu ListView đơn giản dựa vào định nghĩa một dòng (item) của nó như: simple_list_item_1, simple_list_item_2, simple_list_item_3,… Chúng ta hoàn toàn có thể định nghĩa lại một “CustomItem” với các thành phần widget tùy ý để có thể tạo ra những giao diện như ý muốn. ListView chỉ là thành phần hiển thị thông tin, nó phụ thuộc vào nguồn dữ liệu gọi là Data Source và cầu nối giữa nó với nguồn dữ liệu gọi là Adapter.
  • 42. Tổng quan về hệ điều hành mobile Android 28 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 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: Adapter là một lớp trung gian giúp ánh xạ dữ liệu trong Data Source vào đúng vị trí hiển thị trong ListView thông qua phương thức getView(). Khi một Adapter được khởi tạo nó sẽ phải được chỉ định Data Source và ListItem mà nó hiển thị. Sau đó adapter này sẽ được gán cho ListView thông qua phương thức ListView.setAdapter(adaper). Mọi sự thay đổi dữ liệu trên Data Source sẽ được adapter cập nhật lên ListView bằng phương thức notifyDataSetChanged(). Hình 1. 15 ListView 1.7. SQLITE SQLite là một dạng CSDL tương tự như Mysql, PostgreSQL... Đặc điểm của SQLite là gọn, nhẹ, đơn giản. Chương trình gồm 1 file duy nhất vỏn vẹn chưa đến 500kB, không cần cài đặt, không cần cấu hình hay khởi động mà có thể sử dụng ngay. Dữ liệu database cũng được lưu ở một file duy nhất. Không có khái niệm user, password hay quyền hạn trong SQLite database. SQLite 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.
  • 43. Google APIs 29 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Chương 2. GOOGLE APIs Chương này giới thiệu một số API có liên quan đến các dịch vụ về bản đồ của Google, với trọng tâm nghiên cứu tập trung vào việc tìm hiểu cách sử dụng các dịch vụ này trên hệ điều hành mobile Android là chính. Lồng vào đó là nội dung giới thiệu về JavaScript Object Notation (JSON), kiểu dữ liệu gọn nhẹ được sử dụng hầu hết trong các kết quả trả về của Google APIs. Nội dụng bao gồm: - Google Maps API: sử dụng bản đồ Google Maps trên Android. - JavaScript Object Notation (JSON): giới thiệu JSON và cấu trúc của JSON. - Google Places Autocomplete API: tìm kiếm nhanh tên địa điểm dựa vào từ khóa. - Google Places API: tìm kiếm địa điểm có giới hạn phạm vi tìm kiếm. - Google Directions API: tìm đường đi, khoảng cách, thời gian giữa hai địa điểm. 2.1. Google Maps API 2.1.1. Giới thiệu Google Maps là một dịch vụ và công nghệ bản đồ trực tuyến miễn phí được cung cấp bởi công ty Google, hỗ trợ nhiều dịch vụ dựa vào bản đồ như Google Maps trên web, Google Ride Finder, Google Transit, Google Places,… 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 các hàm dịch vụ Google Maps API. Google Maps cho phép thấy bản đồ đường sá, bản đồ vệ tinh, hướng dẫn đường đi cho người đi bộ, xe hơi hoặc các phương tiện công cộng, và những địa điểm kinh doanh trong các thành phố của nhiều quốc gia cũng như khắp nơi trên thế giới. Google Maps API cho phép các nhà phát triển có thể tích hợp Google Maps vào trang web hoặc ứng dụng của họ. Đây là một dịch vụ miễn phí và hiện không bị chèn quảng cáo.
  • 44. Google APIs 30 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Bằng cách sử dụng Google Maps API, bản đồ của Google có thể được nhúng vào bất kỳ website nào mà vẫn đảm bảo dữ liệu của nó được che phủ. Mặc dù ban đầu chỉ là một JavaScript API, nhưng các hàm dịch vụ Maps API đã ngày càng được mở rộng bao gồm cả các API cho ứng dụng Adobe Flash, dịch vụ lấy ảnh bản đồ tĩnh, dịch vụ web phục vụ cho địa lý, dịch vụ hướng dẫn đường đi, lái xe,… Thành công của Google Maps API tạo nên những sự cạnh tranh trên cùng lĩnh vực của các nhà cung cấp khác như: Yahoo! Maps API, Bing Maps Platform, MapQuest Development Platform và OpenLayers. Năm 2006, Google giới thiệu công nghệ mới được gọi là Google Maps cho Mobile, với dự định có thể ứng dụng Google Map trên bất kỳ thiết bị di động có hỗ rợ nền tảng Java nào. Nhiều tính năng trên web đã được cung cấp đầy đủ trên các ứng dụng. Android platform là một nền tảng hỗ trợ tối đa cho Google Maps, chúng ta có thể nhúng nó vào ứng dụng của mình một cách dễ dàng và hiệu quả. 2.1.2. Sử dụng Google Maps API trên Android a) Tạo ứng dụng sử dụng Google Maps API trên Android với Eclipse Để tạo được ứng dụng sử dụng Google Maps API, bạn phải cài đặt gói GoogleAPIs bằng cách sử dụng Android SDK and AVD Manager.
  • 45. Google APIs 31 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Hình 2. 1 Cài đặt Google APIs trên Eclipse Sau đó tạo project mới: Hình 2. 2 Tạo project cho ứng dụng Google APIs
  • 46. Google APIs 32 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android b) Đăng ký và lấy key Google Maps API Để sử đụng dược Google Maps API trong ứng dụng của mình thì phải đăng ký một key miễn phí từ Google Maps API.  Các bước để đăng ký key từ Google Maps API B1. Lấy MD5 fingerprint code. - Xác định được file debug.keystore, đường dẫn thông thường là: Bảng 2. 1 Đường dẫn file debug.keystore trên các hệ điều hành Hệ điều hành Đường dẫn Windows Vista & Window7 C:Users<user>.androiddebug.keystore Windows XP C:Documents and Settings<user>.androiddebug.keystore OS X and Linux ~/.android/debug.keystore - Nếu dùng Eclipse thì có thể vào Windows > Preferences > Android > Build để lấy đường dẫn như bên dưới: Hình 2. 3 Đường dẫn đến file debug.keystore
  • 47. Google APIs 33 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android - Sau khi lấy được đường dẫn của debug.keystore. Mở cmd lên và chạy lệnh sau để lấy MD5 fingerprint code: keytool -list -alias androiddebugkey -keystore <path_to_debug_keystore>.keystore -storepass android – keypass android  Lưu ý: keytool nằm trong bin của java. Nếu chưa thêm đường dẫn của bin vào path trong Environment varialbles của Windows thì phải chuyển thư mục hiện hành trên cmd tại thư mục bin của java. - Kết quả sẽ cho ra dãy MD5 Certificate fingerprint. Bạn lưu lại dãy MD5 này. B2. Lấy key Google Maps API Vào đường dẫn sau : http://code.google.com/android/maps-api-signup.html Điền vào mã MD5 fingerprint code và chọn Generate API key , hệ thống sẽ tự đông sinh ra một API key. Đây chính là Google Maps API key mà ta đã đăng ký thành công. Hình 2. 4 Đăng ký Google Maps APIs
  • 48. Google APIs 34 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android c) Nhúng bản đồ Google vào ứng dụng Android B1. Khai báo AndroidManifest Để sử dụng Google Maps API, phải khai báo trong file AndroidManifest.xml bằng cách thêm hai phần tử <uses-library> và <user-permission> như sau: <uses-library android:name="com.google.android.maps"/> <uses-permission android:name="android.permission.INTERNET"/> B2. Tạo layout hiển thị Map <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.google.android.maps.MapView android:id="@+id/mymap" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="031rbjQgtWLoC3N3Nv1bouVoK0HG5S-g3LuQ" android:clickable="true" /> </RelativeLayout> B3. Tạo class GoolgeMap extends MapActivity, overrides phương thức onCreate và isRouteDisplayed public class GoogleMap extends MapActivity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.maplayout); } @Override protected boolean isRouteDisplayed() { return false; } }
  • 49. Google APIs 35 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 2.2. JavaScript Object Notation (JSON) JSON là định dạng dữ liệu được sử dụng hầu hết trong các kết quả trả về của các dịch vụ do Google cung cấp, vì vậy cần phải hiểu được cấu trúc của JSON để thuận lợi cho việc tìm hiểu các API sau này. 2.2.1. JSON là gì? JSON (JavaScript Object Notation) là một dạng dữ liệu mở và nhẹ nhàng, được thiết kế theo định dạng kiểu text để dễ dàng trao đổi và con người có thể đọc được. Nó có nguồn gốc từ ngôn ngữ kịch bản JavaScript, thể hiện các cấu trúc dữ liệu đơn giản và các mảng kết hợp, gọi chung là các đối tượng. Mặc dù có quan hệ với JavaScript, nhưng JSON là một ngôn ngữ độc lập, có thể phân tích và chuyển đổi sang hầu hết các ngôn ngữ kịch bản khác. Định dạng JSON đầu tiên do Douglas Crockford định nghĩa và được miêu tả trong RFC 4627. Tên của một file dữ liệu json có đuôi mở rộng là .json. JSON thường được sử dụng cho các cấu trúc dữ liệu truyền qua mạng có thứ tự và có cấu trúc, chủ yếu là truyền dữ liệu giữa máy chủ và các ứng dụng web, thay thế cho XML. [4] 2.2.2. Cấu trúc của JSON JSON được xây dựng trên 2 cấu trúc:  Là tập hợp của các cặp tên và giá trị name-value, thay thế cho hầu hết các cấu trúc ở các ngôn ngữ khác như: đối tượng (object), bảng ghi (record), cấu trúc (struct), từ điển (dictionary), bảng băm (hash table), danh sách có khoá (keyed list), hay mảng liên hợp (associative array).  Là 1 mảng các giá trị đã được sắp xếp. Trong hầu hết các ngôn ngữ khác thì đây chính là: 1 mảng (array), vector, danh sách (list) hay là 1 chuỗi (sequence).
  • 50. Google APIs 36 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Đó là 2 cấu trúc dữ liệu rất phổ biến, hầu như tất cả các ngôn ngữ lập trình hiện đại đều hổ trợ chúng theo một hình thức nào đó. Nhờ cấu trúc này mà đã tạo nên một định dạng dữ liệu có thể dễ dàng và nhanh chóng được chuyển đổi bằng các ngôn ngữ lập trình. JSON có những dạng sau: Đối tượng: một đối tượng là một tập không có thứ tự của các cặp tên và giá trị (name:value). Một đối tượng bắt đầu bởi dấu mở ngoặc đơn “{“ và kết thúc với dấu đóng ngoặc đơn “}”. Theo sau tên là dấu hai chấm “:” và các cặp “tên:giá trị” được tách ra bởi dấu phẩy “,”. Hình 2. 5 Object trong JSON Ví dụ: { “ten”: “Nguyen Van A”, “tuoi”: 21, “gioitinh”: “Nam” } Mảng: một mảng là một tập hợp các giá trị đã được sắp xếp. Một mảng bắt đầu bởi dấu mở ngoặc vuông “[“ và kết thúc với dấu đóng ngoặc vuông “]”. Các giá trị được cách nhau bởi dấu phẩy “,”. Hình 2. 6 Array trong JSON
  • 51. Google APIs 37 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Ví dụ: Mảng các “sinhVien” “sinhVien”: [ { “ten”: “Nguyen Van A”, “tuoi”: 21, “gioitinh”: “Nam” }, { “ten”: “Nguyen Thi B”, “tuoi”: 20, “gioitinh”: “Nu” } ] Giá trị: một giá trị có thể là một chuỗi (string) trong cặp dấu nháy kép “” hoặc một số, hoặc một giá trị true hoặc false, hoặc giá trị null, hoặc một đối tượng (object), hoặc một mảng (array). Những cấu trúc này có thể được lồng vào nhau. Hình 2. 7 Value trong JSON Chuỗi: một chuỗi (string) là một tập hợp của 0 hay nhiều ký tự Unicode, được bao trong các dấu nháy kép ("), giống như là string trong C hay là Java. Chuỗi không chứa các ký tự ““ và " đứng đơn độc, ta dùng dấu “” cùng với “b”, “f”, “n”, “r”,
  • 52. Google APIs 38 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android “t”, “u” để biểu diễn các ý nghĩa đặc biệt, và muốn thể hiện các ký tự “” và " trong chuỗi, ta thêm vào trước nó ký tự “”. Hình 2. 8 String trong JSON Số (number): một số giống một số trong C và Java, trừ định dạng bát phân và hexa là không thể dùng. Hình 2. 9 Number trong JSON
  • 53. Google APIs 39 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android Bảng tóm tắt các kiểu dữ liệu trong JSON: Bảng 2. 2 Các kiểu dữ liệu trong JSON 2.3. Google Places Autocomplete API 2.3.1. Giới thiệu Google Places Autocomplete API là một dịch vụ web cung cấp bởi Google, giúp tự động hoàn chỉnh từ khóa tìm kiếm bằng cách trả về danh sách các địa điểm kinh doanh, địa chỉ,.. gần với từ khóa nhận được nhất. Ví dụ: từ khóa gửi đến là: “New Y”, thì kết quả trả về sẽ là: “New York, NY, USA”, “New York, NY, United States”, “The New Yorker, 8th Avenue, New York, NY, United States”,… [5]
  • 54. Google APIs 40 Tìm hiểu và xây dựng ứng dụng tìm kiếm và chia sẻ địa điểm trên Android 2.3.2. Sử dụng - API Key: Google Places Autocomplete API là một phần của Google Places API nên sử dụng chung key và các điều khoản dịch vụ khác như Google Places API. API key được quản lý và cung cấp bởi Google APIs console: http://code.google.com/apis/console - Yêu cầu về Logo: Nếu ứng dụng hiển thị dữ liệu lấy được từ Places API mà không sử dụng Google Map thì phải chèn vào logo “Powered by Goolge” kèm theo. Logo được cung cấp tại: http://code.google.com/apis/maps/documentation/places/images/powered-by- google.zip 2.3.3. Request Một yêu cầu của Places Autocomplete là một đường dẫn HTTP URL có dạng: https://maps.googleapis.com/maps/api/place/autocomplete/output?parameters Trong đó, output có thể có các giá trị:  json cho biết kết quả trả về dạng JavaScript Object Notation (JSON).  xml cho biết kết quả trả về dạng XML. Parameters là các tham số được phân biệt nhau bởi dấu &. Bao gồm các tham số bắt buộc và các tham số không bắt buộc: Tham số bắt buộc:  input – từ khóa tìm kiếm. Server sẽ trả về kết quả phù hợp nhất với từ khóa này.  sensor – cho biết yêu cầu được gửi có sử dụng thiết bị định vị để xác định ví trí gửi yêu cầu không. Tham số này có thể có giá trị true hoặc false.  key – API key của ứng dụng, đăng ký từ Google APIs Console. Tham số không bắc buộc: