Thông qua môi trường internet, sử dụng webservicegiúp cho ứng dụng kết nối đến csdl của google api và cơ sở dữ liệu của server.Các thiết bị chạy hệ điều hành android sẽ kết nối đến csdl
Trang 1ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN TỐT NGHIỆP ĐAI HỌC
CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN
THÁI NGUYÊN, NĂM 2012
Trang 2ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN
TỐT NGHIỆP ĐAI HỌC
Chuyên ngành Công nghệ thông tin
Chuyên ngành Công nghệ thông tin
Giáo viên hướng dẫn: ThS NGUYỄN HỒNG TÂN
THÁI NGUYÊN, NĂM 2012
Trang 3vụ trong công việc hay giải trí dần dần thay thế cho máy tính Các ứng dụng trênmôi trường mạng dần thay thế các ứng dụng chạy trên máy đơn, cục bộ Với sựlớn mạnh và phát triển vượt bậc trong những năm gần đây,HĐH Android đã chothấy được thế mạnh của mình trong các thiết bị smartphone Các ứng dụng, phầnmềm phát triển trên Android OS ngày càng nhiều, và mục đích của các ứng dụngngày càng đáp ứng được yêu cầu của người dùng Một trong những ứng dụnghữu ích nhất hiện nay đó là các chương trình tìm kiếm trên Google Map.Chính vì điều này nên em quyết định xây dựng ứng dụng tìm kiếm nâng caotrên google map.
Đồ án nhằm giải quyết việc tìm các địa điểm mà người dùng đang cần nhưtìm địa điểm, quán cà phê, trạm xăng, cây atm, các ngân hàng… gần nhất manglại thuận lợi cho người dùng Thông qua môi trường internet, sử dụng webservicegiúp cho ứng dụng kết nối đến csdl của google api và cơ sở dữ liệu của server.Các thiết bị chạy hệ điều hành android sẽ kết nối đến csdl thông qua webservice
và hiển thị thông tin cần tìm kiếm cho người sử dụng cần trên google map
Nhiệm vụ đồ án của em là xây dựng một ứng dụng chạy trên hệ điều hànhAndroid và cho phép người dùng tìm kiếm các địa điểm trên Google Map Mộtnhiệm vụ quan trọng nữa là xây dựng chức năng cập nhật, quản lý thông tin chongười quản trị thông qua Webservice
Trang 4LỜI CẢM ƠN
Lời đầu tiên, Em xin chân thành cảm ơn trường đại học công nghệ thông tin và truyền thông , đại học đại học Thái Nguyên đã tạo điều kiện thuận lợi cho phép em thực hiện đồ án tốt nghiệp
Đặc biệt, Em xin chân thành cảm ơn tới Th.S Nguyễn Hồng Tân đã rất tận tình hướng dẫn, chỉ bảo em trong suốt thời gian thực hiện đề tài vừa qua
Em cũng xin chân thành cảm ơn tất cả các Thầy, các Cô trong Trường đã tận tình giảng dạy, trang bị cho chúng em những kiến thức cần thiết, quý báu trong những năm tháng học tập tại Trường
Mặc dù em đã cố gắng, nhưng với trình độ còn hạn chế, trong quá trình làm đồ án không tránh khỏi những thiếu sót Em hy vọng sẽ nhận được những ý kiến nhận xét, góp ý của các nhà khoa học, các thầy cô giáo và bạn bè về những vấn đề được triển khai trong đồ án
Xin trân trọng cảm ơn!
Trang 5LỜI CAM ĐOAN
Em xin cam đoan toàn bộ đồ án: “Tìm hiểu Android, xây dựng ứng dụng
tìm kiếm nâng cao Google Map trên nền hệ điều hành Android” là do bản
thân tìm hiểu, nghiên cứu Không có sự sao chép nội dung từ các đồ án khác Tất
cả nội dung hoặc hình ảnh minh họa đều có nguồn gốc xuất xứ rõ ràng từ các tàiliệu tham khảo ở nhiều nguồn khác nhau mà xây dựng nên Ngoài ra còn có sự
góp ý và định hướng của thầy giáo Th.S Nguyễn Hồng Tân.
Em xin cam đoan những lời trên là đúng, mọi thông tin sai lệch em xinhoàn toàn chịu trách nhiệm trước Hội đồng
Thái Nguyên, tháng 6 năm 2012
Sinh viên
Nguyễn Tất Đạt
Trang 6MỤC LỤC
ĐỒ ÁN TỐT NGHIỆP ĐAI HỌC 1
2
NHIỆM VỤ ĐỒ ÁN 3
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 10
1.1 Lịch sử Android 10
1.2 Delving với máy ảo Dalvik 11
1.3 Kiến trúc của Android 11
1.4 Sơ lược về Web service 14
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 73
TÀI LIỆU THAM KHẢO 74
Trang 7DANH MỤC HÌNH ẢNH
HÌNH 1.1 CẤU TRÚC STACK HỆ THỐNG ANDROID 12
HÌNH 1.2 CÔNG CỤ ANDROID SDK 19
HÌNH 1.3 CÔNG CỤ ECLIPSE 19
HÌNH 1.4 GIAO DIỆN ECLIPSE 19
HÌNH 1.5 CÔNG CỤ HOSTING IPAGE 20
HÌNH 1.6 CÔNG CỤ JOOMLA 20
HÌNH 2.1 ANDROID EMULATOR 27
HÌNH 2.2 CHU KỲ SỐNG CỦA MỘT ỨNG DỤNG ANDROID 29
HÌNH 2.3 ACTIVITY STACK 30
HÌNH 2.4 CHU KỲ SỐNG CỦA ACTIVITY 30
HÌNH 2.5 CÁC SỰ KIỆN TRONG CHU KỲ SỐNG CỦA ỨNG DỤNG 32
HÌNH 2.6 CÁC SỰ KIỆN TRONG CHU KỲ SỐNG CỦA ỨNG DỤNG 34
HÌNH 2.7 BỐ TRÍ CÁC WIDGET SỬ DỤNG LINEARLAYOUT 35
HÌNH 2.8 BỐ TRÍ CÁC WIDGET TRONG FRAMELAYOUT 36
Trang 8HÌNH 2.9 BỐ TRÍ WIDGET TRONG RETALIVELAYOUT 37
HÌNH 2.10 BỐ TRÍ WIDGET TRONG TABLELAYOUT 38
HÌNH 2.11 IMAGEBUTON 39
HÌNH 2.12 IMAGEVIEW VÀ IMAGEBUTTON BUTON 40
HÌNH 2.13 MINH HOẠ CHO MỘT LISTVIEW 41
HÌNH 2.14 MINH HOẠ OPTION MENU 43
HÌNH 2.15 MINH HOẠ CONTEXT MENU 44
HÌNH 2.16 MINH HOẠ QUICK SEARCH BOX 45
HÌNH 2.17 TRUYỀN DỮ LIỆU GIỮA 2 ACTIVITY 47
HÌNH 2.18 CÁC THUỘC TÍNH CỦA INTEND 47
HÌNH 2.19 CÁC ACTION ĐÃ ĐƯỢC ĐỊNH NGHĨA SẴN TRONG INTEND 48
HÌNH 2.20 CHU TRÌNH SỐNG CỦA MỘT SERVICE 52
HÌNH 2.21 SQLITE MANAGER 55
BIỂU ĐỒ USECASE: QUẢN LÝ THÔNG TIN 61
BIỂU ĐỒ USECASE: TÌM KIẾM ĐỊA ĐIỂM 61
QUẢN LÝ THÔNG TIN CÁC ĐỊA ĐIỂM 66
CẬP NHẬT THÔNG TIN CÁC ĐỊA ĐIỂM 66
Trang 9FORM SEARCH TRÊN MOBILE 67 HIỂN THỊ ĐỊA ĐIỂM TRÊN MOBILE 70
LỜI NÓI ĐẦU
Trong thời điểm hiện nay, trên thế giới cũng như tại Việt Nam, thị trườngcho điện thoại di động đang trở nên sôi động hơn bao giờ hết Do thu nhập củangười dân ngày càng được cải thiện cũng như nhu cầu trao đổi thông tin ngàycàng tăng theo Cùng với sự phát triển của thị trường điện thoại di động là sựphát triển mạnh mẽ của xu hướng lập trình phần mềm ứng dụng cho các thiết bị
di động Phần mềm, ứng dụng cho điện thoại di động hiện nay rất đa dạng vàphong phú, đa số các phần mềm ứng dụng là các loại trò chơi, các chương trìnhtiện ích như từ điển, soạn thảo văn bản, diệt virus… Bên cạnh đó, một phần mềmrất cần thiết và tiện lợi cho mọi người đó là tìm kiếm trên google map view
Chính vì lý do đó mà em đã chọn đề tài : “ Tìm hiểu Android, xây dựng ứng
dụng tìm kiếm nâng cao trên Google Map”
Nội dung của đề tài được chia thành 2 phần như sau:
Chương I: Cơ sở lý thuyết và các công cụ sử dụng trong đồ án
Chương này nói về lịch sử hình thành và phát triển của hệ điềuhành Android Tổng quan về Webservice, một số thành phần củawebservice Giới thiệu một số công cụ lập trình Android và công cụ quản
lý trên server
Chương II: Xây dựng một ứng dụng Android
Chương này sẽ giải thích lý do tại sao chúng ta chọn Android vàcách tạo ra một ứng dụng Android trên máy tính
Chương III: Xây dựng ứng dụng và cài đặt
Chương này đưa ra cách giải quyết bài toán, code, giao diện củachương trình và cách cài đặt trên điên thoại, cuối cùng đưa ra kết luận vàhướng phát triển của đề tài
Trang 10CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Lịch sử Android
Ban đầu, Android là hệ điều hành cho các thiết bị cầm tay dựa trên lõiLinux do công ty Android Inc (California, Mỹ) thiết kế Công ty này sau đóđược Google mua lại vào năm 2005 và bắt đầu xây dựng Android Platform Cácthành viên chủ chốt tại ở Android Inc gồm có: Andy Rubin, Rich Miner, NickSears, and Chris White
Và sau tiếp, vào cuối năm 2007, thuộc về Liên minh thiết bị cầm tay mãnguồn mở (Open Handset Alliance) gồm các thành viên nổi bật trong ngành viễnthông và thiết bị cầm tay như: Texas Instruments, Broadcom Corporation,Google, HTC, Intel, LG, Marvell Technology Group, Motorola, Nvidia,Qualcomm, Samsung Electronics, Sprint Nextel, T-Mobile, ARM Holdings,Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, SonyEricsson, Toshiba Corp, and Vodafone Group,…
Mục tiêu của liên minh này là nhanh chóng đổi mới để đáp ứng tốt hơn chonhu cầu người tiêu dùng và kết quả đầu tiên của nó chính là nền tảng Android.Android được thiết kế để phục vụ nhu cầu của các nhà sản xuất thiết, các nhàkhai thác và các lập trình viên thiết bị cầm tay
Phiên bản SDK lần đầu tiên phát hành vào tháng 11 năm 2007, hãng Mobile cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc T-Mobile G1,chiếc smartphone đầu tiên dựa trên nền tảng Android Một vài ngày sau đó,Google lại tiếp tục công bố sự ra mắt phiên bản Android SDK release Candidate1.0 Trong tháng 10 năm 2008, Google được cấp giấy phép mã nguồn mở choAndroid Platform
T-Khi Android được phát hành thì một trong số các mục tiêu trong kiến trúccủa nó là cho phép các ứng dụng có thể tương tác được với nhau và có thể sửdụng lại các thành phần từ những ứng dụng khác Việc tái sử dụng không chỉđược áp dụng cho cho các dịch vụ mà nó còn được áp dụng cho cả các thànhphần dữ liệu và giao diện người dùng
Trang 11Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay được gọi làAndroid Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị ràngbuộc vào các nhà cung cấp mạng điện thoại di động Mục tiêu của thiết bị này làcho phép các nhà phát triển thực hiện các cuộc thí nghiệm trên một thiết bị thực
có thể chạy hệ điều hành Android mà không phải ký một bản hợp đồng nào Vàokhoảng cùng thời gian đó thì Google cũng cho phát hành một phiên vản vá lỗi1.1 của hệ điều hành này Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ soft-keyboard mà đòi hỏi các thiết bị phải sử dụng bàn phím vật lý Android cố địnhvấn đề này bằng cách phát hành SDK 1.5 vào tháng Tư năm 2009, cùng với một
số tính năng khác Chẳng hạn như nâng cao khả năng ghi âm truyền thông, vậtdụng, và các live folder
1.2 Delving với 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ị độngAndroid Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thiDalvik (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 ở đảoEyjafjörður, nơi mà một số tổ tiên của ông sinh sống
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ếtmột ứng dụng dành cho Android, anh ta thực hiện các đoạn mã trong môi trườngJava Sau đó, nó sẽ được biên dịch sang các bytecode của Java, tuy nhiên để thựcthi đượ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
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ànhAndroid Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây
Trang 12Hình 1.1 Cấu trúc stack hệ thống Android
1.3.1 Tầng ứng 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, 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 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ácnhà 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ểmtruy 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óaviệ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ủamình và ứng dụng nào khác sau đó có thể sử dụng những khả năng (có thể hạnchế 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ầntương tự sẽ được thay thế bởi người sử dụng
Trang 13Cơ 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ệugiữ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ôngphải là mã nguồn, chẳng hạn như: localized strings, graphics, andlayout files
• Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị cáccustom alerts trong status bar
Activity Maanager được dùng để quản lý chu trình sống của ứng dụng vàđiều hướng các activity
1.3.3 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ềuthành phần khác nhau trong hệ thống Android Điều này được thể hiện thông quanề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:
• Hệ thống thư viện C : triển khai BSD-derived có nguồn gốc từ các hệ
thống thư viện chuẩn C (libc), chỉnh để nhúng vào các thiết bị dựa trênLinux
• Media Libraries – Dựa trên gói Video OpenCORE; các thư viện hỗ trợ
phát và ghi âm của các định dạng âm thanh và video phổ biến, cũng nhưcác file hình ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG,and PNG
• Surface Manager – Quản lý việc truy xuất vào hệ thống hiển thị
• LibWebCore - một trình duyệt web hiện đại có quyền hạn trong cả trình
duyệt Android và hiển thị nhúng web
• SGL – Các cơ sở công cụ đồ họa 2D.
• 3D libraries - Thực hiện dựa trên OpenGL ES 1.0 APIs; Thư viện sử dụng
hoặc là tăng tốc phần cứng 3D (nếu có) hoặc bao gồm tối ưu hóa phầnmềm 3D
• FreeType - bitmap and vector font rendering.
Trang 14• SQLite - a powerful and lightweight relational database engine available
to all applications
1.3.4 Android Runtime
Android bao gồm một tập hợp các thư viện cơ bản mà cung cấp hầu hết cácchức năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java Tất cả cácứng dụng Android đều chạy trong tiến trình riêng Máy ảo Dalvik đã được viết đểcho một thiết bị có thể chạy nhiều máy ảo hiệu quả Các VM Dalvik thực thi cáctập tin thực thi Dalvik (dex) Định dạng được tối ưu hóa cho bộ nhớ tối thiểu
VM là dựa trên register-based, và chạy các lớp đã được biên dịch bởi một trìnhbiên dịch Java để chuyển đổi thành các định dạng dex Các VM Dalvik dựa vàonhân Linux cho các chức năng cơ bản như luồng và quản lý bộ nhớ thấp
1.3.5 Linux kernel
Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi nhưsecurity, memory management, process management, network stack, and drivermodel 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 stack
1.4 Sơ lược về Web service
1.4.1 Khái niệm về Web Service :
Theo định nghĩa của W3C (World Wide Web Consortium), Web Service
là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa cácứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung
và sự gắn kết của nó được mô tả bằng XML Dịch vụ Web là tài nguyên phầnmềm có thể xác định bằng địạ chỉ URL, thực hiện các chức năng và đưa ra cácthông tin người dùng yêu cầu Một dịch vụ Web được tạo nên bằng cách lấy cácchức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và cóthể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu thôngtin từ dịch vụ Web khác Nó bao gồm các mô đun độc lập cho hoạt động củakhách hàng và doanh nghiệp và bản thân nó được thực thi trên server
Trang 151.4.2 Đặc điểm của Web Service :
1.4.2.1 Đặc điểm chung :
- Web Service cho phép client và server tương tác được với nhau ngay cảtrong những môi trường khác nhau
- Phần lớn kỹ thuật của web service được xây dựng dưa trên mã nguồn mở
và được phát triển theo các chuẩn đã được công nhận
- Là sự kết hợp của việc phát triển theo hướng từng thành phần vớinhững lĩnh vực cụ thể và cơ sở hạ tầng Web, đưa ra những lợi ích cho cảdoanh nghiệp, khách hàng, những nhà cung cấp khác và cả những cá nhânthông qua mạng Internet
- Một ứng dụng được triển khai đều hoạt động theo mô hình client-server
- Web service có ứng dụng thực tế rộng rãi trong các lĩnh vực dịch vụchọn lọc và phân loại tin tức, ứng dụng cho các dịch vụ du lịch, bán hang quamạng, tỉ giá, chứng khoán, các dịch vụ giao dịch trực truyến như đặt vé máy bay,tàu xe
1.4.2.2: Ưu điểm và nhược điểm của Web Service :
+ Ưu điểm :
- Cung cấp khả năng hoạt động rộng lớn với các ứng dụng phần mềm khác nhau chạy trên các nền tảng khác nhau
- Sử dụng các giao thức và các chuẩn mở Giao thức và định dạng
dữ liệu theo dạng text, thuận lợi cho người phát triển ứng dụng
- Nâng cao khả năng tái sử dụng
- Thúc đẩy đầu tư các hệ thống phần mềm đa tồn tại bằng cách cho phép các tiến trình/ chức năng nghiệp vụ đóng gói trong giao diện web service
- Tạo mối tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các hệ thống phân tán
Trang 16- Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống.
+ Nhược điểm :
- Có quá nhiều chuẩn cho dịch vụ web khiến người dùng khó nắm bắt
- Cần quan tâm hơn nhiều về vấn đề bảo mật
- Các giao thức được thay đổi và nâng cấp, đòi hỏi ứng dụng của client phải được nâng cấp, thay đổi
1.5 Giới thiệu về Google Places API :
Google Places API là dịch vụ web cung cấp cho người dùng trả về thông tincác địa điểm được tìm kiếm.Định nghĩa bên trong API này là cơ sở, vị trí địa lý,các địa điểm nổi bật bằng cách sử dụng các yêu cầu thông qua HTTP Các địađiểm này được xác định bằng cách thông qua tọa động vĩ độ/kinhđộ(latitude/longitude)
4 chức năng chính của Google Places API :
Place Searches : trả về danh sách các địa điểm gần với vị trí của
người dùng đang tìm kiếm
Place Details request : trả về chi tiết các thông tin về 1 địa điểm
đang tìm kiếm
Place Check-ins cho phép các báo cáo rằng người dùng đã tìm
kiếm về địa điểm này Mục đích nhằm đánh giá phổ biến những nơihay được tìm kiếm
Place Reports cho phéo thêm mới 1 địa điểm đến Place service Và
xóa 1 địa điểm mà bạn đã thêm vào
1.5.1 Chứng thực :
Được sử dụng với mục đích chứng thực cho Google biết rằng ứng dụngđang sử dụng Place service.Sau khi chứng thực, google sẽ cung cấp 1 key sẽđược sử dụng trong chương trình
Cách đăng kí lấy API Key :
Trang 17 Vào đường link sau :https://code.google.com/apis/console và đăng nhập bằng gmail.
Google sẽ tạo ra cho bạn 1 API Project trong lần đăng nhập đầu tiên
Sau đó bạn click vào Status để bật Place Service lên
Cuối cùng click vào API access tab bạn sẽ nhận được key do Google cung cấp
Các hạn chế và những yêu cầu :
Google hạn chế người dùng về mức độ truy vấn như sau :
Các ứng dụng sử dụng API key chỉ được truy vấn tối đa 1000 request trên
24 giờ
Với những ứng dụng mà người phát triển đã để lại danh tính thì được phéptruy vấn tối đa 100 000 request trên 24 giờ bằng cách xác định thông qua 1 thẻtin dụng Tuy tin người phát triển không phải trả phí cho việc này
Nếu muốn hiển thị dữ liệu của Places API trên bản đồ thì bản đồ đó phải doGoogle cung cấp sẵn và tính chính xác khi tìm kiếm trong 1 khu vực nhỏ khôngcao
1.5.2 Kết quả trả về sau khi tìm kiếm :
Kết quả tìm kiếm trả về phụ thuộc vào output mà nhà phát triển cung cấptrong câu lệnh tìm kiếm Có thể là file Xml hoặc Json Kết quả tìm kiếm trả vềcác địa điểm mà Google API tìm kiếm được, người phát triển sẽ tùy chọn hiển thịthông tin lên ứng dụng
Kết quả tìm kiếm chứa 3 phần tử sau :
“status” : trạng thái tìm kiếm Nó có thể là các loại sau đây
OK : không có lỗi xảy ra trong quá trình tìm kiếm Tìm kiếm thành công
ZERO_RESULT : Tìm kiếm thành công nhưng không có kết quả nào được tìm thấy
Trang 18 OVER_QUERY_LIMIT : quá số lượng truy vấn.
REQUEST_DENIED : thiết tham số bắt buộc phải truyền vào
INVALID_REQUEST :tham số truyền vào bị lỗi
“results” : là 1 danh sách các kết quả trả về Danh sách trả vê gồm có
Icon : chứ url đến hình ảnh hiển thị địa điểm tìm kiếm
Id : mỗi địa điểm chứa 1 id duy nhất
Geometry : chứa cặp thông số lat/long về vị trí tìm kiếm
Name : tên địa điểm
Reference : dùng để tìm kiếm chi tiết về địa điểm này
Types[]: các kiểu tìm kiếm được thêm vào trong kết quả
Vicinity : Tên đường của khu vực đó
Html_attributions : chứa tập hợp các thuộc tính về bảng kết quả này được hiển thị cho người dùng
1.6 Giới thiệu các công cụ sử dụng trong đồ án :
- Android SDK và eclipse là hai công cụ phổ biến cần thiết cho các lập trìnhviên Android trên máy tính
- Chúng ta có thể sử dụng hosting của nhiều hãng nổi tiếng trên thế giới nhưIpage,Just host, Blue host…
- Joomla là hệ quản trị cơ sở dữ liệu mà chúng ta sẽ sử dụng để quản lýthông tin trên server
Trang 21CHƯƠNG 2: XÂY DỰNG MỘT ỨNG DỤNG ANDROID
2.1 Tại sao sử dụng hệ điều hành Android
2.1.1 Tiềm năng phát triển của Android
Hiện nay, cùng với sự phát triển của thị trường điên thoại di động thìcũng có rất nhiều các hãng cho ra các sản phẩm hệ điều hành với nhiều ưu điểmriêng biệt của mình như Android, Samsung bada, Windows phone, Symbian,Blackberry, … Nhưng theo một số thống kê cho thấy hên điều hành được giớilập trình và người sử dụng ưa chuộng nhất là Android
ICTnews – Nền tảng Android của Google đang phát triển mạnh mẽ và
đứng đầu trên thị trường di động Có rất ít dấu hiệu cho thấy sẽ có một nền tảngnào khác đánh bật được Android khỏi vị trí này
Trong vài năm qua, Android đã tạo được một vị trí thống trị vững chắctrên thị trường điện thoại di động Và 2012 có lẽ là một năm may mắn nhất đốivới nền tảng này Theo công ty nghiên cứu thị trường IDC, Android sẽ chiếm61% thị trường trong năm nay và sẽ vẫn chiếm tới gần 53% thị phần vào năm2016
Với thương hiệu vững chắc, sự hợp tác từ nhiều hãng sản xuất điện thoại
và với số lượng lớn Android vẫn là nền tảng đứng đầu trên thị trường di động Vànhững điều sau đây sẽ không thay đổi trong một vài năm tới
Số lượng các hãng sản xuất di động Android rất lớn
Con số về các thiết bị Android được bày bán và đang được sử dụng là mộtbằng chứng đơn giản và rõ ràng nhất về sự thành công của nền tảng này Hiện cóhàng trăm (nếu không muốn nói là hàng nghìn) các thiết bị di động khác nhauchạy Android từ smartphone đến máy tính bảng và các sản phẩm dành cho doanhnghiệp Phủ trên thị trường với nhiều loại sản phẩm là một cách rất khôn ngoan
để chiếm thị phần
Apple chỉ có 3 thiết bị
Trang 22Trong khi đó, đối thủ cạnh tranh chính của Android là iOS lại đang chỉ xuấthiện trên iPhone, iPad và iPod Touch Mặc dù nền tảng này đang rất phổ biến vàthu lại rất nhiều lợi nhuận cho Apple nhưng iOS của Apple khó có thể theo kịpAndroid của Google chỉ với 3 sản phẩm.
Sự suy giảm của RIM
RIM từ lâu đã là một “cái gai’ bên cạnh nền tảng Symbian của Nokia vàWindows Mobile Tuy nhiên, trong năm qua, thị phần của RIM đã tụt xuống chỉcòn 6% và theo dự đoán của IDC, con số này còn tiếp tục giảm tới năm 2016 Sựsuy giảm của RIM lại tạo ra nhiều thuận lợi cho Android
BYOD
BYOD(Bring Your Own Device), cho phép nhân viên sử dụng thiết bị riêngcủa họ trong môi trường làm việc đã trở thành một trong những xu thế có ảnhhưởng lớn Mặc dù iPhone là một trong những sản phẩm tiêu dùng phổ biến nhấttại các văn phòng làm việc, nhưng Android cũng đang có một số thành công với
xu hướng này Với BYOD, Android sẽ có thêm nhiều cơ hội mở rộng thị trường
Microsoft có ít cơ hội cạnh tranh
Microsoft được cho là có cơ hội tốt nhất để một ngày nào đó có thể vượtqua Android Hệ điều hành Windows Phone của Microsoft cũng có cùng một loạichiến lược cấp phép cho các nhà sản xuất như Android Tuy nhiên, theo công tynghiên cứu thị trường IDC,đến năm 2012, hệ điều hành này mới chỉ có thể tậphợp được 5,2% thị phần Với khả năng cạnh tranh kém của Microsoft, một trongnhững đối thủ có tiềm năng nhất, Android vẫn còn nhiều thời gian để chiếm lĩnhthị trường di động
Google hỗ trợ tốt các đối tác
Nền tảng Android của Google sẽ không là gì cả nếu Google không có sự hỗtrợ các đối tác sản xuất di động Với chính sách này, Google đã thu hút được rấtnhiều đối tác trong những năm qua Một khi đã tham gia vào thế giới củaAndroid, các nhà sản xuất di động sẽ được khuyến khích đầu tư càng nhiều càngtốt vào nền tảng này Đó là một bước đi thông minh giúp Google có được nhữngthị phần rộng lớn
Trang 23Giá trị thương hiệu của Google
Và một yếu tố vô cùng quan trọng tác động đến thành công của Androidchính là giá trị thương hiệu của Google Thương hiệu này được cả khách hàng vàcác đối tác tin cậy Đó cũng là một lý do chủ yếu khác khiến các nhà sản xuấtsmartphone đầu tư vào nền tảng này và là một động lực khuyến khích kháchhàng mua sản phẩm chạy hệ điều hành Android Nếu không có khối tài nguyên
và ảnh hưởng to lớn với thị trường của Google, Android sẽ không thể thành côngnhư ngày hôm nay
Doanh nghiệp đang dần quan tâm đến Android
Cách đây không lâu Android vẫn không phải là hệ điều hành được nhữngngười quản lý công nghệ thông tin tại các doanh nghiệp quan tâm Tuy nhiên,gần đây mọi thứ đã thay đổi đáng kể Thế giới doanh nghiệp đang dần chấp nhậnAndroid và để mắt tới những thiết bị chạy hệ điều hành này
2.1.2 Sức mạnh của Android :
Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản2.6 dành cho cácdòng điện thoại SmartPhone Đầu tiên được ra đời bởi công tyliên hợp Android, sau đó được Google mua lại và phát triển từ năm 2005 và trở
Trang 24thành một hệ điều hành di động mã nguồn mở,miễn phí, mạnh mẽ và được ưachuộng cao trên thế giới.
Hệ điều hành android một hệ điều hành rất mạnh mạnh, có bảo mật cao,
hỗ trợ được nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi tương thíchvới nhiều phần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu như keyboard, touch vàtrackball Android là hệ điều hành di động nên có khả năng kết nối cao với cácmạng không dây Hỗ trợ công nghệ OpenGL nên có khả năng chơi các phươngtiện media, hoạt hình cũng như trình diễn các khả năng đồ họa khác cực tốt, làtiền đề để phát triển các ứng dụng có giao diện phức tạp chẳng hạn như là các tròchơi
Android liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lầnandroid được tối ưu hóa để hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ thêmcông nghệ mới Chẳng hạn như theo một đánh giá thì android phiên bản 2.2 hoạtđộng nhanh hơn bản 2.1 tới 450% Hiện nay, phiên bản mới nhất 4.0 phát hành6/2012 và đang tiếp tục được cập nhật
Năm 2008, hệ điều hành android đã chính thức mở toàn bộ mã nguồn,điều đó cho phép các hãng điện thoại có thể đem mã nguồn về tùy chỉnh, thiết kếlại sao cho phù hợp với mỗi mẫu mã điện thoại của họ và điều quan trọng nữa là
hệ điều hành mở này hoàn toàn miễn phí, không phải trả tiền nên giúp họ tiếtkiệm khá lớn chi phí phát triển hệ điều hành Những điều đó là cực kỳ tốt khôngchỉ đối với các hãng sản xuất điện thoại nhỏ mà ngay cả với những hãng lớn nhưSamsung, HTC
2.1.3 Tính Năng của Android :
- Storage (Lưu trữ): Android sử dụng SQLlite - một CSDL quan hệ nhỏ
để lưu trữ DL có cấu trúc
- Kết nối (Connectivity): Android hỗ trợ GSM/EDGE, IDEN, CDMA,EV-DO, UMTS, Bluetooth (bao gồm A2DP and AVRCP), WiFi, LTE, vàWiMAX
Trang 25- Tin nhắn: Android hỗ trợ cả tin nhắn dạng SMS (Short MessageServices) và MMS (Multimedia Messaging Service).
- Tích hợp Trình duyệt Web (Web Browser): Dựa trên các bộ Webkit mãnguồn mở (open Webkit) cùng với GoogleChrome V8 javascript
- Hỗ trợ truyền trông (Media Support): Android hỗ trợ các định dạng âmthanh, video phổ biến và các định dạng ảnh như: MPEG4, H.264, MP3, AAC,AMR, JPG, PNG, GIF…
- Hỗ trợ phần cứng (Hardware Support): Accelerometer Sensor, Camera,Digital Compass, Proximity Sensor, và GPS
- Cảm ứng đa chạm (Multil Touch)
- Đa tác vụ (Multil Task)
- Hỗ trợ Flash: Android 2.3 hỗ trợ Flash 10.1
- Tethering (Chia sẽ kết nối internet tới các thiết bị khác)
2.1.4 So sánh Android với hệ điều hành khác :
Android được xây dựng mở để cho phép các nhà phát triển để tạo
ra các ứng dụng di động hấp dẫn tận dụng tất cả các chức năng một chiếc điệnthoại đã cung cấp Một ứng dụng có thể gọi bất kỳ chức năng lõi sẵn có của thiết
bị hiện tại như thực hiện cuộc gọi, gửi tin nhắn… Android được xây dựng trênnhân Linux Hơn nữa, nó sử dụng một máy ảo tuỳ chỉnh được thiết kế để tối ưuhóa bộ nhớ và tài nguyên phần cứng với nhiều thư viện mở rộng
Với android khái niệm phần mềm lõi của điện thoại và các phần mềmđược cung cấp bởi hãng thứ 3 là không còn ranh giới Một chương trình do ngườidùng tự viết sẽ không khác gì so với phần mềm đi cùng máy do cả 2 đều có toànquyền sử dụng và triệu gọi các dịch vụ nền tảng của chiếc máy điện thoại vậnhành trên nền Android
Android cung cấp cách tiếp cận thống nhất cho việc phát triển ứng dụng.Người phát triển chỉ cần phát triển ứng dụng cho Android và tất cả các ứng dụngcủa họ sẽ chạy trên các thiết bị cầm tay khác được trang bị HĐH Android
Android là thực sự là một nền tảng đa nhiệm Các nền tảng khác cũng cóthể làm được điều này tuy nhiên việc quản lý đa nhiệm của chúng có phần khókhăn và kém khả thi
Trang 26Android cho phép xây dựng các ROM tuỳ biến cho Android, điều nàymang lại khả năng tuỳ biến cao hơn
Android cho phép thay đổi các cài đặt nhanh hơn Với các HĐH khácngười dùng thường gặp rắc rối với các thiết lập hệ thống mỗi khi họ muốn sửdụng các thiết bị Android thì cho phép bạn sử dụng các widget để quản lý cáccài đặt trực tiếp từ màn hình chính, những cài đặt ít được sử dụng có thể không
có widget riêng, tuy nhiên cũng có thể tạo shortcut trên màn hình chính để có thểtruy cập ngay đến các thiết lập khi muốn thay đổi
Đồng bộ với máy tính và bộ nhớ, người dùng Android có thể copy dữ liệuvào thẻ nhớ, đưa vào máy Ngoài ra, việc đồng bộ với máy tính cũng đơn giảnhơn, thêm vào đó Android cũng hỗ trợ Flash, pin và thẻ nhớ có thể tháo rời và dễdàng thay mới, nâng cấp
2.2 Cách thức xây dựng một ứng dụng Android
2.2.1 Android Emulator
Android SDK và Plugin Eclipse được gọi là một Android Deverloper Tool(ADT) Các Android coder sẽ cần phải sử dụng công cụ IDE (IntegratedDevelopment Enveronment) này để phát triển, debugging và testing cho ứngdụng Tuy nhiên, các coder 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/) đượcphát triển bởi Fabrice Bellard
Trang 27về phiên bản SDK cũng như main activity sẽ chạy đầu tiên.
File này được tự động sinh ra khi tạo một Android project Trong filemanifest bao giờ cũng có 3 thành phần chính đó là: application, permission vàversion
• Application
Thẻ <application>, bên trong thẻ này chứa các thuộc tính được định nghĩa
cho ứng dụng Android như:
android:icon = “drawable resource” Ở đây đặt đường dẫn đến file
icon của ứng dụng khi cài đặt VD: android:icon = “@drawable/icon”
Trang 28 android:name = “string” thuộc tính này để đặt tên cho ứng dụng
Android Tên này sẽ được hiển thị lên màn hình sau khi cài đặt ứngdụng
android:theme = “drawable theme” thuộc tính này để đặt theme cho
ứng dụng Các theme là các cách để hiển thị giao diện ứng dụng
Ngoài ra còn nhiều thuộc tính khác…
• Permission
Bao gồm các thuộc tính chỉ định quyền truy xuất và sử dụng tài nguyên củaứng dụng Khi cần sử dụng một loại tài nguyên nào đó thì trong file manifest củaứng dụng cần phải khai báo các quyền truy xuất như sau:
File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được
sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng dụng vàcác tài nguyên hình ảnh
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nàoxảy xa làm thay đổi các thuộc tính trong ứng dụng Chẳng hạn như, bạn kéo vàthả một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đườngdẫn đến file đó cũng sẽ được hình thành trong file R.java hoặc xoá một file hìnhảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xoá
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cảquá trình xây dựng ứng dụng
2.2.3 Chu kỳ ứng dụng Android
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho ứngdụng khi codes cần được run và sẽ còn chạy cho đến khi:
Trang 29• Nó không phụ thuộc.
• Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khácMột sự khác thường và đặc tính cơ bản của Android là thời gian sống củatiế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 một kết hợp của:
• Những phần của ứng dụng mà hệ thống biết đang chạy
• Những phần quan trọng như thế nào đối với người dùng
Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống
a Chu kỳ sống thành phầ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úcbắ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 activies nó có thể visible hoặcinvisible
Hình 2.2 Chu kỳ sống của một ứng dụng Android
b Activity Stack
Bên trong hệ thống các activity được quản lý như một activity stack Khimột Activity mới được start, 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 thấy trong suốtquá 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ểnlên và trở thành active
Trang 30Hình 2.3 Activity stack
c Các trạng thái của chu kỳ sống
Hình 2.4 Chu kỳ sống của Activity
Trang 31Một Activity chủ yếu có 3 chu kỳ chính sau:
• Active hoặc running: Khi Activity là được chạy trên màn hình Activitynày tập trung vào những thao tác của người dùng trên ứng dụng
• Paused: Activity là được tạm dừng (paused) khi mất focus nhưng ngườidùng vẫn trông thấy Có nghĩa là một Activity mới ở trên nó nhưng khôngbao phủ đầy màn hình 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 trạngthá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
d Chu kỳ sống của ứng dụng
Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành phầnđều có một chu trình sống riêng Và ứng dụng chỉ được gọi là kết thúc khi tất cảcác thành phần trong ứng dụng kết thúc Activity là một thành phần cho phépngười dùng giao tiếp với ứng dụng Tuy nhiên, khi tất cả các Activity kết thúc vàngười dùng không còn giao tiếp được với ứng dụng nữa nhưng không có nghĩa làứng dụng đã kết thúc Bởi vì ngoài Activity là thành phần có khả năng tương tácngười dùng thì còn có các thành phần không có khả năng tương tác với ngườidùng như là Service, Broadcast receiver Có nghĩa là những hành phần khôngtương tác người dùng có thể chạy background dưới sự giám sát của hệ điều hànhcho đến khi người dùng tự tắt chúng
e Các sự kiện trong chu kỳ sống của ứng dụng
Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống có thể bỏ thông
tin khác của nó từ vùng nhớ bởi việc finish() (gọi hàm finish() của nó), hoặc đơn
giản giết tiến trình của nó Khi nó được hiển thị lần nữa với người dùng, nó phảiđược hoàn toàn restart và phục hồi lại trạng thái trước Khi một Activity chuyểnqua chuyển lại giữa các trạng thái, nó phải báo việc chuyển của nó bằng việc gọihàm transition
Trang 32Hình 2.5 Các sự kiện trong chu kỳ sống của ứng dụng
Tất cả các phương thức là những móc nối mà bạn có thể override để làmtương thich công việc trong ứng dụng khi thay đổi trạng thái Tất cả các Activity
bắt buộc phải có onCreate() để khởi tạo ứng dụng Nhiều Activity sẽ cũng hiện thực onPause() để xác nhận việc thay đổi dữ liệu và mặt khác chuẩn bị dừng hoạt
động với người dùng
f Thời gian sống của ứng dụng
Bảy phương thức chuyển tiếp định nghĩa trong chu kỳ sống của mộtActivity Thời gian sống của một Activity diễn ra giữa lần đầu tiên gọi
onCreate() đến trạng thái cuối cùng gọi onDestroy() Một Activity khởi tạo toàn
bộ trạng thái toàn cục trong onCreate(), và giải phóng các tài nguyên đang tồn tại trong onDestroy().
g Thời gian hiển thị của Activity
Visible lifetime của một activity diễn ra giữa lần gọi một onStart() cho đến khi gọi onStop() Trong suốt khoảng thời gian này người dùng có thể thấy
activity trên màn hình, có nghĩa là nó không bị foreground hoặc đang tương tácvới người dùng Giữa 2 phương thức người dùng có thể duy trì tài nguyên đểhiển thị activity đến người dùng
h Các phương thức của chu kỳ sống
• 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à …
Trang 33 Phương thức này gửi qua một đối tượng Bundle chứa đựng từ trạng thái
trước của Activity
Luôn theo sau bởi 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()
Đượ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ốngtạm thởi bị hủy diệt để tiết kiệm vùng nhớ
Trang 34 Bạn có thể phân biệt giữa 2 kịch bản với phương isFinshing().
Trạng thái của activity có thể được giết bởi hệ thống
2.2.4 Các thành phần giao diện trong Android
a View
Trong một ứng dụng Android, giao diện người dùng được xây dựng từ cácđối tượng View và ViewGroup Có nhiều kiểu View và ViewGroup Mỗi mộtkiểu là một hậu duệ của class View và tất cả các kiểu đó được gọi là các Widget.Tất cả mọi widget đều có chung các thuộc tính cơ bản như là cách trình bày
vị trí, background, kích thước, lề,… Tất cả những thuộc tính chung này được thểhiện hết ở trong đối tượng View
Trong Android Platform, các screen luôn được bố trí theo một kiểu cấu trúcphân cấp như hình dưới Một screen là một tập hợp các Layout và các widgetđược bố trí có thứ tự Để thể hiện một screen thì trong hàm onCreate của mỗiActivity cần phải được gọi một hàm là setContentView(R.layout.main); hàm này
sẽ load giao diện từ file XML lên để phân tích thành mã bytecode
Hình 2.6 Các sự kiện trong chu kỳ sống của ứng dụng
Trang 35b ViewGroup
ViewGroup thực ra chính là View hay nói đúng hơn thì ViewGroup chính
là các widget Layout được dùng để bố trí các đối tượng khác trong một screen
Có một số loại ViewGroup như sau:
• LinearLayout
LinearLayout được dùng để bố trí các thành phần giao diện theo chiềungang hoặc chiều dọc nhưng trên một line duy nhất mà không có xuống dòng.LinearLayout làm cho các thành phần trong nó không bị phụ thuộc vào kíchthước của màn hình Các thành phần trong LinearLayout được dàn theo những tỷ
lệ cân xứng dựa vào các ràng buộc giữa các thành phần
Hình 2.7 Bố trí các widget sử dụng LinearLayout
FrameLayout được dùng để bố trí các đối tượng theo kiểu giống như là cácLayer trong Photoshop Những đối tượng nào thuộc Layer bên dưới thì sẽ bị chekhuất bởi các đối tượng thuộc Layer nằm trên FrameLayer thường được sử dụngkhi muốn tạo ra các đối tượng có khung hình bên ngoài chẳng hạn như contactimage button
Trang 36Hình 2.8 Bố trí các widget trong FrameLayout
• AbsoluteLayout
Layout này được sử dụng để bố trí các widget vào một vị trí bất kì tronglayout dựa vào 2 thuộc tính toạ độ x, y Tuy nhiên, kiểu layout này rất ít khi đượcdùng bởi vì toạ độ của các đối tượng luôn cố định và sẽ không tự điều chỉnhđược tỷ lệ khoảng cách giữa các đối tượng Khi chuyển ứng dụng sang một mànhình có kích thước với màn hình thiết kế ban đầu thì vị trí của các đối tượng sẽkhông còn được chính xác như ban đầu
• RetaliveLayout
Layout này cho phép bố trí các widget theo một trục đối xứng ngang hoặcdọc Để đặt được đúng vị trí thì các widget cần được xác định một mối ràng buộcnào đó với các widget khác Các ràng buộc này là các ràng buộc trái, phải, trên,dưới so với một widget hoặc so với layout parent 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 screen thiết bị.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 đíchgiảm lượng tài nguyên sử dụng khi load đồng thời đẩy nhanh quá trình xử lý
Trang 37Hình 2.9 Bố trí widget trong RetaliveLayout
• TableLayout
Layout này được sử dụng khi cần thiết kế một table chứa dữ liệu hoặc cần
bố trí các widget theo các row và column Chẳng hạn như, giao diện của mộtchiếc máy tính đơn giản hoặc một danh sách dữ liệu