1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku

77 625 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 1,43 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Một chương trình do người dù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àn quyề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ận hành tr

Trang 1

LỜI CẢM ƠN

Sau một thời gian tìm hiểu về hệ điều về Hệ điều hành Android, em đã hoàn

thành đề tài: “Tìm hiểu hệ điều hành Android và xây dựng ứng dụng game Sudoku” Đề tài được hoàn thành nhờ sự cố gắng của bản thân, nhờ có sự hướng dẫn, chỉ bảo của thầy Trần Văn Khánh, cùng với sự giúp đỡ của bạn bè, của những

người đã có kinh nghiệm làm việc với Android Vì thời gian có hạn, cùng với kiếnthức hạn chế của mình, cho dù em đã cố gắng nhưng chắc chắn không tránh khỏi saisót Em rất mong nhận được sự góp ý của các thầy cô trong bộ môn cùng toàn thểcác bạn

Em xin chân thành cảm ơn!

Thái Nguyên, tháng 6 năm 2012

Sinh viên thực hiện

Trần Văn Toàn

Trang 2

LỜI CAM ĐOAN

Đồ án tốt nghiệp là sản phẩm tổng hợp kiến thức mà sinh viên đã học đượctrong suốt quá trình học tập tại trường đại học Ý thức được điều đó, với tinh thầnnghiêm túc, sự học tập miệt mài của bản thân và nhờ sự giúp đỡ của bạn bè, thầy cô

em đã hoàn thành xong đồ án tốt nghiệp của mình

Em xin cam đoan những kết quả trong đồ án “Tìm Hiểu HĐH Android và xây dựng ứng dụng game Sudoku” là sự nghiên cứu của em, không sao chép của

ai Nội dung đồ án có tham khảo, sử dụng tài liệu, thông tin từ một số nguồn đượctrích dẫn trong phần tài liệu tham khảo Nếu có gì sai lệch em xin hoàn toàn chịutrách nhiệm

Tác giả đồ án

Trần Văn Toàn

Trang 3

DANH MỤC CÁC BẢNG BIỂU

BẢNG 1.1 CÁC PHIÊN BẢN ANDROID ĐÃ PHÁT HÀNH 11

BẢNG 3.1 CHI TIẾT BẢNG FOLDER 66

BẢNG 3.2 CHI TIẾT BẢNG SUDOKU 67

DANH MỤC CÁC HÌNH ẢNH HÌNH 1.1 KIẾN TRÚC HĐH ANDROID 15

HÌNH 1.2 ANDROID BACK STACK 22

HÌNH 1.3 VÒNG ĐỜI CỦA ACTIVITY 23

HÌNH 1.4 CÀI ĐẶT ANDROID SDK 38

HÌNH 1.5 CÀI ĐẶT ANDROID ADT VÀO ECLIPSE 39

HÌNH 1.6 TÍCH HỢP ANDROID SDK VÀO ECLIPSE 40

HÌNH 1.7 TẠO ANDROID AVD 41

HÌNH 2.1 KHUÔN DẠNG GAME SUDOKU CHUẨN 43

HÌNH 2.2 BIỂU ĐỒ USE-CASE CỦA HỆ THỐNG 46

HÌNH 2.3 BIỂU ĐỒ TRÌNH TỰ UC SELECT NEW GAME 48

HÌNH 2.4 BIỂU ĐỒ CỘNG TÁC CHO UC NEW GAME 49

HÌNH 2.5 BIỂU ĐỒ TRÌNH TỰ UC SET CHECKPOINT 50

HÌNH 2.6 BIỂU ĐỒ CỘNG TÁC UC SET CHECKPOINT 51

HÌNH 2.7 BIỂU ĐỒ TRÌNH TỰ UC “UNDO TO CHECKPOINT” 53

HÌNH 2.8 BIỂU ĐỒ CỘNG TÁC UC “UNDO TO CHECKPOINT 54

HÌNH 2.9 BIỂU ĐỒ TRÌNH TỰ UC “GAME SETTING” 55

HÌNH 2.10 BIỂU ĐỒ CỘNG TÁC UC “GAME SETTING” 55

HÌNH 2.11 BIỂU ĐỒ TRÌNH TỰ UC “ADD NEW GAME” 57

HÌNH 2.12 BIỂU ĐỒ CỘNG TÁC UC “ADD NEW GAME” 58

HÌNH 2.13 BIỂU ĐỒ TRÌNH TỰ UC “ADD/EDIT DESCRIPTION” 60

HÌNH 2.14 BIỂU ĐỒ CỘNG TÁC UC “ADD/EDIT DESCRIPTION” 61

Trang 4

HÌNH 2.16 BIỂU ĐỒ CỘNG TÁC UC “FILTER GAME” 64

HÌNH 2.17 BIỂU ĐỒ LỚP CỦA HỆ THỐNG 65

DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ

Android SDK Android Software Development Kits(Bộ phát triển phần mềm Android)

ADT (Công cụ phát triển Android)Android Development Tool

AVD Android Virtual Devices(Thiết bị Android Ảo)

Trang 5

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

DANH MỤC CÁC BẢNG BIỂU 3

DANH MỤC CÁC HÌNH ẢNH 3

DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ 4

MỤC LỤC 5

MỞ ĐẦU 8

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 10

1.1 Android là gì 10

1.2 Lịch sử phát triển của Android 10

1.3 So sánh Android với các HĐH khác và Android với J2ME 11

1.3.1 Android so với các HĐH khác 11

1.3.2 Android so với J2ME 12

1.4 Các tính năng của Android 13

1.5 Nhược điểm của Android 13

1.6 Kiến trúc của HĐH Android 14

1.7 Cấu trúc của một project Android 18

1.7.1 File AndroidManifest.xml 18

1.7.2 File R.java 19

1.7.3 Các tài nguyên dùng trong một ứng dụng Android 19

1.8 Các thành phần cơ bản của 1 ứng dụng Android 20

1.8.1 Activity 20

1.8.2 Services 25

1.8.3 Broadcast Receiver 25

1.8.4 Content provider 26

1.8.5 Intent 27

1.8.6 Notification 29

Trang 6

1.9 Giao diện người dùng trong Android 30

1.9.1 Views và ViewGroup 30

1.9.2 Button 32

1.9.3 ListView và GridView 32

1.9.4 TextView, EditText 33

1.9.5 Menu 34

1.9.6 Bắt sự kiện giao diện người dùng 34

1.10 Multimedia trong Android 35

1.11 Network và CSDL SQLite trong Android 35

1.12 Các công cụ cần có để xây dựng 1 ứng dụng Android 36

1.13 Cài đặt Android 37

1.13.1 Cài đặt Java JDK 37

1.13.2 Cài đặt Eclipse 37

1.13.3 Cài đặt Android SDK 37

1.13.4 Tích hợp Android SDK vào Eclipse 39

1.13.5 Tạo Android Virtual Devices (AVDs) 40

CHƯƠNG 2 XÂY DỰNG ỨNG DỤNG GAME SUDOKU 42

2.1 Sơ lược về game Sudoku 42

2.1.1 Nguồn gốc 42

2.1.2 Luật chơi 43

2.2 Phân tích bài toán 44

2.2.1 Các yêu cầu 44

2.2.2 Đặc tả các chức năng của chương trình 45

2.2.3 Biều đồ UC 46

2.2.4 Kịch bản cho các UC chính 47

2.2.5 Biểu đồ lớp của hệ thống 65

CHƯƠNG 3 CÀI ĐẶT CHƯƠNG TRÌNH 66

3.1 Thiết kế cơ sở dữ liệu 66

Trang 7

3.2 Một số lớp chính trong chương trình 67

3.3 Một số hình ảnh về giao diện chương trình 68

3.3.1 Giao diện Folder List 68

3.3.2 Giao diện Sudoku List 69

3.3.3 Giao diện Sudoku Play 70

3.3.4 Giao diện Game setting 71

KẾT LUẬN 73

TÀI LIỆU THAM KHẢO 74

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 75

Trang 8

MỞ ĐẦU

Công nghệ các thiết bị di động đã phát triển mạnh mẽ chỉ trong một thời gianngắn, đặc biệt là với các dòng điện thoại thông minh Những chiếc điện thoại ngàycàng trở nên thông minh hơn, mạnh mẽ hơn, giá thành hạ, mẫu mã đẹp và bên cạnh

đó, chúng được trang bị những hệ điều hành mạnh mẽ Có thể kể đến một số Hệđiều hành phổ biến như Simbian, iOS, RIM, Window Mobile… Các hệ điều hànhnày đều có những tính năng mạnh mẽ, hỗ trợ tốt cho việc xây dựng ứng dụng chođiện thoại di động Một hệ điều hành ra đời sau, tuy nhiên đã gây được sự chú ý củangười dùng cũng như của các nhà phát triển ứng dụng đó là hệ điều hành Android.Android là một hệ điều hành mạnh mẽ không thua kém bất cứ hệ điều hành nào rađời trước đó Điều đặc biệt nhất phải kể đến đó là Android, là một nền tảng mãnguồn mở đầu tiên cho việc phát triển ứng dụng trên các thiết bị di động Với ưu thế

là mã nguồn mở, việc phát triển ứng dụng trên nền Android trở nên dễ dàng hơn vàđược hỗ trợ bởi các cộng đồng mã nguồn mở trên toàn thế giới

Ngày nay, do nhu cầu đời sống của con người ngày càng được nâng cao trong

đó nhu cầu giải trí được quan tâm tới nhiều nhất Chiếc điện thoại không chỉ đơnthuần là một phương tiện để nghe - gọi - nhắn tin nữa mà thêm vào đó là chức nănggiải trí như: nghe nhạc, đọc báo, lướt web Không khó để bắt gặp việc mọi ngườicầm điện thoại chơi game, đọc tin, nghe nhạc… ở mọi nơi, mọi lúc Một chiếc smartphone hỗ trợ đủ các tính năng như nghe nhạc, chơi game là sự lựa chọn của đa sốngười dùng Trong đó, các ứng dụng game là phong phú nhất, đa dạng nhất

Chính vì các lý do trên, em đã chọn đề tài “Tìm hiểu hệ điều hành Android

và xây dựng ứng dụng game Sudoku” cho đồ án tốt nghiệp của mình.

Nội dung chính của đồ án bao gồm:

CHƯƠNG I CƠ SỞ LÝ THUYẾT

Chương này trình bày các kiến thức cơ bản về hệ điều hành Android, cách tạomột ứng dụng trên nền Android, vòng đời của ứng dụng đó Đồng thời, chương này

Trang 9

cũng trình bày các công cụ cần thiết để xây dựng một ứng dụng cũng như cách càiđặt các công cụ này.

CHƯƠNG 2 XÂY DỰNG ỨNG DỤNG GAME SUDOKU

Chương này trình bày về nguồn gốc, các biến thể, luật chơi của game, quátrình khảo sát, phân tích và thiết kế ứng dụng game Sudoku

CHƯƠNG 3 CÀI ĐẶT CHƯƠNG TRÌNH

Chương này trình bày một số cài đặt cụ thể của chương trình

Trang 10

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT1.1 Android là gì

Một cách định nghĩa đầy đủ thì có thể coi Android là một nền tảng mở chothiết bị di động của Google (gồm hệ điều hành, middleware và một số ứng dụng cơbản) Bộ Android SDK (Software Development Kits – devkit) cung cấp các công cụ

và các API cần thiết để xây dựng các ứng dụng android sử dụng ngôn ngữ lập trìnhjava.

1.2 Lịch sử phát triển của Android

- Android là tên 1 công ty nhỏ được thành lập 10/2003 tại Palo Alto, bangCalifornia, Mỹ Vào 8/2005 Google mua lại công ty này Những nhà đồng sáng lậpcủa Android chuyển sang làm việc tại Google gồm có Andy Rubin (đồng sáng lậpcông ty Danger), Rich Miner (đồng sáng lập công ty Wildfire Communications),Nick Sears (từng là phó chủ tịch của T-Mobile), và Chris White (trưởng nhóm thiết

kế và phát triển giao diện tại WebTV

- Tại Google, nhóm do Rubin đứng đầu đã phát triển một nền tảng thiết bị diđộng dựa trên hạt nhân Linux, được họ tiếp thị đến các nhà sản xuất thiết bị cầm tay

và các nhà mạng trên những tiền đề về việc cung cấp một hệ thống mềm dẻo, có khảnăng nâng cấp mở rộng cao

- Google muốn Android trở thành 1 nền tảng mở và miễn phí, vì thế, đa sốcác mã nguồn android được xuất bản dưới giấy phép mã nguồn mở Bất cứ ai muốndùng Android cũng có thể download đầy đủ mã nguồn của nó Đó là một sản phẩmkết tinh từ ý tưởng của Khối Liên minh thiết bị cầm tay mở do Google dẫn đầu, gồm

34 thành viên với các công ty hàng đầu về công nghệ và di động toàn cầu như:Qualcomm, Intel, Motorola, Texas Instruments và LG Electronics, các nhà mạngnhư T-Mobile, Sprint Nextel, NTT DoCoMo và China Mobile…

- Các nhà phát triển có thể sử dụng miễn phí bộ Android SoftwareDevelopment Kit (SDK) để xây dựng các ứng dụng của mình

Trang 11

- 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 đượccung cấp bởi hãng thứ 3 là không còn ranh giới Một chương trình do người dù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àn quyề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ận hành trên nềnAndroid.

- 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ụng của

họ sẽ chạy trên các thiết bị cầm tay khác được trang bị HĐH Android

Trang 12

- 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

- Android cho phép xây dựng các ROM tuỳ biến cho Android, điều này manglạ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ác ngườidù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ácthiết bị Android thì cho phép bạn sử dụng các widget để quản lý các cà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, tuynhiên cũng có thể tạo Shortcut trên màn hình chính để có thể truy cập ngay đến cácthiế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ản hơn,thêm vào đó Android cũng hỗ trợ Flash, pin và thẻ nhớ có thể tháo rời và dễ dàngthay mới, nâng cấp

1.3.2 Android so với J2ME

a) Giống nhau

 Đều sử dụng nền tảng là ngôn ngữ lập trình java

 Đều sử dụng máy ảo và các API có sẵn cho các nhà phát triển ứngdụng

b) Điểm khác nhau

 J2ME (Java 2 Micro Edition) là một nhánh của ngôn ngữ lập trìnhJava để phát triển các ứng dụng trên điện thoại di động hay các thiết bịcầm tay nhỏ gọn khác Trong khi đó Android là một nền tảng gồmHĐH, ngôn ngữ lập trình và các phần mềm trung gian khác

 J2ME chạy trên các thiết bị di động có hỗ trợ java trong khi đóAndroid chạy trên nền tảng của HĐH Android J2ME đòi hỏi chương

Trang 13

trình phải nhỏ gọn do vậy bị hạn chế về bộ nhớ, kích thước file, đồhoạ, âm thanh, Android thì hỗ trợ tốt hơn.

 Android có thể can thiệp sâu vào phần cứng còn J2ME thì không Bêncạnh đó, J2ME biên dịch chương trình thành mã bytecode còn Androidbiên dịch thành định dạng dex, định dạng được tối ưu hoá cho việcgiảm dung lượng bộ nhớ

1.4 Các 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

- Tin nhắn: Android hỗ trợ cả tin nhắn dạng SMS (Short Message Services)

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)

1.5 Nhược điểm của Android

- Hệ điều hành bị phân mảnh: HĐH này vốn phân chia làm 2 nhánh, 1 cho

SmartPhone và 1 cho Tablet Hiện tại có 8 phiên bản Android trên thị trường, việc

Trang 14

phân mảnh này gây khó khăn cho việc cập nhật Android từ phiên bản bất kỳ lênphiên bản cao hơn.

- Có nhiều lỗ hổng bảo mật: Khi người sử dụng vô tình chấp nhận cài đặt 1

phần mềm độc hại nào đó, thiết bị chạy Android không có cách nào để tự bảo vệ.Mặc dù Google cũng đã đưa ra một vài biện pháp bảo vệ người dùng như gỡ bỏ tất

cả malware và tài khoản của các nhà phát triển liên quan trên Android Market nhưngđiều này vẫn chưa đủ đảm bảo Người dùng nên cài đặt các phần mềm bảo vệ đểtránh dính bẫy malware

1.6 Kiến trúc của HĐH Android

HĐH Android được xây dựng từ 5 thành phần nằm trong 4 tầng khác nhau:

Trang 15

Hình 1.1 Kiến trúc HĐH Android

- Nhân Linux (Linux Kenel): Android được xây dựng dựa trên nhân Linux

phiên bản 2.6 Thành phần này chứa tất cả các dịch vụ lõi của hệ thống như: quản lý

bộ nhớ, quản lý tiến trình, giao tiếp phần cứng, bảo mật và điều khiển mọi hoạtđộng của thiết bị Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux

đã được nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bịcầm tay như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhucần kết nối mạng không dây

- Thành phần thư viện (Libraries): bao gồm 1 tập các thư viện được viết bằng

C/C++ cung cấp những tính năng chính cho một hệ điều hành android Gồm một sốthư viện lõi như:

 SQLite: Hỗ trợ trong việc lưu trữ dữ liệu

 LibWebCore: Để xây dựng trình duyệt web, hỗ trợ nhiều công nghệmạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX…

Trang 16

 Thư viện 3D: Sử dụng để tăng tốc độ phần cứng xử lý 3D hoặc tối ưuhoá phần mềm 3D.

 Surface Manager: Quản lý việc hiển thị 2D và 3D

 Media Libraries: Hỗ trợ phát hoặc thu lại các định dạng hình ảnh, âmthanh, video thông dụng

 System C: Dựa trên thư viện C chuẩn sử dụng cho HĐH hoặc nhúngvào các thiết bị

 SGL: Cung cấp các công cụ đồ hoạ 2D cơ bản

- Android runtime: Thành phần này tại cùng một tầng với các thư viện, bao

gồm 1 tập các thư viên lõi cung cấp các chức năng sẵn có như trong thư viện lõi củangôn ngữ lập trình java, cho phép các nhà phát triển viết các ứng dụng android bằngcách sử dụng ngôn ngữ lập trình java Android runtime cũng bao gồm máy ảoDalvik, cho phép mọi ứng dụng android chạy trong tiến trình của mình Dalvik làmột máy ảo chuyên dụng được thiết kế đặc biệt cho android và tối ưu hóa cho cácthiết bị điện thoại di động với giới hạn bộ nhớ và CPU Dalvik thực thi file có địnhdạng là dex

- Bộ khung ứng dụng (Application framework): Bằng cách cung cấp 1 nềntả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 phong phú và sáng tạo Thành phần này đưa ra các khả năng khác nhaucủa HĐH và người phát triển có thể tự do tận dụng ưu điểm của thiết bị phần cứng,truy cập thông tin, chạy các dịch vụ nền, thêm thông báo trên các thanh trạng thái vànhiều hơn nữa Cho phép nhà phát triển truy cập đến các API dùng bởi ứng dụng lõi.Kiến trúc các ứng dụng được thiết kế để đơn giản hoá khả năng sử dụng lại của cácthành phần

- Thành phần ứng dụng: Nằm ở tầng trên cùng của kiến trúc Android Tại

tầng này ta có thể tìm thấy các ứng dụng có sẵn trong thiết bị Android, cũng như cácứng dụng mà chúng ta download và cài đặt từ Android Market hay các chương trìnhđược viết tại tầng này Các ứng dụng viết Android có những đặc tính sau :

Trang 17

 Viết bằng java và có phần mở rộng là apk.

 Khi mỗi ứng dụng được chạy thì có 1 Virtual Machine riêng vì vậy mãnguồn của ứng dụng được chạy trong sự cô lập với mã nguồn của cácứng dụng khác

 Theo mặc định, mỗi ứng dụng chạy trên một tiến trình Linux riêng củamình Android bắt đầu tiến trình khi bất kỳ thành phần nào của ứngdụng cần được thực thi sau đó tắt tiến trình nếu không cần thiết hoặckhi hệ thống cần khôi phục bộ nhớ cho các ứng dụng khác

 Hệ điều hành Android là hệ thống đa người dùng, mỗi ứng dụng thuộc

về người dùng khác nhau Do đó, theo mặc định, mỗi ứng dụng đượcgắn ID của người sử dụng nhằm phân quyền khi sử dụng tài nguyên,cấu hình phần cứng và hệ thống

 Android là hệ điều hành đa nhiệm, điều đó có nghĩa rằng, tại một thờiđiểm có thể có nhiều ứng dụng được chạy, tuy nhiên mỗi ứng dụng chỉ

có một thực thể (instance) duy nhất được chạy Điều đó có tác dụnghạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn Cácứng dụng được phân quyền và tự hệ thống sẽ hủy nếu mức ưu tiênthấp

 Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành

di động khác, Android cho phép một ứng dụng của bên thứ ba đượcphép chạy nền Các ứng dụng đó chỉ có một hạn chế nhỏ đó là nókhông được phép sử dung quá 5~10% công suất CPU, điều đó nhằm

để tránh độc quyền trong việc sử dụng CPU

Trang 18

1.7 Cấu trúc của một project Android

1.7.1 File AndroidManifest.xml

- AndroidManifest.xml là file yêu cầu phải có trong tất cả các ứng dụng

Android, nó được đặt ở thư mục gốc của ứng dụng và được tự động sinh ra ngay saukhi ta tạo 1 project mới Nó mô tả các biến toàn cục dùng trong gói ứng dụng, baogồm các thành phần ứng dụng như : Services, activity…

- Mỗi khi tạo ra 1 Activiy mới ta đều phải khai báo nó trong file này Mộtđiều quan trọng được đề cập đến trong file AndroidManifest.xml là IntenFilter CácFilter này mô tả khi nào, và ở đâu các Activiy có thể được bắt đầu Khi 1 Activityhay hệ điều hành muốn thực hiện 1 hành động nào đó như mở 1 trang web, hay mànhình contact nó tạo một đối tượng Intent Đối tượng Intent này có thể chứa vài thôngtin mô tả người dùng muốn làm gì, cần những dữ liệu gì để thực hiện và một sốthông tin khác Android sẽ so sánh các thông tin trong 1 đối tượng Intent với cácIntent Filter được khai báo trong file AndroidManifest.xml bởi mỗi ứng dụng và tìm

ra Activity phù hợp nhất để xử lý dữ liệu hoặc thực hiện 1 hành động cụ thể Nếu cónhiều Activity phù hợp với Intent đó thì người dùng sẽ được hỏi thành phần nào sẽđược thực hiện

- Cấu trúc của file AndroidManifest.xml được biểu diễn dưới dạng các tags.Một số tags cơ bản gồm:

 <manifest> : Là nút gốc của mỗi file AndroidManifest.xml, nó chứađựng các thuộc tính của gói ứng dụng

 <uses-permission> : Bao gồm các thuộc tính chỉ định quyền truyxuất và sử dụng tài nguyên của ứng dụng Khi cần sử dụng mộtloại tài nguyên nào đó thì trong file AndroidManifest xml của ứngdụng cần phải khai báo các quyền truy xuất

 <application> : Là phần tử gốc, chứa các khai báo, các thành phầnđược định nghĩa, sử dụng trong ứng dụng Android Nó cũng bao gồmcác thuộc tính chung hay mặc định cho ứng dụng như icon, theme,

Trang 19

 <activity> : Mỗi Activity phải có 1 <activity> tag với tên tương ứngtrong file Androidmanifest.xml nếu không chúng ta sẽ không thể chạy

nó Mỗi Activiy có thể chứa 1 hoặc nhiều Intent-Filter mô tả các hànhđộng mà Activity này hỗ trợ

 <intent-filter>: Mô tả các loại Intent mà một thành phần ứng dụng cóthể hỗ trợ Bên trong tag này có thể chứa nhiều tag khác như:

<action> , <category>, <data>, <meta-data>

 <service>: Một Services là một thành phần của ứng dụng và có thểchạy ở chế độ nền trong một khoảng thời gian tùy ý Cũng nhưActivity chúng ta cũng có thể khai báo <intent-filter>, <meta-data>cho mỗi Service

 <provider>: Một ContentProvider là một thành phần của ứng dụngquản lý các dữ liệu liên tục và cho phép các thành phần khác truy cậpđến nó Chúng ta có thể khai báo 1 hoặc nhiều <meta-data> cho mộtContentProvider

1.7.2 File R.java

- R.java là file tự sinh khi ta tạo một project, nó tự động tạo chỉ số và quản lý

các thuộc tính được khai báo trong file xml và các tài nguyên của ứng dụng (nhưhình ảnh, âm thanh…), tự động được cập nhật khi có thay đổi trong ứng dụng.Chúng ta sử dụng lớp này trong mã lệnh như một cách nhanh nhất để tham chiếuđến các tài nguyên đã khai báo trong ứng dụng

1.7.3 Các tài nguyên dùng trong một ứng dụng Android

- Các file tài nguyên của một ứng dụng có liên quan rất chặt chẽ tới fileR.xml, các thay đổi trong các file tài nguyên sẽ được tự động thay đổi trong R.xml

- Các file tài nguyên của ứng dụng Android là các file ngoài (không chứa mãlệnh) được sử dụng trong mã lệnh và biên dịch vào thời gian chạy của ứng dụng.Android hỗ trợ nhiều loại file tài nguyên như: xml, jpg, png, mp3… Các file xml córất nhiều cấu trúc khác nhau tùy thuộc vào mục đích sử dụng cũng như cách thức

Trang 20

môt tả nó Các tài nguyên dùng trong ứng dụng Android được tách rời với mã lênh,các file xml được biên dịch sang dạng nhị phân, một định dạng giúp cho việc load

dữ liệu nhanh và hiệu quả hơn, các dữ liệu String sẽ được nén vào các hình thức lưutrữ hiệu quả hơn

- Các file tài nguyên được lưu trong thư mục /res của ứng dụng android, baogồm một số loại sau :

 Các file giao diện, chứa trong thư mục /res/layout: Các file này mô tảcách thức bố trí của giao diện trong một Activity hay trong một thànhphần của giao diện người dùng

 Image file, đặt trong thư mục res/drawable: Android hỗ trợ các loạiảnh như jpg, png, gif

 Style, strings và arrays, chứa trong thư mục res/values

- Muốn sử dụng các tài nguyên đã định nghĩa trong các file xml của gói ứngdụng ta chỉ cần gọi đến id của nó

 Để gọi các tài nguyên của gói ứng dụng hiện tại, ta sử dụng cấu trúc:

- Activity là 1 thành phần của ứng dụng cung cấp 1 màn hình mà người dùng

có thể tương tác theo thứ tự để thực hiện việc gì đó như: thực hiện cuộc gọi, chụpảnh, gửi Email, xem bản đồ… Một của sổ ứng dụng thường lấp đầy màn hình nhưngcũng có thể nhỏ hơn hoặc nổi trên cùng của màn hình Một Activity có thể sử dụngcửa sổ bổ xung, ví dụ như một pop-up dialog gọi cho một đáp ứng người dùng ởgiữa của Activity, hay một cửa sổ biểu diễn những cho người dùng với thông tinquan trọng khi họ chọn một item cụ thể trên màn hình

Trang 21

- Một ứng dụng thường bao gồm 1 tập hợp các Activity được ràng buộc vớinhau Thông thường trong ứng dụng có 1 Activity được gọi là Activity chính,Activity này sẽ được hiện ra khi người sử dùng bắt đầu sử dụng ứng dụng MộtActivity có thể bắt đầu các Activity khác theo thứ tự thực hiện các hành động khácnhau Mỗi lần 1 Activity mới được bắt đầu thì các Activity trước bị dừng lại, hệthống bảo tồn các Activity này trong 1 ngăn xếp (gọi là backstack) Khi người dùngthao tác xong với Activity hiện tại và nhấn nút BACK thì Activity này bị huỷ vàActivity trước được khôi phục

- Giao diện người dùng cho các Activity được xây dựng bởi kiến trúc phâncấp các đối tượng View dẫn xuất từ lớp View Mỗi View chiếm một khoảng khônggian hình chữ nhật bên trong cửa sổ của Activity và có thể đáp ứng được các tươngtác người dùng Một cấu trúc phân cấp các view được gắn vào Activity thông quaphương thức: Activity.setContentView()

- Android cung cấp sẵn một số view cho phép người dùng sử dụng để thiết kế

và tổ chức các layout Widget là view cung cấp các thành phần trực quan và tươngtác cho màn hình như: button, textfield, checkbox hoặc chỉ là 1 hình ảnh…

- Layout là views được dẫn suất từ ViewGroup cung cấp một mô hình bố trínhất định cho các view con của nó như: linerLayout, GridLayout, RelativeLayout.Cách phổ biến để tạo ra layout cho ứng dụng là sử dụng file XML được lưu trongthư mục của ứng dụng Bằng cách này chúng ta có thể duy trì các thiết kế của giaodiện người dùng tách biệt với mã nguồn khai báo các hành vi của Activity

- Mỗi Activity phải được khai báo trong file AndroidManifest.xml MỗiActivity có thể truyền hay nhận dữ liệu từ Activity khác

- Một tác vụ trong một ứng dụng Android là một ngăn xếp các Activiy Khimột Activity mới được start, nó được đặt ở đỉnh của stack và trở thành activity đangchạy Activity trước sẽ ở bên dưới Activity mới và sẽ không thấy trong suốt quá trìnhactivity 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

Trang 22

Hình 1.2 Android Back Stack

* Vòng đời của 1 Activity:

 onCreate(): Được gọi khi hoạt động được tạo ra lần đầu tiên Luôntheo sau bởi onStart() Đây là lúc lập trình viên cần thiết lập tất cả cáccài đặt tĩnh cơ bản, như khởi tạo các view, ràng buộc dữ liệu vào danhsách

 onStart(): Được gọi ngay khi ứng dụng được nhìn thấy với ngườidùng Theo sau bởi onResume() nếu ứng dụng bắt đầu hoạt đông.Hoặc onStop() nếu ứng dụng bị ẩn đi

 onResume(): Được gọi ngay khi Activity tương tác với người dùng,lúc này Activity ở trên đỉnh của ngăn xếp luôn theo sau bởionPause()

 onPause(): Được gọi khi hệ thống bắt đầu khôi phục lại các activitykhác Phương thức này được dùng để thực hiện các thay đổi chưađược lưu, tạm dừng các hành vi có thể tiêu thụ CPU, theo sau bởi

Trang 23

OnResume khi Activity được khôi phục hoặc onStop() nếu nó trở nên

vô hình với người dùng

 onStop(): Được gọi khi ứng dụng không còn được nhìn thấy Hànhđộng này sảy ra khi nó bị huỷ hoặc Activity khác đã được khôi phục.Theo sau bởi onRestart() nếu Activity trở lại và tương tác với ngườidùng, hoặc theo sau là onDestroy() nếu ứng dụng kết thúc

 onDestroy(): Được gọi khi Activity bị huỷ Nó có thể được gọi khiActivity kết thúc hoặc hệ thống tạm thời phá huỷ nó để bảo tồn bộnhớ

onRestart(): Được gọi ngay khi Activity được bắt đầu trở lại Luôntheo sau bởi onStart()

Hình 1.3 Vòng đời của Activity

Trang 24

- Một Activity có thể gọi đến 1 Activity khác thông qua 1 Intent Việc gọiđến 1 Activity khác có thể có dữ liệu trả về từ Activity được gọi hoặc có thể khôngtrả về dữ liệu nào.

 Để gọi 1 Activity khác nhưng không cần trả về dữ liệu nào, ta dùngphương thức startActivity()

 Để gọi 1 Activity khác những cũng cần có DL trả về ta dùng phươngthức startActivityForResult() Khi đó, Activity được gọi sẽ trả lại DLcho Activity gọi nó sau khi hoàn thành qua phương thức finish().Activity ban đầu lấy dữ liệu được gửi tới bởi phương thức

onActivityResult()

* Các loại Activity

- ListActivity là 1 Activity hiển thị danh sách các items bằng cách liên kết với

1 nguồn dữ liệu như một mảng, một con trỏ và nắm bắt các sự kiện khi người dùngchọn 1 item trong danh sách Một ListActivity có một layout mặc định bao gồm 1danh sách đơn ở giữa của màn hình Tuy nhiên, nếu muốn chúng ta cũng có thể tùychọn giao diện bằng cách thiết lập layout của chúng ta với setContentView() trongphương thức onCreate()

- PreferenceActivity: Khi chúng ta xây dựng 1 ứng dụng Android, thông

thường chúng ta muốn có một số tùy chọn cho ứng dụng như: Cách thức hiện thị,giao diện tùy chọn, cài đặt ứng dụng hay chia sẻ thông tin với các thành phầnkhác… Các tùy chọn này sẽ được lưu trữ trong bộ nhớ trong của thiết bị gọi là cácShared Preferences Android cung cấp 1 số cơ chế để thực hiện việc này, một trong

số đó là lớp preferenceActivity Để làm được điểu này trước hết ta cần khai báo 1file xml chứa các Preferences file này được đặt trong thư mục res/xml Tiếp theo tacần tạo 1 Activity kế thừa từ lớp PreferenceActivity Trong phương thức onCreate()

ta gọi phương thức addPreferencesFromResource(int xmlResource) để gắn cácPreferences vào Activity Sau đó trong ứng dụng ta có thể truy cập đến các Shared

Trang 25

Preference thông qua tên của chúng như đã khai báo trong file xml bằng thuộc tính

“android:key”

1.8.2 Services

- Thành phần dịch vụ không cung cấp giao diện người dùng mà chỉ chạy ởchế độ nền, trong khoảng thời gian không xác định Các thành phần khác của ứngdụng có thể bắt đầu các dịch vụ và nó sẽ tiếp tục chạy dưới chế độ nền ngay cả khingười dùng chuyển sang 1 chế độ khác Một thành phần có thể tương tác với cácdịch vụ và thậm chí là thực hiện các tiến trình giao tiếp

Bound: Một service là Bound khi 1 thành phần liên kết đến nó bằng cách gọi bindService() Một Bound service cung cấp giao diện Client –

Server cho phép các thành phần tương tác với các dịch vụ, gửi yêucầu, nhận kết quả, hoặc làm tương tự như vậy với các tiến trình truyềnthông

1.8.3 Broadcast Receiver

- Một Broadcast Receiver là một thành phần nhận và đáp lại các thông báobroadcast trên toàn bộ hệ thống Nhiều broadcast được bắt nguồn từ hệ thống như:thông báo múi giờ thay đổi, pin yếu, ảnh đã được chụp, hay người dùng đã thay đổingôn ngữ… Các ứng dụng có thể tạo ra các broadcast, chẳng hạn để ứng dụng khácbiết được một số dữ liệu đã được tải về thiết bị và sẵn sàng cho việc sử dụng chúng

- Một ứng dụng có thể có một số Broadcast Receiver để đáp lại bất cứ thôngbáo nào mà nó cho là quan trọng Tất cả các Broadcast Receiver mở rộng từ lớp cơ

sở BroadcastReceiver Broadcast Receiver không hiển thị một giao diện người dùng

Trang 26

Tuy nhiên chúng có thể bắt đầu một activity để đáp lại thông tin mà chúng nhận, haychúng có thể sử dụng NotificationManager để cảnh báo người dùng Notifications cóthể lấy sự chú ý của người dùng bằng nhiều cách, lóe sáng đèn sau, rung, tạo ra âmthanh…

- Bởi vì hệ thống chạy mỗi ứng dụng trong một tiến trình riêng biệt với cácquyền truy cập file hạn chế truy cập các ứng dụng khác, ứng dụng của bạn có thểkhông trực tiếp kích hoạt một thành phần từ một ứng dụng khác Vì vậy, để kíchhoạt một thành phần trong ứng dụng khác, người dùng phải gửi một thông điệp tới

hệ thống xác định mục đích và bắt đầu 1 thành phần cụ thể Hệ thống sau đó kíchhoạt các thành phần này

- Để tạo ra một thành phần Broadcast Receiver ta có thể dùng 2 cách: khaibáo trong file AndroidManiFest.xml hoặc trong kế thừa lớp BroadcastReceiver trong

mã lệnh của chương trình

1.8.4 Content provider

- Content provider lưu trữ và lấy dữ liệu và làm cho nó có thể được truy cập

từ tất cả các ứng dụng Đây là cách duy nhất để chia sẻ dữ liệu giữa các ứng dụng,không có không gian lưu trữ chung mà các gói Android có thể truy cập Dữ liệu cóthể được lưu trữ trong hệ thống file, trong một cơ sở dữ liệu SQLite, hay trong mộtcách khác nào đó Content provider mở rộng lớp cơ sở ContentProvider để cài đặtmột tập các phương thức cho phép các ứng dụng khác lấy, thao tác và lưu trữ dữliệu mà không cần sử dụng nhiều lệnh SQL Tuy nhiên, các ứng dụng không gọi trựctiếp các phương thức này, chúng sử dụng một đối tượng ContentResolver được tạo

ra bằng cách gọi getContentResolver() bên trong hoạt động của Activity hay của cácthành phần ứng dụng, hoặc chúng ta cũng có thể tạo ra các Content Provider riêng

ContentResolver cr = getContentResolver();

- Content provider 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 dữ liệu nào chỉ cần cung cấp đường dẫn cho nó Đườngdẫn này gọi là URI Một đối tượng URI xác định duy nhất một tập dữ liệu Content

Trang 27

provider kiểm soát nhiều tập dữ liệu và đưa ra một đối tượng URI riêng biệt cho mỗitập dữ liệu đó Cấu trúc của một URI như sau:

<standard_prefix>://<authority>/<data_path>/<id>

Trong đó:

standard_prefix : Tiền tố chuẩn cho Content Provider, luôn là content://

authority: Tên của Content Provider, ví dụ : “contacts” trong ứng dụng

Contact của điện thoại Nếu là Content Provider của một hãng thứ ba thì nó

có thể là tên đầy đủ như: “com.wrox.provider” hay

- Một Intent là 1 mô tả trừu tượng của hành động sẽ được thực hiện Nó cóthể dùng với hàm startActivity() để khởi động 1 Activity, dùng broadcastIntent() đểgửi Intent đến bất kỳ thành phần BroadcastReceiver nào hoặc dùng với startServiceshoặc bindServices để giao tiếp với 1 dịch vụ chạy nền của hệ thống

- Có intent tường minh và trừu tượng:

 Intent tường minh (Explicit): thường được sử dụng trong các ứng dụng(như 1 lớp trong ứng dụng đó)

Trang 28

 Intent trừu tượng (Implicit): Không chỉ rõ tên lớp được gọi mà chỉ raaction được thực thi và cung cấp URL được dùng bởi action này KhiIntent trừu tượng được gửi tới hệ thống, Android sẽ tìm tất cả cáccomponent (Các activity) đã đăng ký action này (trong inten-filter) vớikiểu dữ liệu tương ứng Nếu chỉ tìm được một Component thì nó thựchiện luôn, ngược lại sẽ hiện ra màn hình cho người dùng chọn.Component nào sẽ được thực thi

- Các thành phần quan trọng của 1 Intent là:

 Action: Hành động chung sẽ được thực hiện, như: ACTION_VIEW,ACTION_EDIT, ACTION_MAIN

 Data: Dữ liệu được xử lý, như bản ghi thông tin liên lạc về 1 người trong cơ

sở dữ liệu Các data được xác định như một đôi tượng URI Một số cặp action/data như:

ACTION_VIEW content://contacts/people/1: Hiển thị thông tin về

người có định danh là 1

ACTION_DIAL content://contacts/people/1: Hiển thị màn hình quay số

gọi người có định danh là 1

ACTION_DIAL tel:123: Hiển thị màn hình quay số với số được điền

vào

ACTION_EDIT content://contacts/people/1: Chỉnh sửa thông tin về

người có định danh là 1

ACTION_VIEW content://contacts/people/: Hiển thị 1 danh sách người

trong danh bạ Sau đó có thể chọn 1 người cụ thể để xem thông tintrong một Intent mới

- Ngoài ra Intent còn có Các thuộc tính phụ như:

 Category: Cung cấp thêm thông tin về hành động sẽ được thực hiện,thông tin về nhóm của Action

Trang 29

 Chỉ định kiểu dữ liệu của Intent (chuẩn là MIME), thường được tựđộng xác định.

 Component: Chỉ định tên của 1 lớp thành phần cụ thể dùng Activity.Thông thường nó được bằng cách xem thông tin trong Intent và kếthợp với các thành phần có thể xử lý nó

 Extras: Sử dụng để mở rộng thông tin cho một thành phần nào đó Ví

dụ khi chúng ta có một hành động gửi một tin nhắn, chúng ta có thể sửdùng dữ liệu bổ xung để gửi kèm một tiêu đề

- Intent filter: Để thông báo cho hệ thống những Intent mà nó có thể xử lý.Các Activities, Services và Broadcast Receiver có thể có một hoặc nhiều Intentfilter Mỗi filter mô tả khả năng của các thành phần, tập các Intent mà các thành phần sẵn sàng nhận.

1.8.6 Notification

- Cung cấp thông báo cho các tình huống phát sinh cho người sử dụng Một

số sự kiện yêu cầu người sử dụng đáp ứng, một số khác thì không Ví dụ: Thông báolưu tập tin hoàn tất, thông báo cho người sử dụng biết ứng dụng đang chạy trong chế

độ nền, chờ đợi 1 thao tác được hoàn tất

- Có nhiều kỹ thuật khác nhau để hiển thị thông báo cho người dùng:

Toast Notification: Là một thông điệp dạng pop-up trên bề mặt của

cửa sổ Nó chỉ lấp đầy khoảng không gian vừa đủ cho thông điệp, chophép người dùng có thể nhìn thấy được ứng dụng đang chạy, nó tựđộng hiện và ẩn và không chấp nhận tương tác

Status Bar Notification: Liên tục hiển thị thông điệp và yêu cầu người

dùng thao tác Khi người dùng chọn thông điệp Android sẽ đưa ra 1Intent được xác định bởi notification (thường được dùng để bắt đầu 1Activity)

Dialog Notification: Hiển thị thông báo liên quan đến Activity Nó

dùng 1 cửa sổ nhỏ xuất hiện phía trước và che Activity hiện tại và

Trang 30

chấp nhận tất cả các tương tác của người dùng Nên dùng Dialog khicần hiển thị thanh tiến trình hoặc một thông điệp ngắn yêu cầu ngườidùng xác nhận hành động Cũng có thể sử dụng Dialog như 1 thànhphần tách rời của giao diện ứng dụng cho mục đích khác bên cạnh hiệnthông điệp.

1.9 Giao diện người dùng trong Android

- Giao diện người dùng trong Android có thể được xây dựng bằng 2 cách:bằng cách định nghĩa trong file XML, hoặc bằng cách viết mã lệnh java Việc địnhnghĩa cấu trúc giao diện người dùng bằng file XML là lợi thế hơn vì nó hướng theonguyên tắc của mô hình MCV rằng giao diện người dùng luôn tách ra khỏi các khốilogic của chương trình, ta có thể dễ dàng thay đổi giao diện của chương trình màkhông cần sửa mã lệnh, đồng thời việc điều chỉnh để phù hợp với độ phân giải củacác màn hình khác nhau dễ dàng hơn

- Một Activity hiển thị giao diện người dùng của ứng dụng Nó chứa đựngcác Widget như button, labels, textbox Thông thường chúng ta thường định nghĩagiao diện người dùng trong file XML (đặt trong thư mục res/layout của gói ứngdụng) Bên cạnh đó chúng ta cũng có thể tạo ra các phần tử giao diện sử dụng mãlệnh trực tiếp trong chương trình.

1.9.1 Views và ViewGroup

- Activity chứa Views và ViewGroup, View là đối tượng cơ bản của giaodiện người dùng trong nền tảng Android, View có lớp con gọi là “Widget” cung cấpcác đối tượng giao diện người dùng như TextField và Button… view được dẫn suất

từ lớp cơ sở là Android.view.View ViewGroup là 1 view đặc biệt do một hoặcnhiều view được nhóm lại với nhau ViewGroup có các lớp con là Layout cung cấpnhiều kiểu kiến trúc layout trong đó ta có thể sắp đặt sự xuất hiện và trình tự của cácview, một ViewGroup được dẫn xuất từ lớp cơ sở Android.view.ViewGroup

Trang 31

- Mỗi view và viewGroup có các thuộc tính cơ bản và một số các thuộc tínhnày chỉ được dùng cho các viewGroup đặc biệt.

- Khi định kích thước cho các phần tử của giao diện ta có thể sử dụng các đơn

vị đo như:

 dp (Density-independent pixel hay dip): Đây là đơn vị thường đượcdùng trong việc định kích thước cho 1 view trong layout 160dp tươngứng với 1 inch trên màn hình vật lý

 sp (Scale-independent pixel): Thường dùng cho việc định kích thướccủa font chữ

 pt (point): 1 pt = 1/72 inch của màn hình

 px (pixel): Tương ứng với các pixel thực tế trên mành hình Đơn vịnày không được khuyến khích sử dụng vì nó có thể hiển thị khôngchính xác trên các thiết bị với những kích thước màn hình khác nhau

- Android hỗ trợ 6 loại ViewGroup:

LinearLayout: LinearLayout sắp xếp các views theo 1 hàng hoặc 1 cột

đơn Các views con có thể được sắp xếp theo chiều dọc hoặc hiềungang

AbsoluteLayout: Định vị tuyệt đối, cho phép chúng ta xác định chính

xác vị trí của các view AbsoluteLayout bị phản đối sử dụng từ phiênbản Android 1.5 do gặp vấn đề khi hiển thị trên các màn hình có độphân giải cao

TableLayout: Nhóm các view vào trong các hàng và cột Dùng phần

tử <TableRow> để chỉ định số hàng cho trong bảng Mỗi hàng có thểchứa 1 hoặc nhiều view, mỗi view được đặt trong 1 ô Chiều rộng củamỗi cột là chiều rộng nhất của các ô trong cột đó

RelativeLayout: Cho phép xác định mỗi view được định vị tương đối

như thế nào với các phần tử khác

Trang 32

FrameLayout: Là một khung chứa trên màn hình, dùng để hiển thị một

view đơn lẻ View đặt trong FrameLayout luôn được cố định tại vị tríphía trên bên trái của layout Nếu đặt nhiều view vào FrameLayoutchúng sẽ nằm đè lên nhau và kích thước của FramLayout là kích thướccủa View lớn nhất FrameLayout hữu ích trong trường hợp chúng tamuốn tạo ra 1 ảnh động với 1 ảnh duy nhất được hiển thị tại 1 thờiđiểm

ScrollView: Là 1 dạng đặc biệt của FrameLayout cho phép chúng ta

cuộn 1 danh sách các View chiếm 1 không gian hiển thị lớn Nó có thểchứa duy nhất 1 view hoặc ViewGroup mà thông thường là mộtLinearLayout

1.9.2 Button

- Button là một widget được sử dụng trong hầu hết các ứng dụng Android Cóthể tạo ra một Button bằng cách khai báo nó trong file XML:

<Button android:layout_width="wrap_content"

Trang 33

1.9.3 ListView và GridView

- Một ListView hiển thị dữ liệu một danh sách cuộn theo chiều dọc MộtGridView hiển thị danh sách theo dạng lưới có thể cuộn theo chiều dọc hoặc ngangvới số cột do chúng ta chỉ định, có thể dùng GridView với ImageView để hiện thịmột dãy các ảnh

- Để hiện thị được ListView và GridView phải cần có 2 yếu tố chính:

 Data Source: 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 class trung gian giúp ánh xạ dữ liệu trongData Source vào đúng vị trí hiển thị trong ListView hoặc GridView

1.9.4 TextView, EditText

- TextView cho phép hiển thị văn bản, ngoài văn bản thuần nó còn có thểhiện thị văn bản dạng HTML ngay trong file XML hoặc trong mã lệnh của chươngtrình

Trang 34

Android:inpuType xác định phương thức nhập cho EditText như Email

hay password hoặc một trường số…

Android:singleLine = “true” thì EditText sẽ là một TextField ngược lại nếu Android:singleLine = “false” thì nó là một TextBox.

1.9.5 Menu

- Menu là 1 thành phần quan trọng trong giao diên người dùng Nó cung cấp

1 giao diện đáng tin cậy cho thấy chức năng của ứng dụng và các cài đặt của nó.Menu cũng được cấu trúc bằng cách sử dụng kiến trúc View Menu cũng xử lý các

sự kiện của riêng nó, do đó chúng ta không cần phải đăng ký bộ lắng nghe sự kiệncho các mục của Menu Khi 1 mục trên Menu được chọn thì phương thứconOptionsItemSelected() hoặc onContextItemSelected() sẽ được gọi

- Trong Android có 2 loại menu là Context menu và Option menu.

Option menu dùng để hiển thị thông tin liên quan đến Activity hiện tại.

Trong Android chúng ta có thể hiện thị option menu bằng cách nhấn

phím MENU Các menu items được hiển thị khác nhau tuỳ theo

Activity hiện tại đang hoạt động Option menu cho phép tạo ra cácshortcut keys và icons cho các items

Context menu dùng để hiện thị thông tin liên quan đến một view cụ

thể trong một Activity Các menu items được hiện thị khác nhau tuỳthuộc vào thành phần hoặc view đang được chọn Để kích hoạt một

Context menu, người sử dụng chọn một item trên màn hình và có thể

nhấp và giữ nó hoặc cách đơn giản hơn là nhấn phím giữa trên bànphím Context menu không hỗ trợ các Shortcut keys và các icon chocác items

- Chúng ta có thể tạo ra một menu trong ứng dụng Android bằng 2 cách: Sửdụng mã lệnh trực tiếp hoặc khai báo trong file xml Với cả 2 cách này, ta đều phảighi đè phương thức onCreateOptionsMenu(Menu m) của Activity

Trang 35

1.9.6 Bắt sự kiện giao diện người dùng

- Sau khi thêm các View/Widget vào giao diện người dùng chúng ta có thểmuốn biết về tương tác giữa người sử dụng với chúng, để được thông báo về sự kiệngiao diện người dùng, chúng ta phải làm 1 trong 2 việc:

 Thiết lập một bộ lắng nghe sự kiện và gắn nó vào các View Lớp Viewchứa tập hợp các giao diện lồng nhau được đặt tên dạngOn<something>Listener, với một callback method được đặt tên dạng

on<something> Ví dụ: View.onClickListener() chứa sự kiện khi click vào View, View.onKeyListener() chứa sự kiện 1 phím của thiết bị được nhấn

trong 1 View, View.OnTouchListener () chứa dự kiện với màn hình cảmứng trong 1 View

 Ghi đè các callback method cho mỗi view để xác định các thao tác, hành

vi cần thực hiện với từng sự kiện của giao diện người dùng Ví dụ:

Button btn = new Button();

btn.setOnClickListener( new View.onClickListener () {

public void onClick(View v) { Toast.makeText(getBaseContext(),"Clicked", Toast.LENGTH_SHORT).show();

} });

1.10 Multimedia trong Android

- Android multimedia framework chụp và chạy Android cung cấp một thưviện MediaStore cho phép mã hoá và xử lý các định dạng file Media phổ biến,chúng ta có thể dễ dàng tích hợp audio, video hay ảnh vào ứng dụng Chúng ta cóthể chạy các file audio, video từ các file media được lưu trữ trong tài nguyên củaứng dụng hay từ hệ thống file độc lập hoặc nguồn dữ liệu được truyền đến thông quacác kết nối mạng, tất cả dùng các API của lớp MediaPlayer

1.11 Network và CSDL SQLite trong Android

Trang 36

- Android hỗ trợ truyền tin dùng Socket và phương thức http để kết nối tớiwebServer Do nó được thừa hưởng toàn bộ thư viện java.net của java nên việctruyền tìn dùng Socket tương tự như trong java.

- Mỗi ứng dụng đều sử dụng dữ liệu, nó có thể là dữ liệu đơn giản hoặc kiểu

dữ liệu có cấu trúc Trong Android thì hệ cơ sở dữ liệu được sử dụng là SQLite

Database, đây là hệ thống mã nguồn mở được sử dụng rộng rãi trong các ứng dụng( Mozilla Firefox sử dụng SQLite để lưu trữ các dữ liệu về cấu hình, iPhone cũng sửdụng cơ sở dữ liệu là SQLite) Trong Android, cơ sở dữ liệu mà bạn tạo cho 1 ứngdụng thì chỉ ứng dụng đó có quyền truy cập và sử dụng, các ứng dụng khác thìkhông Các thao tác truy xuất dữ liệu trong SQLite cũng sử dụng các hàm SQLthông thường như trong MSSQL hoặc MySQL Ngoài ra chúng ta có thể sử dụngcác hàm có sẵn của thư viện Android cung cấp

- Android cung cấp đủ các hỗ trợ cho database Sqlite Khi tạo 1 database thì

nó có thể được sử dụng bởi tất cả các class trong application

- Cách tốt nhất để tạo 1 Sqlite database là tạo 1 lớp helper kế thừa từSQLiteOpenHelper và ghi đè phương thức onCreate(), onUpgrade Theo cách nàychúng ta có thể thực thi 1 lệnh Sqlite và tạo table mong muốn

- Sau khi tạo 1 lớp chúng ta có thể tạo 1 thể hiện SQLiteOpenHelper bằnghàm khởi tạo mà ta định nghĩa Sau đó đọc, ghi database bằnggetWritableDatabase() và getReadableDatabase() tương ứng chúng đều trả về 1 đốitượng SQLiteDatabase đại diện cho CSDL và cung cấp các thao tác với Sqlite

- Có thể thực thi 1 query bằng phương thức query() của đối tượngSQLiteDatabse Nó chứa 1 số tham cơ bản như bảng, cột, nhóm, lựa chọn… để truyvấn nếu muốn có 1 query phức tạp ta có thể dùng lớp SQLiteQueryBuilder, lớp nàycung cấp các phương thức thuận tiện hơn cho việc xây dựng 1 query

- Tất cả các truy vấn với database đều trả về 1 đối tượng Cursor để chỉ ra tất

cả các hàng dữ liệu được trả về bởi query Cursor là 1 cơ chế cho phép truy điềuhướng kết quả từ 1 database và đọc các hàng, các cột

Trang 37

1.12 Các công cụ cần có để xây dựng 1 ứng dụng Android

- Java JDK: Android SDK sử dụng Java SE development Kit (JDK)

- Eclipse: Một môi trường phát triển phần mềm đa ngôn ngữ và có thể mởrộng các plugin Nó có thể dùng để viết nhiều loại ứng dụng dùng các ngôn ngữ nhưjava, Ada, C, C++, COBOL, Python…

- Android SDK: Android SDK chứa các trình gỡ rỗi (debugger), Các thưviện, thiết bị giả lập, tài liệu, mã nguồn mẫu và các hướng dẫn

- Android development tools (ADT): Là 1 plugin cho Eclipse, hỗ trợ cho việc

gỡ rối các ứng dụng Android

- Anroid virtual devices (AVDs): Là 1 ví dụ giả lập cho phép bạn mô hìnhhoá 1 thiết bị thực tế Mỗi AVD bao gồm 1 hồ sơ phần cứng (hardware profile), 1ánh xạ tới ảnh của hệ thống (a mapping to a system image), mô phỏng lưu trữ (như

SD card)

1.13 Cài đặt Android

1.13.1 Cài đặt Java JDK

- Cài đặt Java SE Devolopment Kit (JDK) Có thể tải bản cài đặt bằng cách

vào địa chỉ www.oracle.com/technetwork/java/javase/downloads/index.html, sau đó

chọn phiên bản cho hệ điều hành mà chúng ta đang sử dụng

1.13.2 Cài đặt Eclipse

- Eclipse là môi trường phát triển phần mềm tính hợp có nhiều plugin mởrộng và hỗ trợ nhiều ngôn ngữ lập trình khác nhau Để xây dựng ứng dụng Androidchúng ta download bản Eclipse IDE cho java EE tại địa chỉ:

www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/heliossr1

1.13.3 Cài đặt Android SDK

- Một thành phần quan trọng không thể thiếu là Android SDK Nó chứa cáctrình gỡ rỗi (debugger), Các thư viện, thiết bị giả lập, tài liệu, mã nguồn mẫu và cáchướng dẫn

Trang 38

- Bước 1: Vào địa chỉ http://developer.android.com/sdk/index.html để tải về

Android SDK, tuỳ thuộc vào HĐH đang sử dụng mà chúng ta chọn cho Mac,Window hay Linux

- Bước 2: Giải nén file vừa tải vào 1 thư mục nào đó, sau đó đó chạy fileSDK Manager.exe

- Bước 3: Tại cửa sổ sổ “Android SDK and AVD manager” ta chọn

“Available packages” sau đó đánh dấu vào các Packages muốn tải Một số Packages

có sẵn như:

 Documents chính là phần Javadoc mô tả hoạt động của các phươngthức và các lớp

 Sample là các đoạn code mẫu

 SDK Platform ứng với các phiên bản hệ điều hành, mỗi phiên bản cómột API level riêng (2.2 - API level 8, 2.1 - API level 7, )

 Google API để phát triển các phần mềm liên quan đến dịch vụ củaGoogle (như Google Map nếu bạn muốn lập trình liên quan đến GPS)

- Bước 4: Chọn Install Selected -> Install và quá trình cài đặt bắt đầu.

Ngày đăng: 20/04/2017, 22:16

HÌNH ẢNH LIÊN QUAN

Hình 1.7 Tạo Android AVD - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 1.7 Tạo Android AVD (Trang 39)
Hình 2.1 Khuôn dạng game sudoku chuẩn - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 2.1 Khuôn dạng game sudoku chuẩn (Trang 41)
Hình 2.2 Biểu đồ Use-Case của hệ thống. - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 2.2 Biểu đồ Use-Case của hệ thống (Trang 44)
Hình 2.4 Biểu đồ cộng tác cho UC Select new game - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 2.4 Biểu đồ cộng tác cho UC Select new game (Trang 47)
Hình 2.6 Biểu đồ cộng tác UC Set Checkpoint - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 2.6 Biểu đồ cộng tác UC Set Checkpoint (Trang 49)
Hình 2.7 Biểu đồ trình tự UC “Undo To Checkpoint” - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 2.7 Biểu đồ trình tự UC “Undo To Checkpoint” (Trang 51)
Hình 2.8 Biểu đồ cộng tác UC “Undo To Checkpoint - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 2.8 Biểu đồ cộng tác UC “Undo To Checkpoint (Trang 52)
Hình 2.9 Biểu đồ trình tự UC “game setting” - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 2.9 Biểu đồ trình tự UC “game setting” (Trang 53)
Hình 2.12 Biểu đồ cộng tác UC “Add new game” - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 2.12 Biểu đồ cộng tác UC “Add new game” (Trang 56)
Hình 2.15 Biểu đồ trình tự UC “Filter Game” - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 2.15 Biểu đồ trình tự UC “Filter Game” (Trang 61)
Hình 2.16 Biểu đồ cộng tác UC “Filter Game” - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 2.16 Biểu đồ cộng tác UC “Filter Game” (Trang 62)
Bảng 3.1 Chi tiết bảng Folder - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Bảng 3.1 Chi tiết bảng Folder (Trang 64)
Bảng 3.2 Chi tiết bảng Sudoku - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Bảng 3.2 Chi tiết bảng Sudoku (Trang 65)
Hình 3.2 Giao diện Sudoku List - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 3.2 Giao diện Sudoku List (Trang 68)
Hình 3.4  Giao diện Game setting - Tìm hiểu hệ điều hành android và xây dựng ứng dụng game sudoku
Hình 3.4 Giao diện Game setting (Trang 70)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w