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

Xây dựng chương trình ứng dụng từ điển anh việt trên hệ điều hành android

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.14 MB, 61 trang )

TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI 2
KHOA CÔNG NGHỆ THÔNG TIN

NGÔ HƢƠNG LY

XÂY DỰNG CHƢƠNG TRÌNH
ỨNG DỤNG TỪ ĐIỂN ANH – VIỆT
TRÊN HỆ ĐIỀU HÀNH ANDROID
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Chuyên ngành: Sƣ phạm Tin học

HÀ NỘI, 2016


TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI 2
KHOA CÔNG NGHỆ THÔNG TIN

NGÔ HƢƠNG LY

XÂY DỰNG CHƢƠNG TRÌNH
ỨNG DỤNG TỪ ĐIỂN ANH – VIỆT
TRÊN HỆ ĐIỀU HÀNH ANDROID
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Chuyên ngành: Sƣ phạm Tin học

Ngƣời hƣớng dẫn khoa học
PGS.TS. TRỊNH ĐÌNH THẮNG

HÀ NỘI - 2016



LỜI CẢM ƠN
Lời đầu tiên, em xin chân thành cảm ơn PGS.TS. Trịnh Đình Thắng,
trƣờng Đại học Sƣ phạm Hà Nội 2 đã trực tiếp hƣớng dẫn và chỉ bảo tận tình
cho em hoàn thành khoá luận này.
Em cũng xin gửi lời cảm ơn đến các thầy, cô giáo trong khoa Công
nghệ Thông tin, trƣờng Đại học Sƣ phạm Hà Nội 2, những ngƣời đã giúp đỡ,
tạo điều kiện cho em trong suốt quá trình học tập và nghiên cứu.
Cuối cùng em xin bày tỏ lòng biết ơn tới gia đình và bạn bè đã giúp đỡ,
động viên em rất nhiều trong suốt quá trình học tập để em có thể thực hiện tốt
khoá luận này.
Tuy đã có những cố gắng nhất định nhƣng do thời gian và trình độ có
hạn nên chắc chắn khoá luận này còn nhiều thiếu sót và hạn chế. Kính mong
nhận đƣợc sự góp ý của thầy, cô giáo và các bạn.
Hà Nội, tháng 05 năm 2016
Sinh viên
Ngô Hƣơng Ly


LỜI CAM ĐOAN
Tên em là: NGÔ HƢƠNG LY
Sinh viên lớp: K38 – Sƣ phạm Tin học, khoa Công nghệ Thông tin,
trƣờng Đại học sƣ phạm Hà Nội 2.
Em xin cam đoan:
1. Đề tài “Xây dựng chƣơng trình ứng dụng từ điển Anh – Việt
trên hệ điều hành Android” là sự nghiên cứu của riêng em, dƣới
sự hƣớng dẫn của thầy giáo PGS.TS. Trịnh Đình Thắng.
2. Khoá luận hoàn toàn không sao chép của tác giả nào khác.
Nếu sai em xin hoàn toàn chịu trách nhiệm.
Hà Nội, tháng 5 năm 2016
Ngƣời cam đoan

Ngô Hƣơng Ly


MỤC LỤC
MỞ ĐẦU ................................................................................................................ 1
CHƢƠNG 1: CƠ SỞ LÝ THUYẾT ...................................................................... 4
1.1. Lịch sử Android .............................................................................................. 4
1.2. Kiến trúc Android ........................................................................................... 5
1.3. Các thành phần cơ bản và cấu trúc của một ứng dụng Android ..................... 6
1.3.1. Các thành phần cơ bản của một ứng dụng Android .............................. 6
1.3.2. Cấu trúc của một ứng dụng Android ................................................... 13
1.4. Các công nghệ lƣu trữ dữ liệu của Android .................................................. 14
1.4.1. Shared Preferences .............................................................................. 14
1.4.2. Internal Storage ................................................................................... 15
1.4.3. External Storage .................................................................................. 15
1.4.4. Content Provider ................................................................................. 15
1.4.5. Cơ sở dữ liệu SQLite ........................................................................... 15
1.5. Text to speech ............................................................................................... 16
CHƢƠNG 2: PHÂN TÍCH HỆ THỐNG ............................................................. 18
2.1. Khảo sát hệ thống .......................................................................................... 18
2.1.1. Khảo sát hệ thống ................................................................................ 18
2.1.2. Xác định yêu cầu hệ thống .................................................................. 21
b. Yêu cầu phi chức năng .............................................................................. 22
2.2. Phân tích hệ thống ......................................................................................... 22
2.2.1. Biểu đồ use case .................................................................................. 22
2.2.2. Biểu đồ lớp .......................................................................................... 25
2.2.3. Biểu đồ trạng thái ................................................................................ 26


CHƢƠNG 3: THIẾT KẾ HỆ THỐNG ................................................................ 27

3.1. Biểu đồ tƣơng tác .......................................................................................... 27
3.1.1. Biểu đồ tƣơng tác cho chức năng tra từ .............................................. 27
3.1.2. Biểu đồ tƣơng tác cho chức năng xóa trong danh sách từ đã tra ........ 28
3.3.3. Biểu đồ tƣơng tác cho chức năng xem danh sách nhắc từ .................. 29
3.2. Biểu đồ lớp chi tiết ........................................................................................ 29
3.3. Biểu đồ hoạt động ......................................................................................... 31
3.3.1. Biểu đồ hoạt động miêu tả usecase Translate ..................................... 31
3.3.2.

Biểu

đồ

hoạt

động

miêu

tả

usecase

SeeAListOfTheTranslatedWords .................................................................. 31
3.4. Biểu đồ thành phần........................................................................................ 32
CHƢƠNG 4: XÂY DỰNG ỨNG DỤNG ........................................................... 33
4.1. Phát biểu bài toán .......................................................................................... 33
4.2. Cài đặt và thử nghiệm ................................................................................... 33
4.2.1 Kỹ thuật xử lý nguồn dữ liệu của từ điển............................................. 33
4.2.2. Kỹ thuật xử lý tra từ ............................................................................ 33

4.2.3. Kỹ thuật xử lý xem danh sách từ đã tra .............................................. 36
4.2.4. Kỹ thuật xử lý nhắc từ ......................................................................... 39
4.2.5. Kỹ thuật xử lý danh sách nhắc từ ........................................................ 43
4.2.6. Kỹ thuật xử lý phát âm ........................................................................ 44
4.2.7. Kỹ thuật xử lý tra từ từ tin nhắn .......................................................... 45
4.2.8. Kỹ thuật xử lý thêm từ ........................................................................ 46
4.3. Một số giao diện của ứng dụng ..................................................................... 47
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ........................................................... 49


TÀI LIỆU THAM KHẢO .................................................................................... 50
PHỤ LỤC ............................................................................................................. 51


DANH MỤC BẢNG BIỂU
Bảng 2.1. Danh sách các usecase…………………….……………………...23
Bảng 3.1. Danh sách các thuộc tính lớp Word……………………………....30
Bảng 3.2. Danh sách các phƣơng thức lớp Word……………………………30


DANH MỤC HÌNH VẼ
Hình 1.1. Kiến trúc Android…………………………………………………..5
Hình 1.2. Vòng đời hoạt động của Activity…….……………...…………......7
Hình 1.3. Vòng đời hoạt động của một service…………………………….....9
Hình 2.1. Ảnh minh hoạ cho từ điển Anh – Việt Vlook 1.6………………...18
Hình 2.2. Ảnh minh hoạ cho từ điển Lạc Việt (Anh – Việt) 2.5…………….19
Hình 2.3. Ảnh minh hoạ cho Dictionary English Vietnamese 2.2.2………...20
Hình 2.4. Ảnh minh hoạ cho từ điển TFlat 5.3.4…………………………….20
Hình 2.5. Biểu đồ usecase tổng quát………………………………………...22
Hình 2.6. Biểu đồ usecase cho chức năng tra từ……………………………..23

HÌnh 2.7. Biểu đồ usecase cho chức năng xem danh sách từ đã tra…………24
Hình 2.8. Biểu đồ usecase cho chức năng nhắc từ………………………......24
Hình 2.9. Biểu đồ lớp……………………………………………………......25
Hình 2.10. Biểu đồ trạng thái lớp Word chức năng tra từ…………………...26
Hình 2.11. Biểu đồ trạng thái lớp Word chức năng thêm từ………………...26
Hình 3.1. Biểu đồ tƣơng tác cho chức năng tra từ……………………….......27
Hình 3.2. Biểu đồ tƣơng tác cho chức năng xoá trong danh sách từ đã tra….28
Hình 3.3. Biểu đồ tƣơng tác cho chức năng nhắc từ……………………….29
Hình 3.4. Biểu đồ lớp chi tiết…………………………………………..........29
Hình 3.5. Biểu đồ hoạt động miêu tả usecase Traslate………………………31
Hình 3.6. Biểu đồ hoạt động miêu tả usecase SeeWordHistory……………..31
Hình 3.7. Biểu đồ thành phần…………………………………………..........32
Hình 4.1. Giao diện chính của ứng dụng…………………………………….47
Hình 4.2. Giao diện tra từ……………………………………………………48
Hình 4.3. Giao diện danh sách những từ đã tra……………………………...48



MỞ ĐẦU
1. Lý do chọn đề tài
Trong thời đại công nghệ thông tin phát triển nhƣ hiện nay, điện thoại
di động là một thiết bị không thể thiếu trong đời sống con ngƣời và ngày càng
có sự phát triển mạnh mẽ. Các dòng điện thoại thông minh đƣợc tích hợp
nhiều chức năng, cấu hình mạnh và kích thƣớc ngày càng nhỏ gọn đang dần
chiếm lĩnh thị trƣờng. Đáp ứng xu thế phát triển đó, việc xây dựng các ứng
dụng cho điện thoại di động đang là một ngành công nghiệp mới đầy tiềm
năng và hứa hẹn nhiều phát triển vƣợt bậc.
Có rất nhiều nền tảng di động phổ biến nhƣ IOS, WindowPhone,
Android, Symbia… nhƣng Android của Google đang là hệ điều hành phổ biến
nhất thế giới. Do Android có mã nguồn mở nên cho phép các nhà phát triển

thiết bị, mạng di động và các lập trình viên nhiệt huyết đƣợc điều chỉnh và
phân phối Android một cách tự do. Những ƣu điểm dễ thấy của Android
chính là khả năng tùy biến nhanh chóng, dễ làm quen, ứng dụng hỗ trợ phong
phú tƣơng thích với đa cấu hình phần cứng của các nhà sản xuất. Bên cạnh đó
nhu cầu sử dụng các ứng dụng trên hệ điều hành Android trên khắp thế giới là
rất cao.
Cùng với sự phát triển mạnh mẽ của hệ điều hành Android và nhu cầu
học tiếng Anh mọi lúc mọi nơi của ngƣời sử dụng, đã có rất nhiều từ điển
Anh – Việt đƣợc xây dựng trên hệ điều hành Android. Bên cạnh những ƣu
điểm thì một số ứng dụng vẫn còn những mặt hạn chế nhƣ chỉ dừng lại ở mức
dịch từ, tra từ, phát âm từng từ mà chƣa đáp ứng đƣợc những đòi hỏi cao hơn
của ngƣời sử dụng. Ngoài việc tra từ bằng cách nhập từ thông thƣờng, nhiều
ngƣời sử dụng muốn tra từ bằng tin nhắn, ngoài ra còn muốn xem danh sách
các từ đã tra, cập nhật thêm từ mới, nhắc từ khi muốn học từ mới…
Xuất phát từ ý tƣởng xây dựng một ứng dụng từ điển Anh – Việt phát
huy những ƣu điểm của những từ điển trƣớc và hoàn thiện, phát triển thêm
các chức năng mà ngƣời dùng mong muốn, em đã chọn đề tài “Xây dựng

1


chƣơng trình ứng dụng từ điển Anh – Việt trên hệ điều hành Android” làm
khóa luận tốt nghiệp.
2. Mục đích nghiên cứu
Mục đích của khóa luận là nghiên cứu hệ điều hành Android và xây
dựng ứng dụng từ điển Anh – Việt trên hệ điều hành Android.
3. Nhiệm vụ nghiên cứu
Trên cơ sở lý thuyết đã nghiên cứu, nhiệm vụ của khóa luận là phân
tích, thiết kế và xây dựng ứng dụng từ điển Anh – Việt.
4. Đối tƣợng và phạm vi nghiên cứu

- Đối tƣợng nghiên cứu: Hệ điều hành Android và Ứng dụng từ điển
Anh – Việt
- Phạm vi nghiên cứu: Ứng dụng từ điển Anh – Việt trên hệ điều hành
Android.
5. Ý nghĩa khoa học và thực tiễn của đề tài
- Ý nghĩa khoa học: Hệ điều hành Android ra đời, phát triển và có cơ sở
khoa học vững chắc giúp cho việc xây dựng ứng dụng trên điện thoại thông
minh trở nên dễ dàng. Hiện nay, việc xây dựng ứng dụng từ điển Anh – Việt
trên hệ điều hành Android bao gồm nhiều chức năng đang đƣợc các lập trình
viên và các nhà phát triển ứng dụng quan tâm và phát triển.
- Ý nghĩa thực tiễn: Ứng dụng từ điển Anh – Việt đƣợc xây dựng thành
công sẽ giúp cho ngƣời sử dụng tra nghĩa của từ tiếng Anh trong quá trình học
tiếng Anh hoặc dịch thuật.
6. Phƣơng pháp nghiên cứu
a. Phƣơng pháp nghiên cứu lý luận
Nghiên cứu qua việc đọc sách báo và các tài liệu liên quan nhằm xây
dựng cơ sở lý thuyết của đề tài và các biện pháp cần thiết để giải quyết các
vấn đề của đề tài.

2


b. Phƣơng pháp chuyên gia
Tham khảo ý kiến của các chuyên gia để có thể thiết kế chƣơng trình
phù hợp với yêu cầu thực tiễn. Nội dung xử lý nhanh đáp ứng đƣợc yêu cầu
ngày càng cao của ngƣời sử dụng.
c. Phƣơng pháp thực nghiệm
Thông qua quan sát thực tế, yêu cầu của cơ sở, những lý luận đƣợc
nghiên cứu và kết quả đạt đƣợc qua những phƣơng pháp trên.
7. Cấu trúc khóa luận

Ngoài phần mở đầu, kết luận và hƣớng phát triển, tài liệu tham khảo
khóa luận gồm các chƣơng nội dung, cụ thể nhƣ sau:
Chƣơng 1: Cơ sở lý thuyết
Chƣơng 2: Phân tích hệ thống
Chƣơng 3: Thiết kế hệ thống
Chƣơng 4: Xây dựng ứng dụng

3


CHƢƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Lịch sử Android
Android là một hệ điều hành trên điện thoại di động, đƣợc phát triển
trên cơ sở của hệ điều hành Linux. Ban đầu nó đƣợc phát triển bởi một công
ty có cùng tên là Android, Inc. Vào năm 2005, nhƣ một chiến lƣợc của việc
gia nhập vào thị trƣờng điện thoại di động, Google đã mua lại Android và tiếp
quản công việc phát triển đó.
Google muốn Android trở nên mở và miễn phí. Vì lí do đó, hầu hết
code của Android đều đƣợc phát hành dƣới dạng open source Apache License,
điều đó có nghĩa là bất kì ngƣời nào muốn sử dụng Android chỉ việc tải về bộ
cài đặt Android. Hơn nữa, các nhà cung cấp (thƣờng là các nhà sản xuất phần
cứng) có thể thêm những phần mở rộng độc quyền vào Android và tùy chỉnh
Android để tạo nên sự khác biệt so với các sản phẩm khác. Mô hình phát triển
đơn giản làm cho Android rất hấp dẫn và thu hút sự quan tâm của rất nhiều
nhà cung cấp. Điều này đặc biệt đúng với các công ty bị ảnh hƣởng bởi hiện
tƣơng Iphone của Apple, một sản phẩm cự kỳ thành công đã tạo nên cuộc
cách mạng của nền công nghiệp di động. Trong các công ty ấy bao gồm cả
Motorola và SonyEricson, các công ty này trong nhiều năm đã phát hệ điều
hành trên điện thoại di động của họ. Và họ nhận thấy Android nhƣ là một giải
pháp: họ sẽ tiếp tục design phần cứng và sử dụng Android sử dụng Android

làm hệ điều hành. Trong thế giới smartphone, phần mềm là phần quan trọng
nhất quyết định thành công, các nhà sản xuất thiết bị nhận thấy Android là hi
vọng lớn nhất để thách thức lại sự tấn công của Iphone.
Android bắt đầu với bản beta đầu tiên vào tháng 11 năm 2007 và bản
thƣơng mại đầu tiên Android 1.0 đƣợc phát hành vào tháng 9 năm 2008. Kể
từ tháng 4 năm 2009, phiên bản Android đƣợc phát triển đặt theo chủ đề bánh
kẹo và phát hành theo bảng chữ cái: Cupcake (1.5), Donut (1.6), Eclair (2.0–
2.1), Froyo (2.2–2.2.3), Gingerbread (2.3–2.3.7), Honeycomb (3.0–3.2.6), Ice
Cream Sandwich (4.0–4.0.4), Jelly Bean (4.1–4.3), KitKat (4.4), Lollipop

4


(5.0-5.1.1). Vào 3 tháng 9 2013, Google công bố rằng 1 tỉ thiết bị đã đƣợc
kích hoạt hiện sử dụng hệ điều hành Android trên toàn cầu.
1.2. Kiến trúc Android
Hệ điều hành Android đƣợc chia thành 5 thành phần trong 4 lớp, mô
hình dƣới đây sẽ cho ta cái nhìn tổng quát về kiến trúc Android:

Hình 1.1. Kiến trúc Android
 Linux kernel
Đây là nhân của Android. Lớp này có các trình điều khiển thiết bị cấp
thấp cho các thành phần phần cứng khác nhau của một thiết bị Android
 Libraries
Libraries bao gồm tất cả các mã cung cấp các tính năng chính của hệ
điều hành Android. Ví dụ nhƣ SQLite library cung cấp cơ sở dữ liệu hỗ trợ
cho các ứng dụng có thể sử dụng nó để lƣu trữ dữ liệu. Hay nhƣ WebKit
library cung cấp những hàm dùng cho duyệt web.

5



 Android runtime
Tại cùng lớp với Libraries, Android runtime cung cấp một tập các core
library mà cho phép các lập trình viên viết ứng dụng Android sử dụng ngôn
ngữ lập trình Java. Android runtime cũng bao gồm các máy ảo Dalvik cho
phép mọi ứng dụng Android chạy trên tiến trình riêng của nó. Dalvik là một
máy ảo đƣợc thiết kế đặc biệt cho Android và tối ƣu hóa cho các thiết bị chạy
bằng pin với bộ nhớ và CPU hạn chế.
 Application framework
Application framework đƣa ra những khả năng khác nhau của hệ điều
hành Android cho những nhà phát triển mà họ có thể đƣa vào app của họ.
 Application
Application là lớp ở trên cùng, bạn sẽ thấy những app liên quan đến
thiết bị Android (nhƣ là Phone, Contact, Browser…) cũng nhƣ các ứng dụng
mà bạn phải tải từ Android market.
1.3. Các thành phần cơ bản và cấu trúc của một ứng dụng Android
1.3.1. Các thành phần cơ bản của một ứng dụng Android
Một ứng dụng Android có các thành phần cơ bản sau:
a. Activity
Mỗi activity là một cửa sổ hiển thị giao diện ngƣời dùng. Thông thƣờng,
một ứng dụng có thể gồm chỉ một activity hay nhiều activity và mục đích
chính của activity là tƣơng tác với ngƣời dùng. Từ thời điểm một activity xuất
hiện trên màn hình cho đến khi nó đƣợc ẩn đi, nó đã đi qua một số giai đoạn
gọi là vòng đời hoạt động của một acticity. Hiểu rõ vòng đời hoạt động của
acticity là rất quan trọng để đảm bảo rằng ứng dụng của bạn hoạt động một
cách chính xác.
Lớp cơ sở Activity định nghĩa một loạt các sự kiện ảnh hƣởng đến vòng
đời hoạt động của Activity. Lớp Activity định nghĩa các sự kiện sau đây:
- onCreate(): Đƣợc gọi khi activity đƣợc tạo ra lần đầu tiên.

- onStart(): Đƣợc gọi khi activity đƣợc hiển thị với ngƣời dùng.
- onResume(): Đƣợc gọi khi activity bắt đầu tƣơng tác với ngƣời dùng.
6


- onPause(): Đƣợc gọi khi acticity hiện thời đƣợc tạm dừng và activity
trƣớc đó đƣợc resumed.
- onStop(): Đƣợc gọi khi activity không còn hiển thị với ngƣời dùng
- onDestroy(): Đƣợc gọi trƣớc khi activity bị phá hủy bởi hệ thống (có
thể do ngƣời dùng hoặc hệ thống để tiết kiệm bộ nhớ)
- onRestart(): Đƣợc gọi khi activity đã đƣợc dừng lại và đang khởi
động lại.
Vòng đời hoạt động của Activity

Hình 1.2. Vòng đời hoạt động của Activity
- Toàn bộ thời gian sống của một activity xảy ra giữa lời
gọi hàm onCreate() và onDestroy(). Activity của bạn nên thực hiện thiết đặt
toàn cục “global setup” nhƣ định nghĩa layout trong hàm onCreate(), và trả lại
toàn bộ tài nguyên trong phƣơng thức onDestroy(). Ví dụ, nếu một activity có
một tuyến đang chạy ngầm để download dữ liệu, nó có thể tạo ra tuyến đó
trong phƣơng thức onCreate() và dừng tuyến trong phƣơng thức onDestroy().
- Thời gian sống thật (visible lifetime) của một activity xảy ra giữa lời
gọi phƣơng thức onStart() và onStop(). Trong suốt thời gian này, ngƣời dùng
có thể nhìn thấy activity trên màn hình và tƣơng tác với chúng. Ví dụ, onStop()

7


đƣợc gọi khi một activity mới bắt đầu. Giữa hai phƣơng thức này, bạn có thể
quản lý các nguồn tài nguyên cần thiết để hiển thị activity tới ngƣời dùng.

- Thời gian chờ foreground lifetime của một activity xảy ra giữa hai lời
gọi onResume() và onPause(). Một activity có thể thƣờng xuyên chuyển trạng
thái thành trạng thái chờ và hoạt động– ví dụ, onPause() đƣợc gọi khi thiết bị
phần cứng ở trạng thái ngủ hoặc một hộp thoại xuất hiện. Bởi vì trạng thái
này có thể xảy ra thƣờng xuyên nên mã lệnh trong hai phƣơng thức này nên
đƣợc viết cẩn thận để tăng tốc độ chuyển giữa các chế độ.
b. Service
Service là một thành phần của một ứng dụng Android đƣợc chạy bên
trong nền để xử lý các công việc trong thời gian dài và không cung cấp giao
diện ngƣời dùng . Ví dụ nhƣ ứng dụng download có thể tải dữ liệu trên mạng
về máy mà không ngăn chặn ngƣời dùng tƣơng tác với các ứng dụng khác.
Một service gồm hai trạng thái cơ bản:
- Started: Một service đƣợc gọi là started khi một thành phần của ứng
dụng, chẳng hạn nhƣ là activity, start nó bằng cách gọi phƣơng thức
startService(). Mỗi lần đƣợc started, service chạy bên dƣới vô thời hạn, thậm
chí ngay cả khi thành phần started nó bị huỷ.
- Bound: Một service đƣợc gọi là bound khi một thành phần ứng dụng
liên kết với nó bằng cách gọi phƣơng thức bindService(). Một dịch vụ ràng
buộc cung cấp một giao diện client – server cho phép các thành phần tƣơng
tác với server, gửi yêu cầu, nhận kết quả, thậm chí tƣơng tự trong việc giao
tiếp với interprocess.

8


Hình 1.3. Vòng đời của một service
c. Content Provider
Content providers quản lý truy cập tới dữ liệu. Chúng đóng gói dữ liệu,
và cung cấp cơ chế cho phép định nghĩa bảo mật dữ liệu. Content providers là
giao diện chuẩn kết nối dữ liệu trong một tiến trình cùng với mã nguồn chạy

trong các tiến trình khác.
Khi bạn muốn kết nối tới dữ liệu trong content provider, bạn sử đối
tƣợng ContentResolver trong ứng dụng Context để giao tiếp với provider
nhƣ một máy khách. Đối tƣợng ContentResolver giao tiếp với đối tƣợng, một
thể hiện của lớp triển khai từ giao diện ContentProvider. Đối tƣợng provider
nhận dữ liệu yêu cầu từ clients, xử lý yêu cầu và trả lại kết quả.
Bạn không cần phát triển provider của riêng bạn nếu không muốn chia
sẻ dữ liệu với các ứng dụng khác. Tuy nhiên, bạn cần provider của mình để
cung cấp những gợi ý cho tìm kiếm trong ứng dụng của bạn. Bạn luôn cần
9


provider vì nếu bạn muốn sao chép và dán dữ liệu phức tạp hoặc các tệp từ
ứng dụng của bạn sang ứng dụng khác.
Android tự nó đã bao gồm content providers để quản lý dữ liệu nhƣ
audio, video, images, và các thông tin liên hệ của bạn. Bạn có thể nhìn thấy
một vài thông tin đƣợc liệt kê bằng cách sử gói

android.provider.Các

provider này có thể kết nối tới các ứng dụng Android khác với một số hạn chế
nhất định.
Một số chủ đề quan trọng của Content Provider:
- Content Provider Basics
- Creating a Content Provider
- Calendar Provider
- Contact Provider
d. Broadcast Receiver
Một Broadcast Rreceiver là một thành phần không làm gì ngoài việc
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 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 nhƣ lóe
sáng đèn sau, rung, tạo ra âm thanh,.... Chúng thƣờng tạo một biểu tƣợng
trong thanh trạng thái, nhờ đó ngƣời dùng có thể mở để lấy thông điệp.

10


e. Intents và Intent filter
Intents đƣợc sử dụng nhƣg một cơ chế gửi thông điệp triệu gọi một
hành động để xử lý, thƣờng đi kèm với dữ liệu.
Bạn có thể sử dụng Intents để hỗ trợ sự tƣơng tác giữa bất kỳ thành
phần ứng dụng trên một thiết bị Android. Nó trả ra một tập các thành phần
độc lập tới một thành phần đơn lẻ, kết nối bên trong hệ thống.
Intents thƣờng đƣợc sử dụng để bắt đầu một Activity mới, bên trong
hoặc bên ngoài ứng dụng.
Intents cũng có thể đƣợc sử dụng để quảng bá các thông điệp trên toàn
hệ thống. Bất kỳ ứng dụng nào đăng ký một Broadcast Receiver cũng có thể
lắng nghe và lấy dữ liệu từ đối tƣợng Intents gửi thông điệp.
Sử dụng Intents để lan truyền các hành động – sự kiện bên trong các
ứng dụng giống nhau – là một phần cơ bản của nguyên lý thiết kế Android.

Trong phần lớn các trƣờng hợp, Intents đƣợc sử dụng để ràng buộc các
thành phần trong ứng dụng của bản. Intents đƣợc sử dụng để bắt đầu (start)
hoặc dừng (stop) và chuyển giữa các Activity trong một ứng dụng. Tuy nhiên
nó cũng có thể sử dụng để kích hoạt các Service.
Để mở một màn hình ứng dụng khác (Activity) trong ứng dụng của bạn,
gọi phƣơng thức startActivity, thông qua một Intent.
startActivity(myIntent);
Khi phƣơng thức này đƣợc gọi, nó sẽ tìm và kích hoạt một Activity đơn
mà nó tìm thấy trong ứng dụng. Khi sử dụng startActivity, ứng dụng của bạn
sẽ không nhận bất kỳ thông báo nào đến khi quá trình kích hoạt kết thúc.
f. Process và Thread
Một ứng dụng có thể bao gồm một hay nhiều tiến trình. Một tiến trình
là một đơn vị cơ bản khi một chƣơng trình đƣợc thực thi. Một hoặc nhiều
tuyến (Thread) luôn chạy bên trong một tiến trình. Tuyến là một thực thể
trong một tiến trình, nó có thể đƣợc lập lịch cho việc thực thi. Một tiến trình
bắt đầu với một tuyến đơn, luôn gọi đến một tuyến chính hoặc mặc định. Hơn
thế nữa, tuyến có thể đƣợc tạo ra một cách tự động nếu cần thiết.
11


Process
Mỗi ứng dụng là một tiến trình có tài nguyên và không gian bộ nhớ
riêng. Trong một tiến trình có thể có một hoặc nhiều tuyến.
Android có thể quyết định tắt một tiến trình tại một vài thời điểm, khi
bộ nhớ đầy và đƣợc yêu cầu bởi các tiến trình khác. Các thành phần ứng dụng
chạy trong tiến trình bị chết là kết quả của việc gọi hàm hủy. Một tiến trình
đƣợc khởi động trở lại khi các tiến trình khác kích hoạt chúng.
Khi quyết định tiến trình nào bị hủy, Android đánh trọng số quan trọng
của tiến trình đó với ngƣời dùng. Ví dụ, hệ thống sẽ tắt tiến trình hosting vì nó
không xuất hiện trên màn hình trong thời gian dài, do đó, phụ thuộc vào trạng

thái của các thành phần đang chạy mà hệ thống sẽ quyết định hủy tiến trình
nào.
Thread
Thông thƣờng dùng Thread để xử lý các code xử lý nặng, hoặc mất thời
gian có thể gây chậm chƣơng trình hoặc giao diện bị block.
Thread khá thông dụng và trong Android dùng lớp Thread
của

Java. Mặc định, mỗi ứng dụng chạy trong một process và code đƣợc

thực thi trong thread chính của process đó.
Nếu code xử lý quá lâu, không kịp phản hồi lại các sự kiện ngƣời dùng
trong 5 giây thì sẽ xuất hiện dialog “Application is not responding” và ngƣời
dùng có thể đóng ứng dụng ngay lập tức.
Dù không bị đóng ứng dụng thì việc ứng dụng bị chậm
là khó chấp nhận.
Handle
Trong Android, để tiện việc giao tiếp giữa 2 thread ta dùng đối tƣợng
Handler.
Ngoài ra, có thể dùng Handler để đặt xử lý một yêu cầu nào đó sau một
khoảng thời gian xác định.

12


1.3.2. Cấu trúc của một ứng dụng Android
Android project là một hệ thống thƣ mục và file chứa toàn bộ source
code, tài nguyên,… mà mục đích cuối cùng là để đóng gói thành một file .apk
duy nhất. File có đuôi .apk là file ứng dụng của Android .
Trong một thƣ mục project, có một số thành phần (file, thƣ mục con)

đƣợc tạo ra mặc định, còn lại phần lớn thì sẽ đƣợc tạo ra sau nếu cần trong
quá trình phát triển ứngdụng. Cấu trúc đầy đủ của một thƣ mục project:
- src/: Chứa toàn bộ source code (file .java hoặc .aidl) .
- bin/ : Thƣ mục chức file Output sau khi build. Đây là nơi bạn có thể
tìm file .apk.
- gen/ : Chứa các file .java tham chiếu với tất cả resource có trong
project. Bạn không nên sửa file này, tất cả resource trong project tự động biên
dịch vào lớp này để bạn có thể gọi chúng
- res/: Chứa các tài nguyên (resources) cho ứng dụng, chẳng hạn nhƣ
file hình ảnh, file layout, các chuỗi (string),…
- anim/ : Chứa các file .xml dùng cho việc thiết lập các hiệu ứng động
(animation)
- color/ : Chứa các file .xml dùng định nghĩa màu sắc.
- drawable/ :Chứa file hình ảnh (png, jpeg, gif), file .xml định nghĩa
cách vẽ các loại hình dạng khác nhau (shape).
- layout/: Chứa file .xml dùng để dựng giao diện ngƣời dùng.
- menu/: Chứa file .xml quy định application menu.
- raw/ : Chứa các file media, chẳng hạn nhƣ .mp3 hay .ogg
- values/: Chứa file .xml định nghĩa các giá trị. Khác với các resource
trong các thƣ mục khác, resource ở thƣ mục này khi đƣợc định danh trong lớp
R thì sẽ không sử dụng file name để định danh, mà sẽ đƣợc định danh theo
quy định bên trong file .xml đó.
- xml/: Dùng chứa các file .xml linh tinh khác, chẳng hạn nhƣ file xml
quy định app widget, search metadata,…
- libs/ : Chứa các thƣ viên riêng.
13


- AndroidManifest.xml/ : File kiểm soát cách các thành phần trong ứng
dụng (activity, service, intent receiver,…) tƣơng tác với nhau, cách ứng dụng

tƣơng tác với các ứng dụng khác, cũng nhƣ đăng ký các quyền hạn về sử dụng
tài nguyên trong máy.
- build.properties : Tùy chỉnh các thiết lập cho hệ thống build, nếu bạn
sử dụng Eclipse thì file này không cần thiết.
- build.xml: Chỉ sử dụng khi bạn dùng dòng lệnh (command line) để
kiến tạo project.
- default.properties: File này chứa các thiết lập cho project, chẳng hạn
nhƣ build target, min SDK version,… tốt hơn hết là không nên chỉnh sửa file
này bằng tay.
1.4. Các công nghệ lƣu trữ dữ liệu của Android
1.4.1. Shared Preferences
Android cung cấp đối tƣợng Shared Preferences để giúp bạn lƣu trữ
những dữ liệu đơn giản. Ví dụ ứng dụng của bạn cho phép ngƣời dùng lƣu
font size của text đƣợc hiển thị trong ứng dụng. Trong trƣờng hợp này bạn
cần lƣu size của text để khi ngƣời dùng truy xuất vào lần tiếp theo text sẽ
đƣợc load với size đã lƣu. Bạn có nhiều cách để làm nhƣ vậy. Bạn có thể lƣu
dữ liệu vào một file, nhƣng bạn cần phải làm các thao tác quản lý file đó. Và
vì thế, nếu bạn có những mẩu thông tin nhỏ cần lƣu trữ thì việc lƣu chúng vào
file sẽ trở nên nặng nề. Một lựa chọn khác là lƣu dữ liệu vào database nhƣng
cũng không phù hợp. Bạn chỉ cần sử dụng Shared Preferences, lƣu dữ liệu
dƣới dạng name/ value và dữ liệu đó sẽ tự động đƣợc lƣu dƣới dạng file xml
cho bạn.
 Tạo và lƣu trữ Preferences
Để tạo và thay đổi một Shared Provider, gọi phƣơng thức
getSharedPreferences trên ứng dụng. Shared Provider chia sẻ dữ liệu thông
qua các thành phần của một ứng dụng nhƣng không có khả năng chia sẻ tới
các ứng dụng khác. Để thay đổi một Shared Provider dùng lớp
SharedPreferences.Editer. Lấy đối tƣợng Editer bằng việc gọi phƣơng thức
14



edit() trên đối tƣợng Shared Provider mà bạn muốn thay đổi. Để lƣu lại các
thay đổi, gọi hàm commit().
 Lấy về giá trị Preferences chia sẻ
Truy cập tới dữ liệu đƣợc chia sẻ thông qua phƣơng thức
getSharedPreferences.
Thông qua tên của Shared Preferences bạn muốn truy cập, và sử dụng
phƣơng thức get<type> để lấy về giá trị, trong đó type là kiểu dữ liệu đƣợc
lƣu trữ trƣớc đó.
1.4.2. Internal Storage
- File đƣợc lƣu trực tiếp trên thiết bị bộ nhớ trong.(Internal Storage)
- Dữ diệu này là private và chỉ chịu sự quản lí của chính ứng dụng đang
chạy nó, các ứng dụng khác không thể truy cập đƣợc.
1.4.3. External Storage
Dữ liệu đƣợc lƣu trữ ở bộ nhớ ngoài ( External Storage )
 Ƣu điểm:
- Không gian lƣu trữ lớn
- Dễ di chuyển giữa các thiết bị: máy tính, điện thoại di động
- Dễ thay thế nâng cấp
 Nhƣợc điểm:
- Tính bảo mật không cao : dữ liệu đƣợc sử dụng chung.
- Tốc độ truy cập thấp.
1.4.4. Content Provider
Cung cấp một giao diện cho việc lƣu trữ và chia sẻ các dữ liệu riêng tƣ.
Bạn có thể điều khiển truy cập tới Content Provider để sử dụng các quyền cơ
bản của hệ thống.
1.4.5. Cơ sở dữ liệu SQLite
SQLite cơ bản là 1 hệ quản trị cơ sở dữ liệu thu nhỏ, nó không có
server, thao tác trên file và có thể sử dụng bởi bất cứ hệ điều hành nào.


15


×