Tổng quan hệ điều hành Android. Sử dụng JSON giao tiếp giữa Android và Web Server. Ứng dụng thực đơn điện tử trên Android cho nhà hàng Café Nến. Sự bùng nổ và phát triển mạnh mẽ của công nghệ đã và đang khiến con người khó có thể thiếu đi chiếc điện thoại của mình. Nhu cầu trao đổi thông tin ngày càng tăng cùng với nhu cầu sử dụng sản phẩm công nghệ cao nhiều tính năng thông minh. Do đó việc xây dựng các ứng dụng cho điện thoại di động đang là một ngành công nghiệp mới đầy tiềm năng và hứa hẹn nhiều sự phát triển vượt bậc của ngành khoa học kĩ thuật.
Trang 1Em xin gửi lời cám ơn chân thành nhất tới tất cả các thầy, cô giáo trườngĐại học Công nghệ Thông tin & Truyền thông - Đại học Thái Nguyên nói chung
và các thầy cô giáo trong Bộ môn Công nghệ phần mềm nói riêng đã tận tìnhgiảng dạy, trang bị cho em vốn kiến thức cũng như những kinh nghiệm quý báu
để em có thể đạt được kết quả tốt nhất trong học tập cũng như trong công việccủa em sau này
Cuối cùng em xin cảm ơn sự giúp đỡ, động viên của gia đình, bạn bèdành cho em trong suốt thời gian qua
Do thời gian và điều kiện có hạn nên đồ án không tránh khỏi những thiếusót, em rất mong nhận được sự góp ý từ bạn bè, thầy cô và những người quantâm đến đồ án này
Thái Nguyên, tháng 09 năm2013
Sinh viênNguyễn Trọng Quân
Trang 2LỜI CAM ĐOAN
Em xin cam đoan:
Những nội dung trong báo cáo này là do em thực hiện dưới sự hướng dẫn
trực tiếp của thầy giáo hướng dẫn : ThS Nguyễn Văn Việt.
Mọi tham khảo dùng trong báo cáo đều được trích dẫn rõ ràng tên tác giả,tên công trình, thời gian, địa điểm công bố
Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo em xin chịu hoàntoàn trách nhiệm
Thái nguyên, tháng 09 năm 2013
Sinh viên
Nguyễn Trọng Quân
Trang 3MỤC LỤC
TỔNG QUAN 7
1 Sơ qua tình hình nghiên cứu trong và ngoài nước 7
2 Tính cấp thiết của đề tài 7
3 Mục tiêu của đề tài 8
CHƯƠNG 1 TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID 9
1.1 Lịch sử android 9
1.2 Delving với máy ảo Dalvik 19
1.3 Kiến trúc của Android 19
1.3.1 Tầng ứng dụng 20
1.3.2 Application framework 21
1.3.3 Library 22
1.3.4 Android Runtime 23
1.3.5 Linux kernel 23
1.4 Xây dựng Android Project 24
1.4.1 Android Emulator 24
1.4.2 Các thành phần trong Android Project 24
1.4.3 Các thành phần tạo nên một ứng dụng Android 29
CHƯƠNG 2 SỬ DỤNG JSON GIAO TIẾP GIỮA ANDROID VÀ WEB SERVICE 37
2.1 Tìm hiểu JSON 37
2.2 Sử dụng PHP chuyển đổi CSDL MySQL thành cấu trúc JSON 40
2.2.1 Cấu trúc JSON 40
2.2.2 Kết nối Android với PHP, MySQL 42
Trang 4CHƯƠNG 3 ỨNG DỤNG THỰC ĐƠN ĐIỆN TỬ TRÊN ANDROID CHO NHÀ
HÀNG CAFE NẾN 47
3.1 Khảo sát 47
3.1.1 Giới thiệu 47
3.1.2 Đặc tả bài toán 47
3.2 Phân tích hệ thống 48
3.2.1 Đặc tả hệ thống 48
3.2.2 Biểu đồ User Case 48
3.2.3 Biểu đồ lớp 50
3.2.4 Đặc tả Use Case 51
3.2.5 Cơ sở dữ liệu WebService 56
3.3 Một số hình ảnh Demo 57
KẾT LUẬN 58
TÀI LIỆU THAM KHẢO 59
NHẬN XÉT CỦA GIÁO VIÊN 60
Trang 5DANH MỤC HÌNH ẢNH
Hình 1-1: Các thành viên trong Liên minh về thiết bị cầm tay mã nguồn mở
(Open Handset Alliance) 9
Hình 1-2: Android phiên bản 1.1 11
Hình 1-3: Android phiên bản 1.5 12
Hình 1-4: Android phiên bản 1.6 12
Hình 1-5: Android phiên bản 2.0 13
Hình 1-6: Android phiên bản 2.2 14
Hình 1-7: Android phiên bản 2.3 15
Hình 1-8: Android phiên bản 3.0 15
Hình 1-9: Android phiên bản 4.0 16
Hình 1-10: Android phiên bản 4.1 17
Hình 1-11: Biểu đồ phân phối các phiên bản 18
Hình 1-12: Cấu trúc stack hệ thống Android 20
Hình 1-13: Các thành phần của applications 20
Hình 1-14: Các thành phần của Application framework 21
Hình 1-15: Các thành phần của Native Libraries 22
Hình 1-16: Các thành phần trong Android Runtime 23
Hình 1-17: Các driver trong Linux Kernel 23
Hình 1-18 :Android emulator 24
Hình 1-19: Cấu trúc một Project trong Android 25
Hình 1-20: Ngăn xếp Activity 30
Hình 1-21 Chu kì sống của Activity 31
Hình 1-22 Chu kì sống của service 34
Hình 1-23: Truyền thông giữa hai tiến trình 34
Hình 1-24 Content Provider 35
Hình 1-25Ứng dụng Contacts sử dụng Contacts Provider để lấy dữ liệu 35
Hình 1-26: Intent 36
Hình 2-1 JSONObject 38
Hình 2-2 JSONArray 38
Hình 2-3 JSONValue 38
Trang 6Hình 2-4 JSONString 39
Hình 2-5 JSONNumber 39
Hình 2-6: JSONObject và JSONArray 41
Hình 2-7 JSONConnect 42
Hình 3-1 : Mô hình v n hành h thốngâ ê 48
Hình 3-2 User use case 49
Hình 3-3 Restaurant use case 49
Hình 3-4 Biểu đồ lớp 50
Hình 3-5 Biểu đồ liên kết các Activity 51
Hình 3-6 Biểu đồ trình tự Use case Select menu 52
Hình 3-7 Biểu đồ cộng tác UC Select menu 52
Hình 3-8 Biểu đồ trình tự Use case Choose food 53
Hình 3-9 Biểu đồ cộng tác UC Choose food 54
Hình 3-10 Biểu đồ trình tự Use case Order 55
Hình 3-11 Biểu đồ cộng tác UC Order 56
Hình 3-12 Menu chính 57
Hình 3-13 Menu món chính 57
Hình 3-14 Menu đồ uống 56
Hình3-15 Menu món tráng miệng 56
Hình 3-16 Xử lý gọi món 56
Trang 7TỔNG QUAN
1 Sơ qua tình hình nghiên cứu trong và ngoài nước.
Mạng điện thoại di động xuất hiện tại Việt Nam từ đầu những năm 1990
và theo thời gian số lượng các thuê bao cũng như các nhà cung cấp dịch vụ diđộng tại Việt Nam ngày càng tăng Do nhu cầu trao đổi thông tin ngày càng tăng
và nhu cầu sử dụng sản phẩm công nghệ cao nhiều tính năng, cấu hình cao, chấtlượng tốt, kiểu dáng mẫu mã đẹp, phong phú nên nhà cung cấp phải luôn luôncải thiện, nâng cao những sản phẩm của mình Do đó việc xây dựng các ứngdụng cho điện thoại di động đang là một ngành công nghiệp mới đầy tiềm năng
và hứa hẹn nhiều sự phát triển vượt bậc của ngành khoa học kĩ thuật
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ểnmạ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útrên các hệ điều hành di động cũng phát triển mạnh mẽ và đang thay đổi từ ngày.Các hệ điều hành J2ME, Android, IOS, Hybrid, Web based Mobile Application
đã rất phát triển trên thị trường truyền thông di động, nhưng đáng kể nhất chính
là hệ điều hành Android ra đời với sự kế thừa những ưu việt của các hệ điềuhành ra đời trước và sự kết hợp của nhiều công nghệ tiên tiến nhất hiện nay, đãđược nhà phát triển công nghệ rất nổi tiếng hiện nay là Google Android đãnhanh chóng là đối thủ cạnh tranh mạnh mẽ với các hệ điều hành trước đó vàđang là hệ điều hành di động của tương lai và được nhiều người ưa chuộng nhất
2 Tính cấp thiết của đề tài.
Sự bùng nổ và phát triển mạnh mẽ của công nghệ đã và đang khiến conngười khó có thể thiếu đi chiếc điện thoại của mình Cùng với sự phát triển đóthì những ứng dụng trên di động càng ngày càng trở nên cần thiết Đặc biệt lậptrình ứng dụng Android là một không gian mới hay một thử thách mới với nhữngngười lập trình bởi nó hoàn toàn xa lạ và có nhiều cơ hội cho mọi người thử sức
Trang 8Là sinh viên, khi thực hiện đề tài, tìm hiểu, nghiên cứu về lĩnh vực mớinày, em tin sẽ học hỏi được nhiều kiến thức mới, nhiều kinh nghiệm thiết thựchơn và có thể áp dụng vào thực tế, đem lại hiệu quả trong công việc sau này.
3 Mục tiêu của đề tài.
Qua thời gian thực hiện đề tài, em tin rằng sẽ nắm được những điểmquan trọng trong hệ điều hành Android, thu được nhiều kiến thức, kỹ năng vàkinh nghiệm trong việc lập trình ứng dụng trên thiết bị di động Nắm được cácyếu tố nền tảng và phát triển được phần mềm ứng dụng thực đơn điện tử
Cụ thể:
- Nghiên cứu về hệ điều hành Android
- Nghiên cứu JSON để liên kết ứng dụng Android với CSDL MySQL
- Xây dựng các tính năng cơ bản cho ứng dụng: Thực đơn điện tử cho nhàhàng Cafe Nến trên HĐH Android
Trang 9CHƯƠNG 1 TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID 1.1 Lịch sử android.
Android Incorporation được thành lập ở Palo Alto, California, UnitedStates vào tháng 10 năm 2003 bởi Andy Rubin: đồng sáng lập Danger Inc(Danger Inc là một công ty độc quyền trong các nền tảng, phần mềm, thiết kế, vàdịch vụ cho thiết bị di động cầm tay), Rich Miner : đồng sáng lập WildfireCommunications Inc, Nick Sears : từng là phó chủ tịch của T-Mobile, and ChrisWhite : trưởng nhóm thiết kế và phát triển giao diện tại WebTV Khi đó, có rất ítthông tin về các công việc của Android, ngoại trừ việc họ đang phát triển phầnmềm cho điện thoại di động Cũng tại thời điểm đó, Rubin đã gặp phải một sốvấn đề về tài chính Sau đó Android Inc đượcGoogle mua lại vào tháng 8/2005
Vào tháng 11/2007, sau 2 năm phát triển, Google công bố hệ điều hànhđiện thoại di động mã nguồn mở Android, cùng với sự thành lập “Liên minh diđộng mở” (Open Handset Alliance) bao gồm hơn 78 nhà sản xuất phần cứngđiện thoại lớn trên thế giới như Intel, HTC, China Mobile, T-Mobile,
Hình 1-1: Các thành viên trong Liên minh về thiết bị cầm tay mã nguồn mở (Open Handset Alliance)
Mục tiêu của liên minh này là nhanh chóng đổi mới để đáp ứng tốt hơncho nhu 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
Trang 10Android 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.
Android là hệ điều hành mã nguồn mở trên điện thoại di động phát triểnbởi Google dựa trên nền tảng Linux Mã nguồn của Android được công khai theobản cấp phép Apache Hệ điều hành Android bao gồm 12 triệu dòng mã; 3 triệudòng XML, 2.8 triệu dòng mã C, 2.1 triệu mã Java và 1.75 triệu dòng mã C++.Các ứng dụng cho Android được viết dựa trên ngôn ngữ Java
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
Các phiên bản Android:
Android 1.0: Ra mắt: ngày 10/2008.
HTC Dream là dòng smartphone thương mại dùng Android đầu tiên vớikiểu dáng trượt kèm bàn phím vật lý Phiên bản Android 1.0 chưa được Googleđịnh hình tên mã, dù trước đó tên gọi Astro Boy hay Bender được gán cho thế hệđầu tiên này
Android 1.0 rất nguyên sơ, tích hợp sẵn khả năng đồng bộ dữ liệu với cácdịch vụ trực tuyến của Google như Gmail, Google Calendar và Contacts, mộttrình phát media, hỗ trợ Wi-Fi và Bluetooth, thanh trạng thái hiển thị các thông
Trang 11báo ứng dụng và một ứng dụng chụp ảnh (camera) tuy chưa cho phép thay đổi
độ phân giải và chất lượng ảnh
Android 1.1: Ra mắt: ngày 2/2009.
Hình 1-2:
Andr oid phiê
n bản 1.1
Bên cạnh con số, Google rục rịch đưa hệ thống tên gọi (tên mã) vào cácphiên bản Android Tuy chưa chính thức áp dụng nhưng Android 1.1 đã có tênPetit Four Không bao gồm nhiều tính năng, phiên bản này bổ sung một số chứcnăng mới cho Google Maps hiển thị chi tiết hơn, bàn phím ảo gọi điện thoại đã
có thể hiển thị hoặc ẩn khi gọi, chương trình SMS cho phép người dùng lưu tậptin đính kèm Android 1.1 sửa một số lỗi trong Android 1.0
Android 1.5: Cupcake: Ra mắt: ngày 30/4/2009.
Cupcake, tên mã đầu tiên áp dụng cho phiên bản Android Cupcake mangnhiều tính năng mới như bàn phím ảo có khả năng dự đoán từ đang gõ, từ điển từngữ do người dùng đặt ra, hỗ trợ widget trên giao diện chủ, quay phim và phátlại video clip, lược sử thời gian cuộc gọi, chế độ tự động xoay màn hình theo
Trang 12hướng sử dụng (screen rotation) Trình duyệt web trong Cupcake có thêm khảnăng sao chép/ dán (copy/paste).
Hình 1-3:
Andr oid phiê
n bản 1.5
Ngoài ra, phiên bản này cho phép người dùng hiển thị hình ảnh trongdanh bạ, một điểm thú vị mà hầu hết người dùng điện thoại di động muốn có.Màn hình chuyển đổi và hình ảnh khi khởi động máy được làm mới
Android 1.6: Donut: Ra mắt: ngày 15/9/2009.
Donut khắc phục các chức năng "lỏng lẻo" trong Cupcake, mở rộng chứcnăng tìm kiếm bằng giọng nói và ký tự đến bookmark và danh bạ AndroidMarket trở thành "chợ đầu mối" để người dùng tìm kiếm và xem các ứng dụngAndroid Ứng dụng chụp ảnh và quay phim trong Donut nhanh hơn Hệ điềuhành hỗ trợ màn hình có độ phân giải lớn hơn, hướng đến các thế hệ smartphonemàn hình lớn
Trang 13Hình 1-4: Android phiên bản 1.6
Android 2.0: Éclair: Ra mắt: ngày 26/10/2009.
Chỉ sau gần một tháng ra mắt Donut (Android 1.6), Google tung ra Eclair,phiên bản được nhận định là "bước đi lớn" của hệ điều hành này
Hình 1-5:
Andr oid phiê
n bản 2.0
Eclair cải tiến rất nhiều, từ giao diện đến ứng dụng bên trong hệ thống.Ứng dụng chụp ảnh tăng cường thêm chức năng zoom số (phóng to), cân bằngtrắng, hỗ trợ đèn flash và các hiệu ứng màu sắc
Trang 14Hệ thống hoạt động ổn định hơn, cải thiện khả năng xử lý, hỗ trợ kết nốiBluetooth tốt hơn, đặc biệt tùy chọn đồng bộ nhiều tài khoản Một điểm thuậntiện được đánh giá cao lúc bấy giờ là giao diện danh bạ cho phép nhấn chọn vàomột ảnh danh bạ để gọi, nhắn tin hay email đến họ Giao diện ứng dụng lịch biểu(Calendar) cũng thay đổi.
Eclair là phiên bản Android đầu tiên hỗ trợ ảnh nền động (live wallpaper)
dù tùy chọn này tiêu tốn khá nhiều pin
Android 2.2: Froyo: Ra mắt: ngày 20/5/2010.
Từ phiên bản 2.0 trở đi, Android dần hoàn thiện hơn Phiên bản 2.2(Froyo) mang Adobe Flash đến Android, kéo theo hàng loạt ứng dụng và gametrên nền Flash Người dùng cũng có thể xem video clip nền Flash như YouTube
và "ra lệnh" thực hiện cuộc gọi qua Bluetooth
Hình 1-6:
Andr oid phiê
n bản 2.2
Một chức năng mới trong Froyo được nhóm người dùng lưu động yêuthích là USB Tethering và Wi-Fi Hotspot, biến chiếc smartphone Android thành
Trang 15thiết bị phát sóng Wi-Fi từ kết nối 3G Tính năng này được sử dụng rất phổbiến đến ngày nay.
Lần đầu tiên Android cho phép cài đặt ứng dụng (app) lên thẻ nhớ SDthay vì mặc định cài ngay vào bộ nhớ trong của thiết bị Điểm "đầu tiên" nữatrong Froyo bao gồm mật khẩu đã hỗ trợ số và chữ số Thiết bị đầu tiên mangnhãn Froyo ra mắt thị trường là HTC Nexus One
Android 2.3: Gingerbread: Ra mắt ngày: 6/12/2010.
Đến cuối năm 2012, Gingerbread vẫn đang "phủ sóng" trên rất nhiều thiết
bị dùng Android, chiếm đến hơn phân nửa (54%) Google hợp tác Samsung trìnhlàng dòng smartphone đầu tiên sử dụng Gingerbread mang tên Nexus S, hỗ trợcông nghệ giao tiếp tầm gần NFC
Hình 1-7:
Andr oid phiê
n bản 2.3
Gingerbread đưa vào hệ thống một công cụ quản lý tải tập tin, cho phéptheo dõi và truy xuất đến các tập tin đã tải về máy Hệ thống này hỗ trợ nhiềucamera cho các thiết bị có camera mặt sau và trước, quản lý nguồn pin hiệu quả
Trang 16hơn, tiết kiệm thời lượng pin Phiên bản này khắc phục khá nhiều lỗi từ Froyo,kèm theo một số điều chỉnh trong giao diện người dùng (UI)
Android 3.0: Honeycomb: Ra mắt: ngày 22/2/2011.
Đây không chỉ là một phiên bản, mà có thể xem là một thế hệ Androidđầu tiên dành riêng cho máy tính bảng (tablet), ra mắt cùng tablet MotorolaXOOM
Hình 1-8:
Andr oid phiê
n bản 3.0
Mang những tính năng từ thế hệ Android 2.x, Android 3.0 cải tiến giaodiện phù hợp với cách sử dụng máy tính bảng, bàn phím ảo thân thiện hơn, hỗtrợ xử lý đa tác vụ (multi-tasking), cho phép chuyển đổi qua lại các ứng dụngđang cùng chạy Không chỉ có bề mặt được trau chuốt, phần lõi hệ thống có cáccải tiến tương thích với phần cứng như hỗ trợ chip xử lý (CPU) đa lõi, tăng tốcphần cứng
Android 3.0 đặt nền móng quan trọng cho thế hệ Android 4.x hợp nhất,khắc phục sự phân mảng của Android (có các phiên bản riêng dành chosmartphone và tablet)
Trang 17 Android 4.0: Ice Cream Sandwich: Ra mắt: ngày 19/10/2011.
"Bánh kem sandwich" (ICS) là thế hệ Android được mong đợi nhất đếnnay, ra đời cùng dòng smartphone "bom tấn" Samsung Galaxy Nexus, thế hệsmartphone đầu tiên trang bị ICS
Hình 1-9: Android phiên bản 4.0
Android 4.0 đưa chức năng truy xuất nhanh các ứng dụng thường dùngvào phần bên dưới giao diện chủ, tùy biến widget, dễ sắp xếp và duyệt danh sáchứng dụng hơn Các ứng dụng đã có thể truy xuất nhanh từ màn hình khóa thiết bị(Lock screen), hiện các hãng sản xuất thiết bị chỉ mới cho phép Camera có thểchọn nhanh từ Lock screen
Ice Cream Sandwich hoạt động mượt mà, nhanh và đẹp hơn
Android 4.1: Jelly Bean: Ra mắt: 9/7/2012.
Máy tính bảng Nexus 7, sản phẩm hợp tác giữa Google và Asus, là thiết
bị dùng Jelly Bean đầu tiên ra mắt Android 4.1 nâng tầm hoạt động cho hệ điềuhành của Google, Và trở thành hệ điều hành cho thiết bị di động hàng đầu hiệnnay
Khả năng sắp xếp giao diện chủ và widget trong Jelly Bean rất tùy biến vàlinh hoạt Hệ thống hỗ trợ dịch vụ ví điện tử Google Wallet, đặc biệt trình duyệt
Trang 18web mặc định trong Android được thay thế bởi đại diện tên tuổi: Chrome, vớikhả năng đồng bộ dữ liệu theo tài khoản với bản Chrome trên máy tính.
Hình 1-10:
Andr oid phiê
n bản 4.1
Jelly Bean giới thiệu Google Now, dịch vụ trực tuyến mới hiện chỉ dành choAndroid, một phụ tá ảo đắc lực cho công việc sắp xếp lịch trình, tìm kiếm thôngtin, xác định vị trí Rất đa năng và được xem như lời đáp trả của Google với
"phụ tá ảo" Apple Siri trong iOS
Android 4.2: vẫn là Jelly Bean: Ra mắt: tháng 11/2012.
Chỉ sau gần năm tháng ra mắt Android 4.1, Google tiếp tục bồi thêm sứcnặng cho Android với phiên bản 4.2 và vẫn mang tên mã Jelly Bean
Android 4.2 tiếp tục mang đến những cải tiến hấp dẫn cho ứng dụng chụpảnh (Camera) như HDR, Photo Sphere, hiệu ứng ảnh, Google Now, đưa tínhnăng lướt chọn từ rất hay trong bàn phím ảo Chức năng "bom tấn" hỗ trợ nhiều
tài khoản người dùng (multi-user profile) lần đầu tiên được áp dụng trong
Android 4.2 nhưng chỉ có người dùng máy tính bảng thừa hưởng chức năng này
Trang 19Bảng dưới đây cho biết quá trình phát hành các phiên bản của android.Chỉ số phân phối mức độ sử dụng các phiên bản dưới đây được thống kê vàongày 02/06/2012.
Hình 1-11: Biểu đồ phân phối các phiên bản.
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 thi
Trang 20Dalvik (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à Dalvik ởđảo Eyjafjö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
Hình 1-12: Cấu trúc stack hệ thống Android
Trang 211.3.1 Tầng ứng dụng.
Hình 1-13: Các thành phần của applications.
Nằm ở tầng trên cùng của kiến trúc android Bao gồm các ứng dụng cầnthiết cơ bản được tích hợp sẵn như: contacts, browser, camera, Phone, … cũngnhư các ứng dụng mà chúng ta download và cài đặt thêm từ Google Play hay cácứng dụng được viết tại tầng này Tất cả các ứng dụng chạy trên hệ điều hànhAndroid đều có các đặc tính sau:
Được viết bằng java, có phần mở rộng là apk
Mỗi khi một ứng dụng chạy lại có một máy ảo riêng vì vậy mã nguồncủa ứng dụng chạy cô lập với mã nguồn của ứng dụng khác
Hệ điều hành Android là hệ điều hành đa nhiệm, do đó tại một thờiđiểm có nhiều ứng dụng chạy, tuy nhiên mỗi ứng dụng chỉ có duy nhấtmột thực thể được chạy Việc này có tác dụng hạn chế sự lạm dụng tàinguyên, giuos hệ thống hoạt động hiệu quả hơn Các ứng dụng đưuọcphân quyền và sẽ bị hệ thống hủy bỏ nếu mức ưu tiên thấp
Android là hệ điều hành có tính mở, nó cho phép ứng dụng của bênthứ ba chạy nền Tuy nhiên các ứng dụng chỉ được phép sử dụngkhông quá 5~10% công suất CPU để tránh đuộc quyền sử dung CPU
1.3.2 Application framework.
Hình 1-14: Các thành phần của Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp chocá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ángtạ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
Trang 22đ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ôngbáo để các thanh trạng thái, và 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
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ôngphải là mã nguồn, chẳng hạn như: localized strings, graphics, and layout 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 Manager được dùng để quản lý chu trình sống của ứng dụng và điềuhướng các activity
1.3.3 Library.
Hình 1-15: Các thành phần của Native Libraries
Android bao gồm một tập hợp các thư viên C/C++ được sử dụng bởinhiều thành phần khác nhau trong hệ thống Android Điều này được thể hiệnthô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:
Trang 23 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ên Linux
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 filehì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ần mềm 3D
FreeType– Vẽ phông chữ bipmap và vector.
SQLite– Một công cụ hỗ trợ thao tác trên CSDL một cách mạnh mẽ, gọn
nhẹ cho tất cả các ứng dụng
1.3.4 Android Runtime.
Hình 1-16: Các thành phần trong Android Runtime
Android runtime nằm cùng tầng với các thư viện Bao gồm một tập hợpcác thư viện cơ bản mà cung cấp hầu hết các chức năng có sẵn trong các thư việnlõi của ngôn ngữ lập trình Java Cho phép các nhà phát triển viết các ứng dụngandroid bằng ngôn ngữ java
Android runtime bao gồm một máy ảo Dalvik và thư viện lõi Máy ảoDalvik cho phép các ứng dụng Android chạy trong tiến trình riêng Dalvik là mộtmáy ảo chuyên dụng đã được viết để cho một thiết bị có thể chạy nhiều máy ảohiệu quả Các VM Dalvik thực thi các tậ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áclớp đã được biên dịch bởi một trình biên dịch Java để chuyển đổi thành các địnhdạng dex Các VM Dalvik dựa vào nhân Linux cho các chức năng cơ bản nhưluồng và quản lý bộ nhớ thấp
Trang 241.3.5 Linux kernel.
Hình 1-17: Các driver trong 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ưquản lí bộ nhớ, quản lí tiến trình, bảo mật và diều khiển mọi hoạt động của thiệt
bị Thực tế Kernel Linux này đã được sửa đổi và nâng cấp để phù hợp với cácthiết bị cầm tay như hạn chế về bộ xử lí, dung lượng bộ nhớ thấp, kích thướcmàn hình hẹp, nhu cầu kết nối mạng không dây…
1.4 Xây dựng Android Project.
1.4.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ộtthiế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
Trang 25phát triển bởi Fabrice Bellard Hình dưới đây mô tả một Android emulator:
Hình 1-18 :Android emulator
1.4.2 Các thành phần trong Android Project.
Khi lập trình viên phát triển một project mới trên nền tảng Android hệthống được sắp xếp theo cấu trúc hình cây thư mục giống với các Project trongngôn ngữ Java Cấu trúc cơ bản được mô tả trong hình sau Ngoài ra lập trìnhviên có thể dễ dàng thêm các gói, các nguồn tài nguyên, các phiên bản updatecần thiết cho ứng dụng của mình, họ chỉ việc copy vào các thư mục tương ứnghoặc khởi tạo các thư mục mới nếu cần thiết
Trang 26Hình 1-19: Cấu trúc một Project trong Android
- AndroidManiFest.xml Là một File XML chứa các mô tả về ứng dụng và
các Compoment-Actives, Services, Permission,… và những gì được cung cấpbởi ứng dụng
- Res/ Lưu trữ tài nguyên cho ứng dụng như các hình ảnh các biểu tượng,
GUI layout…, sẽ được đóng gói trong quá trình biên dịch ứng dụng Java
- Assets/ Chứa các tập tin tĩnh cần thiết cho việc triển khai vào thiết bị, thư
mục này sẽ được đóng gói trong quá trình biên dịch
- Thư mục chứa các gói hỗ trợ cho ứng dụng
- Src/ Lưu trữ mã nguồn Java của ứng dụng.
- Default.propertices Một tệp tin thuộc tính được sử dụng bởi Ant để xây
dựng Script
- Bind/ Thư mục được khởi tạo khi ứng dụng được biên dịch.
- Libs/ Chứa thư viện Java JARs cần thiết cho ứng dụng.
Trang 27Khi khởi tạo một ứng dụng tài nguyên tĩnh cần thiết cho ứng dụng được
lưu trữ trong thư mục Res/ các tài nguyên này sẽ được đóng gói cùng với ứng
dụng Trong thư mục này có thêm các thư mục sau
- Res/drawable/ Thư mục chứa các tệp tin hình ảnh (*.PNG,*.JPEG,…).
- Res/layout/ Chứa các tệp tin xml chỉ ra các thành phần giao diện người
- Res/values Chứa các xâu, kích thước và các giá trị tương tự.
- Res/xml Chứa các tệp tin xml đa mục đích, lập trình có thể thỏa trí thêm
các compoment cần thiết, các file định nghĩa các giao diện người dùng cần thiết
Khi biên dịch project kết quả sẽ được lưu lại trong thư mục bin/ Thư mục này
bao gồm các thành phần sau
- Bin/classes/ Chứa các lớp Java đã được biên dịch.
- Bin/classes.hex Chứa các lớp thực thi đã được biên dịch từ các lớp Java.
- Bin/yourapp.ap_ yourapplà tên của ứng dụng Tệp này chứa các tài
nguyên cần cho ứng dụng được đóng gói dưới dạng tệp Zip
- bin/yourapp-debug.apk hoặc bin/yourapp-unsigned.apk là ứng dụng Android thực tế yourapp là tên của ứng dụng.
AndroidManifest.xml
Trong bất kì một project Android nào khi tạo ra đều có một fileAndroidManifest.xml, file này được dùng để định nghĩa các screen sử dụng, cácpermission cũng như các theme cho ứng dụng Đồng thời nó cũng chứa thông tin
về 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 file manifestbao giờ cũng có 3 thành phần chính đó là: application, permission và version
Trang 28Dưới đây là nội dung của một file AndroidManifest.xml:
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”
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 ứng dụng
Trang 29android: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
Cụ thể những công việc mà AndroidManifest.xml thực hiện:
- Đặt tên cho Java package của ứng dụng
- Mô tả các thành phần (component) của ứng dụng: activity, service, broadcast receiver hoặc content provider
- Thông báo những permission mà ứng dụng cần có để truy nhập các protectedAPI và tương tác với các ứng dụng khác
- Thông báo những permission mà các ứng dụng khác cần có để tương tác vớiứng dụng hiện thời
- Thông báo level thấp nhất của Android API mà ứng dụng cần để chạy.(Android 1.6 level 4, 2.1 level 7, 2.2 level 8, 2.3.3 level 10… và mới nhất hiệnnay là Android 4.0.3 level 15)
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 ứngdụng Khi cần sử dụng một loại tài nguyên nào đó thì trong file manifest của ứngdụng cần phải khai báo các quyền truy xuất như sau:
Trang 30File 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
1.4.3 Các thành phần tạo nên một ứng dụng Android.
Các ứng dụng Android sẽ được xây dựng từ các thành phần cơ bản đó là:Activity, Service, Broadcast receiver, Content Provider và Intent-Activity
Activity
Activity là một thành phần ứng dụng cung cấp một màn hình mà ngườidùng có thể tương tác để làm một việc gì đó Chẳng hạn như quay số điện thoại,chụp ảnh, gửi email hoặc xem một bản đồ Một Activity có thể bắt đầu từ cácActivity khác.Bên trong hệ thống các Activity được quản lý như một ngăn xếp.Khi một Activity mới được bắt đầu thì nó được đặt ở đỉnh của ngăn xếp và trởtrành Activity đang chạy Activity trước sẽ ở bên dưới Activity mới và sẽ khôngthấ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ế tiếp của ngăn xếp sẽ di chuyển lên và trở thành active Hình dướiđâymô tả một ngăn xếp các Activity:
Trang 31Hình 1-20: Ngăn xếp Activity
Mỗi tiến trình chạy ứng dụng trên nền tảng Android được đặt trên mộtngăn xếp Khi sử dụng một Activity trên foreground thì tiến trình hệ thống sẽđưa Activity đó lên trên cùng của ngăn xếp và tiến trình trước đó sẽ được chuyểnxuống mức dưới Tất cả các Activity đều có khả năng bị dừng lại hoặc bị pháhủy bất cứ lúc nào bởi vì người sử dụng có thể thay đổi các Activity tùy theo ýthích của họ Chẳng hạn như: họ đang dùng Activity là một cuộc gọi và sau đó
họ dừng cuộc gọi và chuyển sang Activity khác là chụp ảnh, gửi email hay nhắntin SMS Nếu tiến trình Activity bị thoát ra khỏi foreground thì nó sẽ bị hủy.Hình dưới đây mô tả chu kỳ sống của Activity: