Tải bản đầy đủ (.doc) (60 trang)

XÂY DỰNG WEBSITE CHO LIÊN CHI ĐOÀN - HỘI SINH VIÊN KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐHHH VIỆT NAM

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.09 MB, 60 trang )

BỘ GIAO THÔNG VẬN TẢI
TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM
KHOA CÔNG NGHỆ THÔNG TIN

----------------------------

ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:
XÂY DỰNG WEBSITE CHO LIÊN CHI ĐỒN - HỘI SINH VIÊN
KHOA CƠNG NGHỆ THÔNG TIN, TRUỜNG ĐHHH VIỆT NAM

Giáo viên hướng dẫn

: KS. CHU VĂN HUY

Sinh viên thực hiện

: TRỊNH VĂN HIẾU

Lớp

: CNT48ĐH


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

MỤC LỤC
LỜI MỞ ĐẨU..................................................................................................4
CHƯƠNG I: KHẢO SÁT BÀI TOÁN..........................................................1


1.1. Giới thiệu định dạng từ điển Stardict:....................................................1
1.2. Hiện trạng sử dụng từ điển:....................................................................2
1.3. Nhu cầu sử dụng từ điển trên điện thoại di động:..................................2
1.4. Sự phát triển nhanh chóng của Hệ điều hành Android:.........................3
1.5. Hướng giải quyết bài toán:.....................................................................4
CHƯƠNG II: CƠ SỞ LÝ THUYẾT..............................................................5
2.1 Cấu trúc định dạng StarDict:...................................................................5
2.1.1. Cấu trúc chung:................................................................................5
2.1.2. Cấu trúc file .ifo:..............................................................................5
2.1.3. Cấu trúc file .idx:.............................................................................6
2.1.4. Cấu trúc file .dict:............................................................................6
2.1.5. Cấu trúc file .syn:............................................................................7
2.2. Lập trình trên Hệ điều hành Android:....................................................8
2.2.1. Lịch sử Android:..............................................................................8
2.2.2. Kiến trúc của android....................................................................11
2.2.3. Android Emulator..........................................................................14
2.2.4. Các thành phần trong một android project....................................15
2.2.5. Chu kỳ ứng dụng android..............................................................18
2.2.6. Các thành phần giao diện cơ bản trong android............................22
2.2.7. Content provider và Uri.................................................................33
2.2.8. SQLITE.........................................................................................34
2.2.9. Android & Webservice..................................................................34
2.3. Giới thiệu ngơn ngữ lập trình Java:......................................................35
2.3.1.Lịch sử phát triển của ngơn ngữ lập trình Java...............................35
2.3.2.Một số đặc điểm nổi bật của ngơn ngữ lập trình Java....................36
CHƯƠNG III: PHÂN TÍCH HỆ THỐNG..................................................38
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH


GVHD: Ths. Nguyễn Trung Đức


Đồ án tốt nghiệp

3.1. Phân tích hệ thống về chức năng.........................................................38
3.1.1. Sơ đồ phân cấp chức năng:............................................................38
3.1.2. Mơ tả chi tiết các chức năng:.........................................................38
3.2. Phân tích hệ thống về dữ liệu:..............................................................40
3.2.1. Sơ đồ luồng dữ liệu mức ngữ cảnh:...............................................40
3.2.2. Sơ đồ luồng dữ liệu mức đỉnh:......................................................40
3.2.3. Sơ đồ luồng dữ liệu mức dưới đỉnh:..............................................41
3.2.4. Sơ đồ luồng dữ liệu mức dưới dưới đỉnh:.....................................41
3.3. Thiết kế cơ sở dữ liệu:..........................................................................44
3.4. Chi tiết các bảng dữ liệu:.....................................................................44
3.4.1. Dữ liệu về bài học từ vựng:...........................................................44
3.4.2. Dữ liệu về bài Test:.......................................................................45
3.4.3. Dữ liệu về bài học ngữ pháp:.........................................................46
CHƯƠNG IV: CÀI ĐẶT CHƯƠNG TRÌNH.............................................47
4.1- Giao diện chính của chương trình:......................................................47
4.2 – Giao diện tra cứu từ điển offline:.......................................................48
4.3 – Chức năng Google Translate:............................................................49
4.4 – Giao diện Bài học theo chủ đề:..........................................................50
4.5 – Giao diện Bài Test:............................................................................51
4.6 – Game HangMan:................................................................................53
KẾT LUẬN....................................................................................................55
TÀI LIỆU THAM KHẢO............................................................................56

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH


GVHD: Ths. Nguyễn Trung Đức


Đồ án tốt nghiệp

LỜI MỞ ĐẨU
Ngày nay với sự phát triển mạnh mẽ của khoa học công nghệ, đời sống
được nâng cao, thiết bị di động đã trở thành vật bất ly thân của đa số mọi
người. Đi kèm với nó là rất nhiều dịch vụ trên di động nhằm đem lại sự tiện
ích cho người sử dụng, trong đó ứng dụng về từ điển đang có nhu cầu cao khi
mà nền kinh tế phát triển, đòi hỏi khả năng ngoại ngữ trong hầu hết mọi
ngành nghề.
Với nền tảng mới là hệ điều hành Android của hãng Google, việc sử
dụng và cài đặt các ứng dụng đối với người dùng trở nên vô cùng dễ dàng và
hồn tồn miễn phí. Kết hợp sự tiện lợi của thiết bị di động và những tính
năng ưu việt của hệ điều hành Android, việc xây dựng một ứng dụng từ điển
phục vụ cho việc học ngoại ngữ là hết sức đơn giản và cần thiết. Không như
một số phần mềm từ điển khác, nhằm đem lại sự hiệu quả, thoải mái trong
quá trình học ngoại ngữ, từ điển cần có khả năng tuỳ chỉnh, cập nhật nội dung
tức thì khi người dùng gặp bất cứ tình huống phát sinh nào trong giao tiếp,
giúp người dùng quản lý được nội dung học.
Đề tài “Xây dựng bộ công cụ hỗ trợ luyện và học từ mới trên mobile sử
dụng Android” nhằm mục đích xây dựng một chương trình hỗ trợ người dùng
tra cứu từ mới; cho phép soạn, chỉnh sửa và bổ sung nội dung từ điển; nạp từ
điển dựa trên định dạng stardict; tổ chức và quản lý học từ mới theo phương
pháp ghi nhớ và phát lại theo chủ đề người học quan tâm.

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH


GVHD: Ths. Nguyễn Trung Đức


Đồ án tốt nghiệp

CHƯƠNG I: KHẢO SÁT BÀI TOÁN
1.1. Giới thiệu định dạng từ điển Stardict:
StarDict, phát triển bởi Hồ Chánh, là một phần mềm miễn phí giao diện
đồ họa người dùng phát hành dưới giấy phép GPL để truy cập dữ liệu từ điển
StarDict (một hệ vỏ từ điển). Nó là chương trình kế nhiệm StarDic, phát triển
bởi Mã Tô An.
* Các nền tảng được hỗ trợ:
StarDict chạy dưới Linux, Microsoft Windows, FreeBSD, Maemo và
Solaris. Từ điển cho người dùng được cài đặt riêng lẻ. Từ điển có thể tạo bằng
cách chuyển đổi các file DICT.
Nhiều chương trình tương thích StarDict, được biết đến như GuruDic,
weDict, Dictionary Universal... có mặt trên AppStore dành cho iPhone/iPod
Touch/iPad. Ngồi ra cịn có phiên bản iStardict miễn phí trên Cydia Store.
Trên Android, người dùng có thể sử dụng ColorDict, WordMate. Cũng liên
quan đến thiết bị di động, có một từ điển WhiteStork, một ứng dụng cho nền
tảng Maemo, hỗ trợ giữa các dữ liệu từ điển khác, hỗ trợ StarDict.
StarDict chỉ là cái vỏ của từ điển, nên khi tải về khơng có dữ liệu từ
điển nào kèm theo. Bạn cần tự cài đặt các dữ liệu từ điển.
Từ điển tiếng Việt định dạng stardict được nhóm CCTV thực hiện và
đưa lên mạng vào ngày 2004-08-03. Từ điển này chưa cập nhật, phần từ điển
Anh Việt chỉ có 68 nghìn từ.
Ngày 2005-09-16 nhóm NetFOSS tiếp tục cập nhật và chuyển đổi từ dữ
liệu DICT, đưa lên mạng bộ từ điển tiếng Việt cho StarDict đầy đủ hơn, trong
đó từ điển Anh Việt có hơn 100 nghìn từ. Các file này đang đặt ở dự án
NetFOSS.
Bên cạnh rất nhiều từ điển đa ngôn ngữ, mà không phải đầy đủ như
những cơng ty xuất bản chính, StarDict có thể chạy các từ điển mở hoặc các


Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 1


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

tên miền công cộng. Ví dụ: Wikimedia's Wikis, từ điển Littré's, Webster's
Dictionary (1913), WordNet.
* Các hệ vỏ từ điển tương tự (GUI):
StarDict cạnh tranh với rất nhiều hệ vỏ từ điển khác, bao
gồm Babiloo, AntTek Dict for Android (miễn phí), Babylon (phần mềm chia
sẻ với giới hạn 30 ngày dùng thử) và Everest, một phần mềm miễn phí.
Vào ngày 25 tháng 8 năm 2006, một phiên bản trực tuyến của StarDict
bắt đầu hoạt động. Phiên bản này truy cập tất cả dữ liệu của StarDict, cũng
như Wikipedia tiếng Trung.
1.2. Hiện trạng sử dụng từ điển:
Ứng dụng từ điển hiện nay có thể nói là một ứng dụng tối thiểu, quan
trọng như bộ office trong bất kỳ một máy tính cá nhân nào. Nhu cầu học
ngoại ngữ ngày càng cao khiến cho ứng dụng từ điển ngày càng trở nên quan
trọng, và ngay cả với những người dùng mà công việc không dùng đến ngoại
ngữ thì việc tra từ bất cứ lúc nào cũng rất cần thiết.
Bên cạnh những ứng dụng được cài đặt sẵn, thì hiện tại việc tra từ trên
các website cũng trở nên rất phổ biến. Phương án này mạng lại sự tiện lợi rất
nhiều cho người dùng do không phải cài đặt ứng dụng (điểm yếu duy nhất là
phải có kết nối mạng để có thể sử dụng dịch vụ). Bên cạnh bộ máy dịch thuật
nổi tiếng Google Translate thì các website Việt Nam có hỗ trợ dịch vụ từ điển
cũng phát triển không kém như: tratu.vn, vdict.com, tratu.soha.vn,...

Tuy nhiên, các phương án trên vẫn không thực sự đem lại sự tiện lợi
cho người dùng bằng các ứng dụng từ điển trên thiết bị di động.
1.3. Nhu cầu sử dụng từ điển trên điện thoại di động:
Phần trên cho thấy rõ được sự quan trọng, cần thiết của ứng dụng từ
điển. Nhưng không phải lúc nào người dùng cũng ngồi bên chiếc máy tính để
tra từ mới, học ngữ pháp.
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 2


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

Hầu hết mọi người đều sở hữu một chiếc điện thoại di động và sử dụng
nó để liên lạc, giải trí, đọc báo, trò chuyện và rất nhiều các dịch vụ khác.
Giờ đây để có thể tra từ mới, học cách phát âm, người dùng khơng cần
dùng đến một chiếc máy tính cồng kềnh hay cần phải có kết nối mạng mà chỉ
cần trong tay chiếc điện thoại di động và một ứng dụng từ điển nhỏ gọn.
1.4. Sự phát triển nhanh chóng của Hệ điều hành Android:
Các con số thống kê mới nhất cho thấy hệ điều hành Android đang từng
bước vượt mặt và nới rộng khoảng cách so với các đối thủ trên thị trường điện
thoại thông minh, kể cả so với iPhone của Apple.
Theo comScore, thị trường điện thoại thông minh Mỹ thời gian gần đây
có nhiều dấu hiệu cho thấy hệ điều hành Android của Google đã chế ngự hoàn
toàn hệ điều hành iOS của Apple và BlackBerry của RIM. Chỉ trong quý đầu
tiên của năm 2011, đã có đến 69,5 triệu người Mỹ sử dụng loại điện thoại này,
tăng 13% so với cuộc khảo sát tương tự kết thúc vào tháng 11/2010.
33% số người dùng điện thoại tuổi từ 13 trở lên tham gia cuộc khảo sát

cho biết họ thích hệ điều hành Android, 28,9% thích các dịng điện thoại
BlackBerry của RIM, trong khi chỉ có 25,2% người sử dụng chọn các sản
phẩm của Apple. Nhưng thê thảm hơn cả vẫn là Microsoft và Palm với tỷ lệ
thị phần tương ứng là 7,7% và 2,8%.
Theo các số liệu so sánh của comScore từ tháng 11/2010 đến nay, hệ
điều hành Android đang thực sự trở thành một “hiện tượng”. Thị phần của
Google tăng 7% tính từ thời điểm nói trên, trong khi Apple vẫn “dậm chân tại
chỗ”. RIM, Microsoft và Palm đã đánh mất thị phần, trong đó RIM là thê
thảm nhất, khi thị phần của hãng này giảm 4,6%.
Khi làm một phép so sánh về tương lai của hệ điều hành cho iPhone và
Android, khá dễ dàng để nhận thấy rằng hệ điều hành iOS của Apple là độc
quyền chỉ riêng cho iPhone, trong khi Android của Google lại có thể cài đặt

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 3


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

cho nhiều loại điện thoại thông minh và hệ quả tất yếu là bội số tăng cao
nhiều lần so với iOS.
Bình luận về “hiện tượng Android”, trang Business Insider cho biết lý
do giúp hệ điều hành của Google đang từng bước chiếm lĩnh thị trường là bởi
xu hướng phát triển trong tương lai sẽ là các thiết bị di động sử dụng chung
một hệ điều hành được chuẩn hóa. Vì thế, một hệ điều hành càng được ứng
dụng rộng rãi thì giá trị của nó càng được nâng tầm và sẽ rất khó để “hạ bệ”
được nó.

1.5. Hướng giải quyết bài tốn:
Đề tài được xây dựng trên hệ điều hành Android. Với nền tảng là ngơn
ngữ lập trình Java. Đây là một ngơn ngữ để phát triển các ứng dụng trên điện
thoại di động và các thiết bị cầm tay nhỏ gọn. Bằng cách sử dụng môi trường
ảo (Java Runtime Environment), ứng dụng viết bằng Java có kích thước nhỏ
gọn khơng gặp giới hạn về phần cứng và có thể chạy trên nhiều mơi trường
với khả năng tương tác cao.
Nền móng của từ điển là định dạng từ điển Stardict đã được xây dựng
sẵn, dễ dàng nhúng trên các ứng dụng cà có thể nạp bất cứ gói từ điển nào sẵn
có để sử dụng.
Ngoài các chức năng cơ bản của một từ điển thông thường, ứng dụng từ
điển được xây dựng trong đề tài có khả năng:
• Nạp từ điển dựa trên định dạng Stardict
• Chỉnh sửa, bổ sung nội dung từ điển
• Tổ chức và quản lý học từ mới theo phương pháp ghi nhớ
• Phát lại theo chủ đề người học quan tâm.
Đề tài lựa chọn bộ công cụ IDE ECLIPSE và ANDROID SDK để
phát triển ứng dụng.

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 4


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

CHƯƠNG II: CƠ SỞ LÝ THUYẾT
2.1 Cấu trúc định dạng StarDict:

2.1.1. Cấu trúc chung:
Mọi từ điển đều bao gồm 3 file chính sau:
1. dictname.ifo
2. dictname.idx
3. dictname.dict
và dictname.syn (khơng bắt buộc)
3 file chính cần được đặt trong cùng thư mục và có cùng tên file (chỉ
khác phần mở rộng). Các thơng tin chính được đọc trong file .ifo và từ đó
phân tích dữ liệu về từ trong file .idx rồi lấy chỉ mục trong đó ánh xạ sang file
.dict để lấy thơng tin của từ đó.
2.1.2. Cấu trúc file .ifo:
File .ifo chứa các thơng tin cơ bản về bộ từ điển, nội dung file gồm các
trường chính sau:
version=2.4.2
wordcount=103872

// Số mục từ có trong điển

idxfilesize=1976095
bookname=Anh Việt

//Tên từ điển

author=Hồ Ngọc Đức

//Tên tác giả

website= />description=convert to StarDict by Larry Nguyen
date=2005.10.09
sametypesequence=m

- Trường “idxfilesize”: là dung lượng tính theo byte của file .idx. Cho
dù khi được nén thành định dạng .gz thì nó vẫn lưu thơng tin về dung lượng
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 5


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

của file .idx gốc.
- Trường “idxoffsetbits”: chỉ có trong phiên bản StarDict 3.0.0 trở lên,
cịn ở phiên bản 2.4.2 thì khơng có (mặc định của phiên bản 2.4.2 giá trị
idxoffsetbits là 32bit). Idxoffsetbits: có giá trị là 32 hoặc 64 (chính là số
lượng bit của trường data_offset trong file .idx).
- Trường “synwordcount”: chỉ có nếu file .syn tồn tại.
- Trường “sametypesequence”: quy định cấu trúc dữ liệu được lưu
trong file .dict (với nhiều cấu trúc khác nhau tương ứng với các giá trị như: m,
l, g, t, x, y, k, w, h, r…).
2.1.3. Cấu trúc file .idx:
File .idx chứa danh sách cách từ có trong từ điển. Các từ này là một
danh sách được sắp xếp bởi các mục từ.
Cấu trúc một mục từ gồm 3 trường: word_str, word_data_offset,
word_data_size.
- word_str: là một chuỗi chứa một từ trong từ điển và kết thúc bởi ký tự
‘\0’. Có thể có hai hay nhiều mục từ có cùng “word_str” với word_data_offset
và word_data_size khác nhau. (tính năng này chỉ hỗ trợ từ phiên bản 2.4.8 trở
lên). Độ dài của “word_str” nhỏ hơn 256.
- word_data_offset: Nếu phiên bản là 3.0.0 và “idxoffsetbits”=64 thì

word_data_offset sẽ là số 64bit khơng dấu, còn các trường hợp khác là 32bits.
- word_data_size: là số 32bits không dấu.
2.1.4. Cấu trúc file .dict:
File .dict chứa tất cả dữ liệu về từ, bằng cách dựa vào offset và size
được ghi trong file .idx tương ứng.
- Nếu trường “sametypesequence” khơng được thiết lập trong file .ifo
thì data trong file .dict được cấu trúc như sau:
word_1_data_1_type;
word_1_data_1_data;
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 6


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

word_1_data_2_type;
word_1_data_2_data;
…..
……
word_2_data_1_type;
word_2_data_1_data;
Số lượng mục data của mỗi từ trong file .dict được quy định bởi
word_data_size đã khai báo trong file .idx. Điều này rất quan trong khi tìm
data cho một từ (nghĩa, cách phát âm…) vì việc tìm data của một từ chỉ kết
thúc khi đã hết dung lượng byte bằng với word_data_size trong file .idx.
- Nếu trường “sametypesequence” được thiết lập trong file .ifo là “tm”
thì data trong file .dict được cấu trúc như sau:

word_1_data_1_data;
word_1_data_2_data;
word_2_data_1_data;
word_2_data_2_data;
Mục dữ liệu đầu tiền của mỗi từ sẽ kết thúc bằng ký tự “\0”, nhưng mục
thứ 2 sẽ không kết thúc bằng ký tự “\0”.
Một vài cấu trúc data được sử dụng như:
- “sametypesequence=m”: dữ liệu ở dạng nghĩa nguyên thủy và là các
chuỗi utf-8, kết thúc bằng “\0”.
- “sametypesequence=h”: dữ liệu dạng mã html .
- “sametypesequence=y”: dữ liệu dành cho tiếng Trung YinBiao hoặc
tiếng Nhật KANA, dữ liệu là các chuỗi utf-8 kết thúc bởi ký tự “\0”.
- “sametypesequence=w”: dữ liệu file âm thanh wav.
- “sametypesequence=p”: dữ liệu ảnh.
2.1.5. Cấu trúc file .syn:
File .syn được hỗ trợ trong từ điển StarDict 2.4.8 trở lên.
File .syn chứa thông tin về các từ đồng nghĩa. Khi tra cứu một từ đồng
nghĩa, Startdict sẽ tìm kiếm một từ khác có liên quan đến nó.
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 7


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

Mỗi mục trong file .syn chứa một chuỗi synonym_word (chuỗi utf-8
kết thúc bởi ký tự “\0”) và một số original_word_index (chứa chỉ mục của từ
gốc trong file .idx).

Khi đầu vào là synonym_word, StarDict sẽ tìm kiếm các từ
originall_word có nghĩa tương tự.
synonym_word: có độ dài không quá 256.
original_word_index: là một số 32bits không dấu.
Hai hay nhiều mục có thể có cùng synonym_word với những
original_word_index khác nhau.
2.2. Lập trình trên Hệ điều hành Android:
2.2.1. Lịch sử Android:
Ban đầu, Android là hệ điều hành cho các thiết bị cầm tay dựa trên lõi
Linux do công ty Android Inc. (California, Mỹ) thiết kế. Công ty này sau đó
được Google mua lại vào năm 2005 và bắt đầu xây dựng Android Platform.
Các thành viên chủ chốt tại ở Android Inc. gồm có: Andy Rubin, Rich Miner,
Nick Sears, and Chris White.

Android timeline
Và sau tiếp, vào cuối năm 2007, thuộc về Liên minh Thiết bị Cầm tay
Mã Nguồn mở (Open Handset Alliance) gồm các thành viên nổi bật trong
ngành viễn thông và thiết bị cầm tay như:

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 8


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG,
Marvell Technology Group, Motorola, Nvidia, Qualcomm, Samsung

Electronics,

Sprint

Nextel,

T-Mobile,

ARM

Holdings,

Atheros

Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony
Ericsson, Toshiba Corp, and Vodafone Group,…
Mục tiêu của Liên minh này là nhanh chóng đổi mới để đáp ứng tốt hơn
cho 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
Android. Android được thiết kế để phục vụ nhu cầu của các nhà sản xuất thiết,
các nhà khai thác và các lập trình viên thiết bị cầm tay.
Phiên bản SDK lần đầu tiên phát hành vào tháng 11 năm 2007, hãng
T-Mobile cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc TMobile 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 Candidate 1.0. rong tháng 10 năm 2008, Google được cấp giấy phép mã
nguồn mở cho Android Platform.
Khi Android được phát hành thì một trong số các mục tiêu trong kiến
trúc củ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 các dịch vụ mà nó cịn được áp dụng cho cả các
thành phần dữ liệu và giao diện người dùng.

Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay
được gọi là Android Dev Phone 1 có thể chạy được các ứng dụng Android mà
không bị ràng buộc vào các nhà cung cấp mạng điện thoại di động. Mục tiêu
của thiết bị này là cho phép các nhà phát triển thực hiện các cuộc thí nghiệm
trên một thiết bị thực có thể chạy hệ điều hành Android mà không phải ký một
bản hợp đồng nào. Vào khoảng cùng thời gian đó thì Google cũng cho phát
hành một phiên vản vá lỗi 1.1 của hệ điều hành này.
Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ soft-keyboard mà đòi
hỏi các thiết bị phải sử dụng bàn phím vật lý. Android cố định vấn đề này
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 9


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

bằng cách phát hành SDK 1.5 vào tháng Tư năm 2009, cùng với một số tính
năng khác. Chẳng hạn như nâng cao khả năng ghi âm truyền thông, vật dụng,
và các live folder.
Từ những ngày đầu xuất hiện trên thị trường di động thế giới đến nay,
hệ điều hành Android của Google đã có những bước tiến nhanh vượt bậc.
Hiện có rất nhiều nhà sản xuất và nhà mạng quan tâm đến nó, dẫn đến sự ra
mắt đồng thời và liên tục của hàng loạt thiết bị nên trền tảng này. Tầm ảnh
hưởng của Android khơng chỉ gói gọn trên smartphone, mà cịn lan rộng
sang cả tablet (máy tính bảng), trên thiết bị phát HD và có mặt trên ơtơ, điển
hình là hệ thống IQon trên chiếc Saab Phoenix Concept ở Triển lãm ôtô
Geneva, cho phép ghi tình trạng sức khỏe người lái và chế độ vận hành của
chiếc xe thông qua hơn 500 cảm biến.

Những chiếc smartphone LG Optimus 2x, HTC Sensation và
Samsung Galaxy S2 chạy trên nền Android 2.3 đang gây được sự chú ý cho
người tiêu dùng hiện nay nhờ ở cấu hình mạnh mẽ với bộ vi xử lý hai nhân,
cho phép xử lý đồng thời nhiều tác vụ. Trong khi đó, thị trường tablet cũng
nhộn nhịp khơng kém khi các hãng sản xuất thiết bị điện tử tung ra hàng loạt
các dòng sản phẩm chạy trên nền Android 3.1 Honeycomb như Asus
Transformer, Acer Iconia Tab hay chiếc máy tính bảng siêu mỏng 10,1 inch
Galaxy Tab của Samsung được nhiều người quan tâm.
Trong khi các hệ điều hành khác như Windows phone, Symbian, Mego
đang chật vật để tìm kiếm thị phần thì Google sắp cho ra mắt các phiên bản hệ
điều hành Android 4.0 với tên gọi Ice-cream Sandwich nhằm phục vụ người
dùng tốt hơn trên cả điện thoại và máy tính bảng. Phiên bản mới sẽ có giao
diện được cải tiến đáng kể cùng với những tính năng nổi bật như 3D
Headtracking (theo dõi các chuyển động của người dùng dựa vào camera phía
trước của thiết bị, tương tự như hệ thống Kinect của Microsoft), nhận diện
khuôn mặt… Ngoài ra, Google cũng đang từng bước hoàn chỉnh mạng xã hội
Google+ cùng với ứng dụng tích hợp trên nền tảng Android, hứa hẹn sẽ mang
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 10


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

đến cho người sử dụng nhiều trải nghiệm mới đầy thú vị.
Những mã tên hệ điều hành Android chính là được đặt theo các món ăn
tráng miệng ngọt và các phiên bản chính của Android đã có là:
• Phiên bản 1.5, ra đời tháng 4-2009 có tên Bánh bơng lan (Cupcake).

• Phiên bản 1.6, ra đời tháng 9-2009 có tên Bánh rán vịng (Donut).
• Phiên bản 2.0/2.1, ra đời tháng 10-2009 có tên Bánh kẹp kem (Éclair).
• Phiên bản 2.2, ra đời tháng 5-2010 có tên Sữa chua đá (Froyo).
• Phiên bản 2.3, ra đời ngày 6-12-2010 có tên Bánh gừng (Gingerbread).
• Phiên bản 3.0, ra đời ngày 22-2-2010 có tên Tổ ong (Honeycomb).
• Phiên bản sắp tới có tên Ice-cream Sandwich là sự kết hợp giữa
Gingerbread và Honeycomb - một sân chơi mới cho cả smartphone và tablet.
2.2.2. Kiến trúc của android
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành
Android. Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây.

Cấu trúc stack hệ thống Android

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 11


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

2.2.2.1. Tầng ứng dụng
Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như:
contacts, browser, camera, Phone,… Tất cả các ứng dụng chạy trên hệ điều hành
Android đều được viết bằng Java.
2.2.2.2. Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho
các nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng
tạo. Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa

điểm truy cập, các dịch vụ chạy nền, thiết lập hệ thống báo động, thêm các
thông báo để các thanh trạng thái, và nhiều, nhiều hơn nữa.
Nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được sử
dụng bởi các ứng dụng lõi. Các kiến trúc ứng dụng được thiết kế để đơn giản
hóa việc sử dụng lại các thành phần; bất kỳ ứng dụng có thể xuất bản khả năng
của mình và ứng dụng nào khác sau đó có thể sử dụng những khả năng (có thể
hạn chế bảo mật được thực thi bởi khuôn khổ). Cơ chế này cho phép các thành
phần tương tự sẽ được thay thế bởi người sử dụng.
Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao
gồm:
- Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để
thiết kế phần giao diện ứng dụng như: gridview, tableview, linearlayout,…
- Một “Content Provider” cho phép các ứng dụng có thể truy xuất dữ liệu
từ các ứng dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các
ứng dụng đó.
- Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không
phải là mã nguồn, chẳng hạn như: localized strings, graphics, and layout files.
- Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các
custom alerts trong status bar.
Activity Maanager được dùng để quản lý chu trình sống của ứng dụng và

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 12


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp


điều hướng các activity.
2.2.2.3. Library
Android bao gồm một tập hợp các thư viên C/C++ được sử dụng bởi
nhiề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: a BSD-derived implementation of the standard C
system library (libc), tuned for embedded Linux-based devices.
- Media Libraries - based on PacketVideo's OpenCORE; the libraries
support playback and recording of many popular audio and video formats, as
well as static image files, including 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 - a modern web browser engine which powers both the
Android browser and an embeddable web view.
- SGL - the underlying 2D graphics engine.
- 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the
libraries use either hardware 3D acceleration (where available) or the
included, highly optimized 3D software rasterizer.
- FreeType - bitmap and vector font rendering.
- SQLite - a powerful and lightweight relational database engine available
to all applications.
2.2.2.4. Android Runtime
Android bao gồm một tập hợp các thư viện cơ bản mà cung cấp hầu hết
các chức năng có sẵn trong các thư viện lõi của ngơn ngữ lập trình Java. Tất cả
các ứng dụng Android đều chạy trong tiến trình riêng. Máy ảo Dalvik đã được
viết để cho một thiết bị có thể chạy nhiều máy ảo hiệu quả. Các VM Dalvik thực
thi các tập tin thực thi Dalvik (dex). Định dạng được tối ưu hóa cho bộ nhớ tối
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH


Trang: 13


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

thiểu. VM là dựa trên register-based, và chạy các lớp đã được biên dịch bởi một
trình biên dịch Java để chuyển đổi thành các định dạ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.
2.2.2.5. Linux kernel
Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi như
security, memory management, process management, network stack, and driver
model. Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và
phần còn lại của phần mềm stack.
2.2.3. 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 (Integrated
Development Enveronment) này để phát triển, debugging và testing cho ứng
dụng. Tuy nhiên, các coder cũng có thể khơng cần phải sử dụng IDE mà thay
vào đó là sử dụng command line để biên dịch và tất nhiên là vẫn có Emulator
như thường.
Android Emulator được trang bị đầy đủ hầu hết các tính năng của một
thiết bị thật. Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB,
camera và video, nghe phone, nguồn điện giả lập và bluetooth.
Android Emulator thực hiện các công việc thông qua một bộ xử lý mã
nguồn mở, công nghệ này được gọi là QEMU ( được
phát triển bởi Fabrice Bellard.

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH


Trang: 14


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

Android emulator
2.2.4. Các thành phần trong một android project
2.2.4.1. AndroidManifest.xml
Trong bất kì một project Android nào khi tạo ra đều có
một file AndroidManifest.xml, file này được dùng để định nghĩa các
screen sử dụng, các permission 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
manifest bao giờ cũng có 3 thành phần chính đó là: application, permission và
version.
Dưới đây là nội dung của một file AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" />package="dtu.k12tpm.pbs.activity"
android:versionCode="1"
android:versionName="1.0">
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 15



GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

android:label="@string/app_name">
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainContactListActivity" />
<activity android:name=".RestoreContactActivity" />
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.INTERNET"/>
android:name="android.permission.CALL_PHONE"/>
</manifest>
- Application : Thẻ <application>, bên trong thẻ này chứa các thuộc tính
được định nghĩa cho ứng dụng Android như:
+ android:icon = “drawable resource”: Ở đây đặt đường dẫn đến file icon
của ứng dụng khi cài đặt. VD: android:icon = “@drawable/icon”.
+ 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.
+ android:theme = “drawable theme”: thuộc tính này để đặt theme cho
ứng dụng. Các theme là các cách để hiển thị giao diện ứng dụng.
Ngồi ra cịn nhiều thuộc tính khác…

- Permission : Bao gồm các thuộc tính chỉ định quyền truy xuất và sử
dụng tài nguyên của ứng dụng. Khi cần sử dụng một loại tài ngun nào đó
thì trong file manifest của ứng dụng cần phải khai báo các quyền truy xuất như
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 16


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

sau:
android:name="android.permission.READ_PHONE_STATE"/>
android:name="android.permission.ACCOUNT_MANAGER"/>

android:name="android.permission.VIBRATE"

/>

<uses-permission android:name="android.permission.CALL_PHONE"/>
- SDK version : Thẻ xác định phiên bản SDK được khai báo như sau:
<uses-sdk android:minSdkVersion="7" />.
Ở đây chỉ ra phiên bản SDK nhỏ nhất mà ứng dụng hiện đang sử dụng.
2.2.4.2. File 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.
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào
xả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 ngồi vào project thì ngay lập tức thuộc tính đường
dẫn đến file đó cũng sẽ được hình thành trong file R.java hoặc xố một file hình
ảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xố.
Có thể nói file R.java hồn tồn khơng cần phải đụng chạm gì đến trong
cả quá trình xây dựng ứng dụng.
Dưới đây là nội dung của một file R.java:
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class id {
public static final int btnRefresh=0x7f050003;
public static final int expandableListView1=0x7f050002;
public static final int label1=0x7f050000;
public static final int listView1=0x7f050001;
public static final int txt1=0x7f050004;
}
public static final class layout {

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 17


GVHD: Ths. Nguyễn Trung Đức


}

Đồ án tốt nghiệp

public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
public static final int refresh=0x7f040002;
}

2.2.5. Chu kỳ ứng dụng android
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho
ứng dụng khi codes cần được run và sẽ còn chạy cho đến khi:
- Nó khơng phụ thuộc.
- Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác
Một sự khác thường và đặc tính cơ bản của Android là thời gian sống của
tiến trình ứng dụng khơng được điều khiển trực tiếp bới chính nó. Thay vào
đó, nó được xác định bởi hệ thống qua một kết hợp của:
- Những phần của ứng dụng mà hệ thống biết đang chạy
- Những phần quan trọng như thế nào đối với người dùng
Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống.
2.2.5.1. Chu kỳ sống thành phần
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ
lúc bắt đầu khởi tạo và đến thời điểm kết thúc. Giữa đó, đơi lúc chúng có thể là
active hoặc inactive, hoặc là trong trường hợp activies nó có thể visible hoặc
invisible
2.2.5.2. Activity Stack

Bên trong hệ thống các activity được quản lý như một activity stack. Khi
một Activity mới được start, nó được đặt ở đỉnh của stack và trở thành activity
đang chạy activity trước sẽ ở bên dưới activity mới và sẽ khơng thấy trong suốt
q trình activity mới tồn tại.
Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển
lên và trở thành active.

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 18


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

Activity stack

2.2.5.3. Các trạng thái của chu kỳ sống

Chu kỳ sống của Activity
Một Activity chủ yếu có 3 chu kỳ chính sau:
- Active hoặc running: Khi Activity là được chạy trên màn hình. Activity
này tập trung vào những thao tác của người dùng trên ứng dụng.
- Paused: Activity là được tạm dừng (paused) khi mất focus nhưng
người dùng vẫn trơng thấy. Có nghĩa là một Activity mới ở trên nó nhưng

Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 19



GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

không bao phủ đầy màn hình. Một Activity tạm dừng là cịn sống nhưng có thể
bị kết thúc bởi hệ thống trong trường hợp thiếu vùng nhớ.
Stopped: Nếu nó hồn tồn bao phủ bởi Activity khác. Nó vẫn cịn trạng
thái và thơng tin thành viên trong nó. Người dùng khơng thấy nó và thường bị
loại bỏ trong trường hợp hệ thống cần vùng nhớ cho tác vụ khác.
2.2.5.4. Chu kỳ sống của ứng dụng
Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành
phần đều có một chu trình sống riêng. Và ứng dụng chỉ được gọi là kết thúc khi
tất cả các thành phần trong ứng dụng kết thúc. Activity là một thành phần cho
phép người dùng giao tiếp với ứng dụng. Tuy nhiên, khi tất cả các Activity kết
thúc và người dùng khơng cịn giao tiếp được với ứng dụng nữa nhưng khơng có
nghĩa là ứng dụng đã kết thúc. Bởi vì ngồi Activity là thành phần có khả năng
tương tác người dùng thì cịn có các thành phần khơng có khả năng tương tác với
người dùng như là Service, Broadcast receiver. Có nghĩa là những thành phần
khơng tương tác người dùng có thể chạy background dưới sự giám sát của hệ
điều hành cho đến khi người dùng tự tắt chúng.
2.2.5.5. Các sự kiện trong chu kỳ sống của ứng dụng
Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống có thể bỏ
thơng tin khác của nó từ vùng nhớ bởi việc finish() (gọi hàm finish() của nó),
hoặc đơn giản giết tiến trình của nó. Khi nó được hiển thị lần nữa với người
dùng, nó phải được hồn toàn restart và phục hồi lại trạng thái trước. Khi một
Activity chuyển qua chuyển lại giữa các trạng thái, nó phải báo việc chuyển của
nó bằng việc gọi hàm transition.
Tất cả các phương thức là những móc nối mà bạn có thể override để làm

tương thich cơng việc trong ứng dụng khi thay đổi trạng thái. Tất cả các Activity
bắt buộc phải có onCreate() để khởi tạo ứng dụng. Nhiều Activity sẽ cũng hiện
thực onPause() để xác nhận việc thay đổi dữ liệu và mặt khác chuẩn bị dừng
hoạt động với người dùng.
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 20


GVHD: Ths. Nguyễn Trung Đức

Đồ án tốt nghiệp

2.2.5.6. Thời gian sống của ứng dụng
Bảy phương thức chuyển tiếp định nghĩa trong chu kỳ sống của một
Activity. Thời gian sống của một Activity diễn ra giữa lần đầu tiên gọi
onCreate() đến trạng thái cuối cùng gọi onDestroy(). Một Activity khởi tạo tồn
bộ trạng thái tồn cục trong onCreate(), và giải phóng các tài nguyên đang tồn tại
trong onDestroy().
2.2.5.7. Thời gian hiển thị của Activity
Visible lifetime của một activity diễn ra giữa lần gọi một onStart() cho
đến khi gọi onStop(). Trong suốt khoảng thời gian này người dùng có thể thấy
activity trên màn hình, có nghĩa là nó khơng bị foreground hoặc đang tương tác
với người dùng. Giữa 2 phương thức người dùng có thể duy trì tài ngun để
hiển thị activity đến người dùng.
2.2.5.8. Các phương thức của chu kỳ sống
* Phương thức: onCreate()
- Được gọi khi activity lần đầu tiên được tạo
- Ở đây bạn làm tất cả các cài đặt tĩnh -- tạo các view, kết nối dữ liệu đến
list và .v.v

- Phương thức này gửi qua một đối tượngBundle chứa đựng từ trạng
thái trược của Activity
- Luôn theo sau bởi onStart()
* Phương thức: onRestart()
- Được gọi sau khi activity đã được dừng, chỉ một khoảng đang khởi
động lần nữa (stared again)
- Luôn theo sau bởi onStart()
* Phương thức: onStart()
- Được gọi trước khi một activity visible với người dùng.
- Theo sau bởi onResume() nếu activity đến trạng thái foreground
hoặc onStop() nế nó trở nên ẩn.
Sinh viên: Nguyễn Đức Hiếu - CNT48ĐH

Trang: 21


×