Tải bản đầy đủ (.pdf) (107 trang)

Xây dựng ứng dụng explorer trên điện thoại di độngt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.55 MB, 107 trang )

 LỜI CẢM ƠN
Lời đầu tiên em xin chân thành cảm ơn cô Nguyễn Thị Tính đã rất tận tình
hướng dẫn, chỉ bảo em trong suốt thời gian thực hiện đồ án tốt nghiệp 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 Đại
học Công nghệ Thông tin và Truyền thô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 và quý báu.
Mặc dù em đã cố gắng, nhưng với trình độ còn hạn chế, trong quá trình làm
đề tài 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 thầy cô giáo và bạn bè.
Em xin chân thành cảm ơn !

1


 LỜI CAM ĐOAN
Trong báo cáo này sử dụng những kết quả nghiên cứu lý thuyết, khảo sát
thực tế và phân tích thiết kế hệ thống do em tham khảo tài liệu và trực tiếp thực
hiện dưới sự hướng dẫn của cô Nguyễn Thị Tính. Những kết quả thu được là của
riêng em và không sao chép trái phép.
Em cam đoan những kết luận trên là đúng sự thật, nếu sai lệch em xin chịu
hoàn toàn trách nhiệm.
Thái Nguyên, ngày 08 tháng 05 năm
2016
Sinh viên

Bế Thị Hằng

2


 MỤC LỤC


LỜI CẢM ƠN

1

LỜI CAM ĐOAN 2
MỤC LỤC

3

DANH MỤC HÌNH ẢNH 5
LỜI NÓI ĐẦU

7

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về Android
1.1.1. Khái niệm Android

8
8

1.1.2. Lịch sử phát triển Android
1.1.3. Kiến trúc Android

8

8

9


1.2. Hệ thống tập tin trên hệ điều hành Android

11

1.2.1. Tổng quan về hệ thống tập tin trên Android 12
1.2.2. Các kiểu tập tin trên Android 12
1.2.3. Tổ chức quyền sở hữu và quyền hạn trên file
1.2.4. Cây thư mục trên hệ điều hành Android

13

1.3. Phát triển ứng dụng trên Android 14
1.3.1. Lập trình Android cần những gì

14

1.3.2. Các thành phần trong một Android Project 16
1.3.3. Những thành phần cơ bản trong Android

17

1.3.4. Các thành phần giao diện và widget 19
1.3.5. Chu kỳ ứng dụng Android

24

CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG
2.1. Đặc tả phần mềm

28


2.2. Phân tích thiết kế hệ thống 28
2.1.1. Biểu đồ Use case của hệ thống
3

28

28

13


2.1.2. Biểu đồ trình tự của hệ thống 29
2.1.3. Biểu đồ cộng tác của hệ thống42
2.1.4. Biểu đồ hoạt động của hệ thống
2.1.5. Biểu đồ lớp của hệ thống

47

52

CHƯƠNG 3 XÂY DỰNG ỨNG DỤNG 54
3.1. Môi trường triển khai

54

3.2. Giao diện của chương trình 54
3.2.1. Giao diện Gridview

54


3.2.2. Giao diện các menu của chương trình
3.2.3. Giao diện Properties

56

58

3.2.4. Giao diện nén, giải nén và send bluethooth 59
3.2.5. Giao diện đổi tên tập tin hoặc thư mục
3.2.6. Giao diện tạo thư mục 61
3.2.7. Giao diện tìm kiếm file62
3.2.8. Giao diện xóa file hay thư mục

63

3.2.9. Một số giao diện mở tập tin cơ bản 64
KẾT LUẬN 65
TÀI LIỆU THAM KHẢO 66
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 67

4

60


 DANH MỤC HÌNH ẢNH
Hình 1.1 Kiến trúc Android9
Hình 1.2 Bảng liệt kê một số kiểu file trong Linux
Hình 1.3 Quyền hạn truy cập trên file


13

Hình 1.4 Cây thư mục trong Android

14

Hình 1.5 Cấu trúc một project Android

16

Hình 1.6 Cấu trúc một giao diện ứng dụng Android
Hình 1.7 Activity Stack

12

20

24

Hình 1.8 Chu kỳ sống của Activity

25

Hình 2.1 Biều đồ use case của hệ thống 29
Hình 2.2 Biểu đồ trình tự use case đổi tên37
Hình 2.3 Biều đồ trình tự use case tìm kiếm

38


Hình 2.4 Biểu đồ trình tự use case sao chép

38

Hình 2.5 Biểu đồ trình tự use case xóa

39

Hình 2.6 Biểu đồ trình tự use case nén

39

Hình 2.7 Biểu đồ trình tự use case giải nén

40

Hình 2.8 Biểu đồ trình tự use case tạo thư mục mới
Hình 2.9 Biều đồ trình tự use case gửi tập tin

41

Hình 2.10 Biểu đồ trình tự use case xem thông tin
Hình 2.11 Biểu đồ trình tự use case mở tập tin 42
Hình 2.12 Biều đồ cộng tác use case đổi tên

42

Hình 2.13 Biểu đồ cộng tác use case tìm kiếm

43


Hình 2.14 Biểu đồ cộng tác use case sao chép

43

Hình 2.15 Biểu đồ cộng tác use case xóa 44
Hình 2.16 Biểu đồ cộng tác use case nén 44
Hình 2.17 Biểu đồ cộng tác use case giải nén
5

40

45

41


Hình 2.18 Biểu đồ cộng tác use case tạo thư mục mới 45
Hình 2.19 Biểu đồ cộng tác use case gửi tập tin 46
Hình 2.20 Biểu đồ cộng tác use case xem thông tin

46

Hình 2.21 Biểu đồ cộng tác use case mở tập tin 47
Hình 2.22 Biểu đồ hoạt động use case mở tập tin

47

Hình 2.23 Biểu đồ hoạt động use case gửi tập tin


48

Hình 2.24 Biểu đồ hoạt động use case đổi tên

48

Hình 2.25 Biểu đồ hoạt động use case nén

49

Hình 2.26 Biểu đồ hoạt động use case giải nén 49
Hình 2.27 Biểu đồ hoạt động use case tạo thư mục mới 50
Hình 2.28 Biểu đồ hoạt động use case sao chép 50
Hình 2.29 Biểu đồ hoạt động use case di chuyển 51
Hình 2.30 Biểu đồ hoạt động use case xóa

51

Hình 2.31 Biểu đồ hoạt động use case tìm kiếm 52
Hình 2.32 Biểu đồ lớp của thành phần giao diện 52
Hình 2.33 Biểu đồ lớp tổng quát 53
Hình 3.1 Giao diện chính của chương trình

55

Hình 3.2 Giao diện Options Menu 56
Hình 3.3 Giao diện Context Menu 57
Hình 3.4 Giao diện Properties

58


Hình 3.5 Giao diện nén, giải nén và chia sẻ tập tin
Hình 3.6 Giao diện đổi tên file hay thư mục
Hình 3.7 Giao diện tao thư mục mới

59

60

61

Hình 3.8 Giao diện tìm kiếm file hay thư mục

62

Hình 3.9 Giao diện xóa file hay thư mục 63
Hình 3.10 Giao diện mở file ảnh và file nhạc trong android

6

64


7


 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ường
điện thoại di động đang trở nên sôi động hơn bao giờ hết. Do thu nhập của người
dân ngày càng được cải thiện cũng như nhu cầu trao đổi thông tin ngày càng gia

tăng theo. Mặt khác, các nhà sản xuất điện thoại di động nắm được nhu cầu của
giới trẻ ưa chuộng những sản phẩm công nghệ cao và do yêu cầu cạnh tranh giữa
các nhà sản xuất điện thoại di động cho nên các nhà sản xuất điện thoại di động
liên tục tung ra nhiều sản phẩm mới có nhiều tính năng mới, cấu hình cao, nâng
cấp mẫu mã và kiểu dáng đẹp nhằm thu hút người mua, đặc biệt là các bạn trẻ.
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ình tiện ích như từ
điển, trình soạn thảo, diệt virus…Chính vì lý do đó mà em đã chọn đề tài: “Xây
dựng ứng dụng Explorer trên điện thoại di động”.Nhằm giúp cho người sử
dụng quản lý dữ liệu cá nhân dễ dàng và nhanh chóng hơn.
Nội dung của đề tài được chia thành 3 chương như sau:
Chương 1: Cơ sở lý thuyết
Chương 2: Phân tích thiết kế hệ thống
Chương 3: Xây dựng ứng dụng

8


 CHƯƠNG 1
 CƠ SỞ LÝ THUYẾT
 Tổng quan về Android

 Khái niệm Android
Android là một ngăn xếp phần mềm cho các thiết bị di động bao gồm một
hệ điều hành, middleware và các ứng dụng khóa được phát triển bởi Google.
Android được phát triển dựa trên nhân Linux 2.6 và các ứng dụng cho Android sử
dụng ngôn ngữ lập trình Java.
Android là một hệ điều hành mã nguồn mở, các nhà phát triển có thể tạo ra

các ứng dụng cho Android và bất kỳ ai cũng có thể lấy và sửa đổi theo ý thích. Tuy
nhiên các thiết bị Android cũng chứa một số phần mềm độc quyền mà các nhà phát
triển không thể tiếp cận được những phần mềm này.

 Lịch sử phát triển Android
Năm 2003, một công ty hoạt động trong lĩnh vực phát triển phần mềm cho
các thiết bị di động mang tên là Android Inc. được thành lập tại California – Mỹ
bởi 4 thành viên: Andy Rubin, Rich Miner, Nick Sears và Chris White.
Năm 2005, sau hơn 2 năm hoạt động thì Android Inc. được Google mua lại
với một khoản tiền không được tiết lộ và chính thức trở thành một trong những
công ty con của gã khổng lồ ngành tìm kiếm. Đồng thời cả Andy Rubin, Rich
Miner, Nick Sears và Chris White đều quyết định tiếp tục làm việc tại chính công
ty của mình sau khi được mua lại.
Tại Google, một nhóm nghiên cứu đứng đầu là Rubin đã bắt đầu phát triển
một nền tảng dành cho thiết bị di động dựa trên nhân của hệ điều hành Linux. Và
sau đó, hệ điều hành này cũng được giới thiệu đến các nhà phát triển phần cứng
lẫn phần mềm.
Tháng 5 năm 2007, liên minh các nhà sản xuất thiết bị cầm tay - Open
Handset Alliance (OHA) được thành lập bao gồm Google và một số thành viên khác
9


của cộng đồng Linux mở như: Broadcom Corporation, Google, HTC, Intel, LG,
Marvell Technology Group, Motorola, Nvidia,Qualcomm, Samsung Electronics,
Sprint Nextel, T-Mobile và Texas Instruments. Mục tiêu của OHA là phát triển tiêu
chuẩn mở cho các thiết bị di động và sản phẩm đầu tiên của liên minh này đó là
Android, một nền tảng di động được xây dựng trên nhân Linux phiên bản 2.6.
Tính cho đến thời điểm tháng 02/2016, Google Android đã có 11 phiên bản
chính thức được đặt tên theo những món tráng miệng, với ngụ ý người dùng sẽ dễ
dàng sử dụng hệ điều hành của họ như thưởng thức các món ăn đó. Các phiên bản

Android có tên mã lần lượt là: Cupcake 1.5, Donut 1.6, Eclair 2.0, Froyo 2.2,
Gingerbread 2.3, Honeycomb 3.0, Ice Cream Sandwich 4.0, Jelly Bean 4.1, KitKat
4.4, Lollipop 5.0 và Marshmallow 6.0.

 Kiến trúc Android

10


Hình 1.1 Kiến trúc Android

 Applications
Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: calendar,
maps, contacts, brower, camera, phone, … Tất cả các ứng dụng này đều được viết
bằng ngôn ngữ Java.

 Applications Framework
Bằng cách cung cấp một nền tảng phát triển mở Android cung cấp cho các
nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo. Nhà

11


phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập,
các dịch vụ chạy nền, thiết lập hệ thống báo động, cộng thêm các cảnh báo đến 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 (Application Programming
Interface) cùng một framework được xây dựng bởi các ứng dụng lõi. Kiến trúc ứng
dụng được thiết kế để đơn giản hóa việc sử dụng lại các thành phần, bất kỳ ứng dụng
nào cũng có thể công bố khả năng của nó và bất kỳ ứng dụng nào khác cũng có thể

sử dụng những khả năng này(có thể hạn chế bảo mật được thực thi bởi framework).
Tất cả các ứng dụng cơ bản là một bộ dịch vụ và các hệ thống, bao gồm:
Một tập hợp phong phú và mở rộng 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,…
Trình cung cấp nội dung (Content Providers): 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 đó.
Quản lý tài nguyên (Resource Manager): Cung cấp truy xuất tới các tài
nguyên không phải là mã nguồn chẳng hạn như graphics và các file layout.
Quản lý thông báo (Notification Manager): Cho phép tất cả các ứng dụng
hiển thị các cảnh báo trong thanh trạng thái.
Quản lý hoạt động (Activity Manager): Quản lý chu trình sống của ứng
dụng và điều hướng các Activity.

 Libraries
Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều
thành phần khác nhau trong hệ thống Android. Điều này được thể hiện thông qua
nền tảng ứng dụng Android. Một số các thư viện cơ bản được liệt kê dưới đây:
System C library – Thực hiện triển khai BSD (Berkeley Software
Distribution) của thư viện hệ thống C chuẩn (libc) và chỉnh cho các thiết bị nhúng
dựa trên Linux. BSD là giấy phép nguồn mở, cho phép mọi người sử dụng chương
12


trình, mã nguồn của nó và các dẫn xuất.
Media Libararies – Dựa trên PacketVideo’s OpenCORE các thư viện hỗ
trợ phát và ghi âm với nhiều định dạng audio và video, cũng như đối với các file
ảnh tĩnh bao gồm: MPEG4, H.264, MP3, AAC, ARM, JPG, và PNG.
Surface Manager – Quản lý truy cập vào hệ thống hiển thị.

LibWebCore – Một công cụ trình duyệt web hiện đại.
SLG – Công cụ đồ họa 2D cơ sở.
3D libraries – Sự thực hiện dựa trên OpenGL ES 1.0 APIs.
Free Type – Biểu diễn font véc – tơ và bitmap.
QLite – Cơ sở dữ liệu
Webkit – Thư viện cho việc biểu diễn HTML.

 Android Runtime
Tầng này bao gồm các thư viện lõi và máy ảo Dalvik. Các thư viện lõi bao
gồm các thư viện lớp cơ bản nhất như: cấu trúc dữ liệu, mạng, các tiện ích, hệ
thống file. DVM (Dalvik Virtual Machine) được thiết kế để đạt được các chức
năng quản lý chu kỳ sống của đối tượng, quản lý ngăn xếp, quản lý luồng, bảo
mật,…DVM là lý tưởng để sử dụng với yêu cầu về không gian bộ nhớ và CPU
thấp so với các máy ảo chạy trên các máy tính để bàn và hệ thống máy chủ. Theo
tính toán của Google thì cần 64M RAM cho phép hệ thống hoạt động tốt, 24M
RAM được sử dụng để khởi tạo và bắt đầu hệ thống cơ bản và 20M RAM được sử
dụng cho các dịch vụ cấp cao.

 Linux kernel
Android được xây dựng trên nhân Linux nhưng Android không phải là Linux.
Android dựa trên Linux phiên bản 2.6 cho các hệ thống dịch vụ cốt lõi như an ninh,
quản lý bộ nhớ, quản lý quá trình, ngăn xếp mạng, và mô hình điều khiển. Hạt nhân
cũng hoạt động như một lớp trừu tượng giữa phần cứng và phần còn lại của ngăn xếp
phần mềm. Linux Kernel hỗ trợ các thư viện chia sẻ và nó còn là một mã nguồn mở.
 Hệ thống tập tin trên hệ điều hành Android
13


Như chúng ta đều biết, Android là một hệ điều hành dựa trên nền tảng
Linuxnên hệ thống tập tin trên android cực kỳ giống hệ thống tập tin trên linux như

là về cách tổ chức, những quyền hạn của người sử dụng lên file...

 Tổng quan về hệ thống tập tin trên Android
Trong android, các file được tổchức thành các thư mục, theo mô hình phân
cấp. Tham chiếu đến một file bằng tên và đường dẫn. Các câu lệnh thao tác file
cho phép thực hiệncác chức năng như dịch chuyển, sao chép toàn bộ thư mục cùng
với các thư mục con chứatrong nó…
Có thể sử dụng các ký tự, dấu gạch dưới, chữ số, dấu chấm và dấu phảy để
đặt tên file. Không được bắt đầu một tên file bằng dấu chấm hay chữ số. Những ký
tự khác như ‘/’, ‘?’, ‘*’, là ký tự đặc biệt được dành riêng cho hệ thống. Chiều dài
của tên file có thể tới 256 ký tự. Tất cả các file trong android có chung cấu trúc vật
lý là chuỗi các byte (byte stream). Cấu trúc thống nhất này cho phép android áp
dụng khái niệm file cho mọi thành phần dữ liệu trong hệ thống. Thư mục cũng
như các thiết bị được xem như file. Chính việc xem mọi thứ như các file cho phép
android quản lý và chuyển đổi dữliệu một cách dễ dàng. Một thư mục chứa các
thông tin về thư mục, được tổ chức theo một định dạng đặc biệt. Các thành phần
được xem như các file, chúng được phân biệt dựa trên kiểu file: ordinary file,
directory file, character device file, và block device file.

 Các kiểu tập tin trên Android
Trong nhiều hệ điều hành như window, người ta phân biệt rõ file (tập tin)
và folder (hay directory : thư mục) là 2 thành phần khác hẳn nhau. Tuy nhiên trên
hệ điều hành android(cũng như linux) thì coi directory cũng là file và nó là một
loại file đặc biệt. Thực tế còn một số loại file nữa có thể liệt kê theo bảng sau :
Chữ cái biểu diễn

Kiểu file

d


Thư mục (directory)

b

File kiểu khối (block-type special file)

c

File kiểu ký tự (character-type special file)
14


l

Liên kết tượng trưng (symbolic link)

p

File đường ống (pipe)

s

Socket

-

File bình thường (regular file)
Hình 1.2Bảng liệt kê một số kiểu file trong Linux

 Tổ chức quyền sở hữu và quyền hạn trên file

Tương tự trên hệ thống linux, trên hệ điều hành android, một file có thể
liênkết với một người sử dụng và một nhóm người sử dụng. Sựliên kết đó là một
tập hợp các quyền hạn truy cập bao gồm quyền được phép đọc (read), được phép
ghi (write) và được phép thực thi (execute).
Cụ thể như sau: Một file sẽ có những quyền hạn tương ứng với 9 ký tự theo
mẫu sau : Với ký tự r w x nghĩa là có quyền tương ứng với ký tự viết tắt đó, nghĩa là không có quyền hạn đó.

Hình 1.3 Quyền hạn truy cập trên file
3 ký tự đầu tiên là quyền hạn chủ nhân file
3 ký tự giữa là quyền hạn của nhóm tài khoản sở hữu file
3 ký tự cuối là quyền hạn của những người không thuộc nhóm sở hữu file.
Trên hệ thống android, để biết xem được quyền hạn đó, ta có thể sử dụng
câu lệnh ls –l –d.
Ngoài ra có 2 lệnh khác cũng hữu dụng là lệnh chown đểthay đổi quyền
sởhữufile, lệnh chmod đểthay đổi quyền hạn liên quan đến file và lệnh chgrp để
thay đổi nhóm người sở hữu file.

 Cây thư mục trên hệ điều hành Android
Thư mục (hay có thể gọi là file) root là thư mục gốc của tất cả các file, thư
mục còn lại. Dưới nó có chứa một số file thư mục hệ thống. Mỗi thư mục (trừ thư
15


mục root) đều có một thư mục cha chứa nó, bản thân nó cũng có thể có nhiều file
thư mục con. Cấu trúc đó có thể mô tả bằng một cây thư mục có dạng như sau :

Hình 1.4 Cây thư mục trong Android
Giới thiệu một vài thư mục tiêu biểu :
/(root) : là thư mục gốc. Là thư mục duy nhất không có thư mục cha
/ mnt : thư mục chứa thiết bị lưu động (removeable)

/system : chứa những thành phần cơ bản nhất của hệ thống
/ect : chứa những file cấu hình của hệ thống, nó cực kỳ quan trọng vì sự
hoạt độngcủa hệ thống đều bị chi phối ở những file cấu hình này.
/system/lost+found : chứa những tập tin bị mất lúc khởi động máy
/system/font : chứa những font chữ hiển thị được
/system/lib : chứa các thư viện đểcác phần mềm hoạt động (các phần
mềmviết bằng ngôn ngữ java)
/system/app : chứa các file apk của phần mềm (các file cài đặt ứng dụng,
kiểu như MSI trong window hay dev trong Linux)
/system/bin : chứa các chương trình nội trú của hệ thống.
....
16


 Phát triển ứng dụng trên Android

 Lập trình Android cần những gì
 Ngôn ngữ lập trình
Ngôn ngữ lập trình chính thức của Android là Java. Mặc dù các ứng dụng
trên Android được phát triển dựa trên nền tảng Java, nhưng Android không hỗ trợ
J2ME và J2SE, là hai ngôn ngữ lập trình phổ dụng cho các thiết bị di động.
Dựa trên máy ảo Java của Sun, Google đã tinh chỉnh và phát triển nên máy
ảo Dalvik để biên dịch mã Java với tốc độ biên dịch nhanh hơn và nhẹ hơn. Đến
phiên bản Froyo 2.2, Android đã hỗ trợ Just-in-time Compiler (JIT) làm tăng tốc
độ biên dịch Java lên gấp 2-5 lần so với các phiên bản trước.
Bằng cách sử dụngcác framework của hãng thứ ba (VD: PhoneGap,
Titanium,…), các nhà lập trình web cũng có thể phát triển ứng dụng Android một
cách dễ dàng bằng các ngôn ngữ web phổ dụng như HTML, CSS, Javascript. Tuy
nhiên số lượng các ứng dụng đi theo chiều hướng này chưa nhiều.
Ngoài ra các ứng dụng của Android sử dụng SQLite để quản lý cơ sở dữ

liệu.

 Công cụ lập trình và cài đặt
Bước 1: Download và giải nén Eclipse Galileo tại :
Chúng ta nên sử dụng Eclipse gói
Galileo để lát nữa đỡ phải cấu hình lại Eclipse.
Bước 2: Cài đặt ADT plugin
 Mở Help Install new software Add.
 Ở mục Name: ADT plugin hoặc bạn có thể nhập tên khác cũng được.
 Location: Nhập vào link: /> OK Next cho đến khi cài đặt hoàn thành.
Bước 3: Cài đặt Android SDK
 Tải Android SDK tại và giải
17


nén.
 Mở Eclipse WindowPreferencesAndroid trong thư mục SDK location
chọn Browse đưa đường dẫn đến thư mục SDK vừa giải nén bấm Apply Install.
Bước 4: Tạo một máy điện thoại ảo (AVD)
 Vào Window Android SDK and AVD manager Virtual devices New.
 Điền vào các mục Name, Target: chọn API level cho phù hợp ứng dụng
bạn chọn, SDcard chọn Size dùng, nếu không thì để trống cũng được.


18


 Các thành phần trong một Android Project

Hình 1.5Cấu trúc một project Android

AndroidManifest.xml: file XML mô tả ứng dụng và các thành phần được
cung cấp bởi ứng dụng (activities, services,…).
19


R.java : file R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file
này được sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng
dụng và các tài nguyên hình ảnh.
Build.xml: một file chứa mã script Ant (ant.apache.com) nhằm compile và
cài đặt ứng dụng lên máy.
default.properties: file properties tạo bởi script Ant trên.
Bin/ : nơi chứa ứng dụng sau khi được compile.
bin/classes/: chứa các lớp Java đã được compile.
bin/classes.dex : chứa các file executable tạo bởi các lớp Java.
bin/yourapp.ap_ : chứa các tài nguyên của ứng dụng, đóng gói thành 1 file
zip.
bin/yourapp-debug.apk hay bin/yourapp-unsigned.apk : chứa chính ứng
dụng Android của ta.
libs/ : nơi chứa các file Java JAR ứng dụng yêu cầu (third party).
src/ : nơi chứa mã nguồn Java của ứng dụng.
res/ : chứa các tài nguyên của ứng dụng như các icons, GUI layouts,…
res/drawable/ : chứa file hình ảnh (PNG, JPEG,…).
res/layout/ : chứa UI layout, dưới dạng XML.
res/menu/ : chi tiết các menu, dưới dạng XML.
res/raw/ : chứa các file khác (CSV chứa thông tin account,…).
res/values/ : chứa các strings, dimensions,…
res/zml/: chứa các file XML khác cần cho ứng dụng.
assets/ : nơi chứa các files tĩnh (static) được yêu cầu đi kèm với ứng dụng.

 Những thành phần cơ bản trong Android

 Activity
Activity là một thành phần của ứng dụng cung cấp một màn hình mà người
dùng có thể tương tác được. Hầu hết các Activity được thiết kế để chiếm giữ toàn
bộ màn hình, tuy nhiên có thể tạo các Activity trong suốt một nửa, các Activity
20


nổi, hoặc các Dialog.
Một ứng dụng thường bao gồm một tập hợp các Activity ràng buộc với
nhau và thường có một Activity chính được gọi khi ứng dụng bắt đầu được chạy.
Mỗi một 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 ngăn xếp (gọi là backstack). Khi người dùng thao tác
xong với Activity hiện tại và nhấn nút BACK thì Activity này bị hủy 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ân
cấp các đối tượng view dẫn xuất từ lớp View đặt trong một cửa sổ của activity
bằng phương thức: Activity.setContentView(). Content view là đối tượng View ở
gốc của cây phân cấp.

 Service
Service chạy nền và không tương tác trực tiếp với người dùng nên nó không
có giao diện trực quan. Sử dụng Service để:
Dùng trong các ứng dụng nghe nhạc.
Dùng để xử lý các thao tác mất thời gian và không nhất thiết phải hiển thị
lên activity (download, upload,…).
Đôi khi cần một ứng dụng vận hành liên tục để xử lý những việc mong
muốn mà không làm phiền người dùng.
Làm những thao tác tính toán, xử lý đều đặn nào đó và kết quả khi nào
người dùng cần thì mới xem.


 Broadcast Receive
Một Broadcast Rreceiver là một thành phần nhận và đáp lại các thông báo
broadcast. Nhiều broadcast khởi đầu trong mã hệ thống – ví dụ như thông báo múi
giờ thay đổi, pin yếu, ảnh đã được chụp, hay người dùng đã thay đổi ngôn ngữ …
Các ứng dụng có thể tạo ra các broadcast, chẳng hạn để ứng dụng khác biết được
một số dữ liệu đã được tải về thiết bị và sẵn sàng cho việc sử dụng chúng.
Một ứng dụng có thể có một số Broadcast Receiver để đáp lại bất cứ thông
21


báo nào mà nó cho là quan trọng. Tất cả các receiver mở rộng từ lớp cơ sở
BroadcastReceiver.
Broadcast Receiver không hiển thị một giao diện người dùng. Tuy nhiên
chúng có thể bắt đầu một activity để đáp lại thông tin mà chúng nhận, hay chúng
có thể sử dụng NotificationManager để cảnh báo người dùng. Notifications có thể
lấy sự chú ý của người dùng bằng nhiều cách, lóe sáng đèn sau, rung, tạo ra âm
thanh, etc. Chúng thường lấy một biểu tượng bền vững trong thanh trạng thái, cái
mà người dùng có thể mở để lấy thông điệp.
Hệ thống chạy mỗi ứng dụng trong một tiến trình riêng biệt và hạn chế truy cập
dữ liệu của ứng dụng khác, vì vậy để ứng dụng của bạn kích hoạt một thành phần từ
ứ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 một thành phần cụ thể. Hệ thống sẽ kích hoạt cách thành phần này.

 Content provider
Một Content provider tạo ra một tập cụ thể các dữ liệu của ứng dụng khả
dụng cho các ứng dụng khác. 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ột cách khác nào đó. Content provider mở
rộng lớp cơ sở ContentProvider để cài đặt một tập các chuẩn các phương thức cho
phép các ứng dụng khác đạt được và lưu trữ dữ liệu của kiểu mà nó điều khiển.
Tuy nhiên, các ứng dụng không gọi trực tiếp các phương thức này, chúng sử dụng

một đối tượng ContentResolver và gọi các phương thức của nó. Một
ContentResolver có thể nói chuyện với bất cứ content provider nào, chúng cộng
tác với provider để quản lý giao tiếp liên tiến trình.
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 dữ liệu chỉ cần cung cấp đường dẫn cho nó. Đường dẫn này
gọi là URI, mỗi URI xác định duy nhất một tập dữ liệu. Content 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ỗi đối tượng đó.
Cấu trúc một URI như sau:
<standard_prefix>://<authority>/<data_path>/<id>
22


Trong đó:
standard_prefix: Tiền tố chuẩn cho Content provider, luôn là content://
authority: Tên của Content provider.
Data_path: Đường dẫn tới dữ liệu yêu cầu
id: Xác định bản ghi cần lấy.

 Các thành phần giao diện và widget
 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ột kiể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úc
phâ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ỗi Activity
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.

23


Hình 1.6Cấu trúc một giao diện ứng dụng Android

 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ều ngang 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ích
thướ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.
FrameLayout: FrameLayout được dùng để bố trí các đối tượng theo kiểu
giống như là các Layer trong Photoshop. Những đối tượng nào thuộc Layer bên
dưới thì sẽ bị che khuất bởi các đối tượng thuộc Layer nằm trên. FrameLayer
thường được sử dụng khi muốn tạo ra các đối tượng có khung hình bên ngoài
chẳng hạn như contact image button.
24


AbsoluteLayout: Layout này được sử dụng để bố trí các widget vào một vị
trí bất kì trong layout dựa vào 2 thuộc tính toạ độ x, y. Tuy nhiên, kiểu layout này
rất ít khi được dù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àn hì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ặc dọc. Để đặt được đúng vị trí thì các widget cần được xác định
một mối ràng buộc nà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 đích giảm lượng tài nguyên sử dụng khi load đồng thời đẩy nhanh quá
trình xử lý.
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ột chiếc máy tính đơn giản hoặc một danh sách dữ liệu.

 Button
Sở dĩ widget button được giới thiệu đầu tiên trong số các widget khác là vì
đây là đối tượng có thể nói là được dùng nhiều nhất trong hầu hết các ứng dụng
Android.
Để thiết kế giao diện với một button ta có 2 cách như sau:
Thiết kế bằng XML
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cmdButton1"
android:text="Touch me!"
25


×