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

Tìm hiểu hđh android và xây dựng ứng dụng minh họa phần mềm học tiếng anh

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 (2.89 MB, 60 trang )

TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CNTT & TT
BỘ MÔN TIN HỌC ỨNG DỤNG

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

Tìm hiểu HĐH Android và xây dựng ứng dụng
minh họa phần mềm Học Tiếng Anh
Sinh viên thực hiện

Cán bộ hướng dẫn

Nguyễn Phúc Vinh

Th.s Nguyễn Minh Trung

MSSV:1111560

Cần Thơ, 2015


TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CNTT & TT
BỘ MÔN TIN HỌC ỨNG DỤNG

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

Tìm hiểu HĐH Android và xây dựng ứng dụng
minh họa phần mềm Học Tiếng Anh
Cán bộ hướng dẫn


Sinh viên thực hiện
Nguyễn Phúc Vinh

Ths. Nguyễn Minh Trung

MSSV:1111560

Cán bộ phản biện
Ths. Lê Thị Diễm
Ks. Lê Văn Quan
Luận văn được bảo vệ tại:Hội đồng chấm luận văn tốt nghiệp Bộ môn Tin học Ứng
dụng, Khoa CNTT & TT, Trường Đại học Cần Thơ vào ngày 26 tháng 6 năm 2015

Mã số đề tài:

Cần Thơ, 2015


LỜI CẢM ƠN
Tôi xin chân thành cảm ơn Quý thầy cô Khoa Công nghệ thông tin và Truyền
thông, trường Đại học Cần Thơ đã tận tình dạy bảo và truyền thụ những kiến thức
quý báu trong suốt thời gian tôi học tập tại trường, cũng như tạo điều kiện để tôi có
thể hoàn thành tốt đề tài luận văn.
Tôi xin chân thành cảm ơn thầy Nguyễn Minh Trung đã tận tình hướng dẫn,
giúp đỡ tôi trong suốt quá trình thực hiện đề tài, tôi có thể hoàn thành đề tài này cũng
nhờ sự giúp đỡ nhiệt tình của thầy.
Tôi xin cảm ơn tất cả bạn bè, các bạn sinh viên ngành Tin học ứng dụng khóa
37 đã giúp đỡ, đóng góp nhiều ý kiến quý báu để tôi có thể chỉnh sửa và khắc phục
kịp thời.
Mặc dù đã cố gắng khắc phục và hoàn thiện đề tài được tốt hơn nhưng chắc

chắn tôi cũng mắc những sai lầm trong quá trình thực hiện. Rất mong nhận được sự
thông cảm, phê bình và những ý kiến quý báu của thầy cô.
Tôi xin chân thành cảm ơn.
Cần Thơ, ngày 15 tháng 06 năm 2015
Người thực hiện

Nguyễn Phúc Vinh

i


MỤC LỤC
LỜI CẢM ƠN .............................................................................................................1
MỤC LỤC .................................................................................................................. ii
DANH MỤC HÌNH .................................................................................................. iv
DANH MỤC BẢNG ................................................................................................. vi
TÓM TẮT ................................................................................................................ vii
ABSTRACT ............................................................................................................ viii
Chương 1. GIỚI THIỆU .............................................................................................1
1.1. ĐẶT VẤN ĐỀ.................................................................................................1
1.2. PHẠM VI ĐỀ TÀI ..........................................................................................1
1.3. PHƯƠNG PHÁP NGHIÊN CỨU...................................................................1
Chương 2. CƠ SỞ LÝ THUYẾT ................................................................................2
2.1. HỆ ĐIỀU HÀNH ANDROID [6,8] ................................................................2
2.1.1.

Tổng quan về hệ điều hành Android ..........................................................2

2.1.2.


Các phiên bản Android...............................................................................2

2.1.3.

Kiến trúc HĐH Android .............................................................................3

2.1.3.1. Phần cứng ........................................................................................3
2.1.3.2. Hệ điều hành Android ......................................................................4
2.1.3.3. Kết nối mạng....................................................................................6
2.1.3.4. Bảo mật ............................................................................................7
2.1.4.

Cấu trúc của một ứng dụng Android ..........................................................7

2.1.4.1. Các thành phần của một ứng dụng Android ....................................7
2.1.4.2. Cấu trúc lưu trữ dự án trong Android ..............................................9
Thư mục mã nguồn (SRC): .............................................................................9
2.2. TEXT TO SPEECH TRONG ANDROID ....................................................11
2.2.1.

Giới thiệu về Text to Speech ....................................................................11

2.2.2.

Cách sử dụng Text to Speech ...................................................................11

2.3. SQLITE .........................................................................................................12
2.3.1.

Giới thiệu SQLite .....................................................................................12


2.3.2.

Chi tiết về các đặc tính SQLite ................................................................13

2.4. GIỚI THIỆU VỀ LINQ ................................................................................14

ii


2.4.1.

LinQ là gì ? ...............................................................................................14

2.4.2.

Tại sao nên dùng LinQ ? ..........................................................................14

2.4.3.

Cách dùng LinQ .......................................................................................14

2.5. DỊCH VỤ WEB (WEB SERVICES) [1,3,5] ................................................16
2.5.1.

Kiến trúc dịch vụ Web .............................................................................16

2.5.2.

Xây dựng ứng dụng Web .........................................................................17


2.5.3.

Cách đưa CSDL và ứng dụng Web lên Web Service trên mạng .............20

2.5.4.

Giao tiếp giữa Android và Web Service dựa trên SOAP [1] ...................27

2.5.5.

Sử dụng dịch vụ Web trong Android .......................................................29

2.5.6.

Thư viện kSoap trong Android [1,3] ........................................................30

Chương 3. NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU ..........................................38
3.1. PHÂN TÍCH CHƯƠNG TRÌNH ..................................................................38
3.1.1.

Giới thiệu. .................................................................................................38

3.1.2.

Luật chơi và cách tính điểm .....................................................................38

3.1.3.

Lưu trữ thông tin người dùng ...................................................................38


3.2. THUẬT TOÁN VÀ THIẾT KẾ CHƯƠNG TRÌNH ....................................39
3.2.1.

Thuật toán trong chương trình .................................................................39

3.2.2.

Mô hình CSDL .........................................................................................39

3.2.3.

Tập Thực Thể ...........................................................................................41

3.2.4.

Mô Hình Use Case ...................................................................................42

3.3. KẾT QUẢ ĐẠT ĐƯỢC................................................................................43
3.3.1.

Giao Diện Trên Web ................................................................................43

3.3.2.

Giao Diện Trên Android ..........................................................................44

Chương 4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ..............................................49
4.1. KẾT LUẬN ...................................................................................................49
4.1.1.


Ưu điểm ....................................................................................................49

4.1.2.

Hạn chế .....................................................................................................49

4.2. HƯỚNG PHÁT TRIỂN ................................................................................49
TÀI LIỆU THAM KHẢO .........................................................................................50

iii


DANH MỤC HÌNH
Những yêu cầu về phần cứng của hđh Android ...........................................4
Các tầng của hệ điều hành Android .............................................................6
Biều đồ miêu tả Activity State ....................................................................8
Cài đặt Text to Speech ...............................................................................12
Cài đặt thêm ngôn ngữ khác.......................................................................12
Tạo mới file Data Classes ..........................................................................15
Thêm các table vào Data Classes ...............................................................15
Tạo ứng dụng Web .....................................................................................17
Ứng dụng Web ...........................................................................................17
Tạo mới một Web Service chạy trên localhost ........................................18
Nội dung trong Web Service vừa tạo .......................................................18
Phương thức Web .....................................................................................19
Các phương thức trong dịch vụ Web được định nghĩa ............................20
Nhập giá trị cần tính trong phương thức ktUser ......................................20
Kết quả thực thi ........................................................................................20
Chọn Server miễn phí...............................................................................21

Tạo một tài khoản mới .............................................................................21
Tạo website mới .......................................................................................22
Tạo mới CSDL .........................................................................................22
Cấu hình CSDL ........................................................................................23
Chuỗi kết nối đến Web Service ................................................................23
Đưa CSDL lên web bước 1 ......................................................................24
Đưa CSDL lên web bước 2 ......................................................................24
Đưa CSDL lên web bước 3 ......................................................................25
Đưa CSDL lên web bước 4 ......................................................................25
Đưa ứng dụng lên web bước 1 .................................................................26
Đưa ứng dụng lên web bước 2 .................................................................26
Đưa ứng dụng lên web bước 3 .................................................................27
HTML frontend ........................................................................................27
Direct Web service invocation .................................................................28
Web service gateway................................................................................29
Gửi yêu cầu và nhận kết quả từ dịch vụ Web sử dụng HttpTransport .....30
Mô hình class đợn giản của kSoap2 .........................................................31
Sơ đồ biểu diễn việc xử lý dữ liệu của chương trình từ SQLite và Web
Service .......................................................................................................................32
Hàm trả về câu trả lời ...............................................................................33
Cách config giữa Android và Web Service .............................................33
Cách lưu dữ liệu từ Web vào SQLite .......................................................35
Dữ liệu trong SQLite ................................................................................35

iv


Kết quả khi chạy hàm...............................................................................37
Sơ đồ thuật toán làm bài học ......................................................................39
Mô hình CSDL ...........................................................................................40

Mô hình use case người quản trị ................................................................42
Mô hình use case người dùng ....................................................................43
Form đăng nhập..........................................................................................44
Màn hình chỉnh sửa câu hỏi .......................................................................44
Giao diện đăng nhập...................................................................................45
Giao diện chính ..........................................................................................46
Danh mục mức độ ......................................................................................46
Hiển thị đáp án câu hỏi.............................................................................47
Màn hình Báo lỗi và Thoát ......................................................................48
Màn hình hiển thị kết quả ........................................................................48

v


DANH MỤC BẢNG
Bảng 2.1 Các phiên bản của hệ điều hành Android ....................................................3
Bảng 2.2 Cấu trúc lưu trữ dự án trong Android ........................................................10
Bảng 2.3 Cấu trúc lưu trữ trong thư mục res ............................................................11
Bảng 3.1 Mô tả tập thực thể Nguoi_Dung ................................................................41
Bảng 3.2 Mô tả tập thực thể Mức Độ........................................................................41
Bảng 3.3 Mô tả tập thực thể Bài Học ........................................................................41
Bảng 3.4 Mô tả tập thực thể Báo Lỗi ........................................................................41
Bảng 3.5 Mô tả tập thực thể Câu hỏi ........................................................................42
Bảng 3.6 Mô tả tập thực thể Trả Lời .........................................................................42

vi


TÓM TẮT
Ngày nay đối với mọi ngành nghề, Tiếng Anh là một phần không thể thiếu trong các

yêu cầu tuyển dụng. Đặc biệt là đối với các sinh viên Công nghệ thông tin, điều này
trở thành một nhu cầu tất yếu.
Cùng với sự phát triển vượt bậc của công nghệ thông tin, các điện thoại thông minh
đã trở nên gần gũi hơn đối với mọi người. Với ưu thế nhỏ gọn, tiện dụng và đa nhiệm,
điện thoại thông minh trở thành một công cụ đắc lực trong việc học tập và giải trí,
đặc biệt là các điện thoại dùng hệ điều hành Android – hệ điều hành chiếm hơn 75%
thị phần điện thoại thế giới.
Vì lẽ đó, đề tài luận văn “Tìm hiểu HĐH Android và xây dựng ứng dụng minh họa
phần mềm Học Tiếng Anh” được ra đời nhằm đáp ứng nhu cầu người dùng cần học
Tiếng Anh.
Phần mềm được viết trên hệ điều hành Android sử dụng ngôn ngữ Java kết hợp với
Webservice để lưu trữ dữ liệu.
Từ khóa: phần mềm học tiếng anh, ksoap, android, webservices, sqlite.

vii


ABSTRACT
Today, for all professions, English is an integral part of the recruitment requirements.
Especially for students of Information Technology, which became an essential.
With the boom of information technology, the smart phone has become closer to the
people. With the advantage of compact, handy and multitasking, the smartphone
becomes a powerful tool for learning and entertainment, especially the phone using
the Android operating system - OS accounted for over 75% world phone market.
Therefore, the thesis "Learn Android and build software applications illustrated Learn
English" was created to meet the needs of users who need to learn English.
Software written for the operating system Android uses the Java language associated
with Webservice to store data.
Key words: English learning software, kSOAP, android, webservices, sqlite.


viii


Chương 1. GIỚI THIỆU
1.1. ĐẶT VẤN ĐỀ
Ngày nay, hầu như tất cả các ngành nghề hiện đại đều có sự xuất hiện của Công
nghệ thông tin, đặc biệt là kinh tế xã hội ngày càng phát triển nên việc sử dụng những
sản phẩm của Công nghệ thông tin với kích thước nhỏ gọn, tiện lợi không còn gì là
xa lạ đối với mọi người. Trong đó, công nghệ di động và những ứng dụng của nó
được mọi người quan tâm và sử dụng phổ biến hơn.
Trong những năm gần đây, việc học tiếng anh trở thành một như cầu thiết yếu
trong cuộc sống, nhất là đối với những sinh viên ra trường tìm việc, tiếng anh trở
thành một trong những yêu cầu hàng đầu của các nhà tuyển dụng. Tuy nhiên, việc
học tiếng anh trên giấy theo cách truyền thống mang lại nhiều khó khăn cho người
học: khó lưu trữ, tốn kém tiền bạc, tốn nhiều thời gian tìm kiếm, … làm cho nhiều
người học tuy tốn nhiều thời gian nhưng vẫn không thể học tốt.
Nhận thấy nhu cầu thiết yếu trên nên em quyết định chọn đề tài: “Tìm hiểu HĐH
Android và xây dựng ứng dụng minh họa phần mềm Học Tiếng Anh”. Ứng dụng có
thể giúp người dùng học tiếng anh miễn phí với nhiều câu hỏi trong nhiều lĩnh vực
khác nhau và nghe cách phát âm các câu nói đơn giản. Tuy còn khiêm tốn nhưng ứng
dụng cũng đã giải quyết phần nào nhu cầu về việc học tiếng anh.
1.2. PHẠM VI ĐỀ TÀI
Ứng dụng học tiếng anh giúp mọi người có thể làm trắc nghiệm trên nền tảng
Android với các chức năng xem lại bài làm, chọn mức độ, nghe cách phát âm
chuẩn,…
Lưu trữ câu hỏi trên mạng giúp người dùng có thể làm bài mọi lúc, mọi nơi với
nhiều lĩnh vực và mức độ khác nhau.
Tạo trang web đơn giản giúp admin tiếp nhận báo lỗi từ người dùng và chỉnh
sửa, thêm mới các câu hỏi.
1.3. PHƯƠNG PHÁP NGHIÊN CỨU

Đề tài được nghiên cứu và thực hiện tuần tự theo các bước sau:







Tìm hiểu hệ điều hành Android, Web Service, SQLite.
Cách tạo và đưa CSDL lên Web Service.
Cách cấu hình, đọc và ghi dữ liệu Web Service với SQLite.
Phân tích và thiết kế chương trình.
Cài đặt và kiểm thử.
Nhận xét và đánh giá kết quả đạt được.

1


Chương 2. CƠ SỞ LÝ THUYẾT
2.1. HỆ ĐIỀU HÀNH ANDROID [6,8]
2.1.1. Tổng quan về hệ điều hành Android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho
các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính
bảng. Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài
chính từ Google và sau này được chính Google mua lại vào năm 2005. Android ra
mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một
hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh
các tiêu chuẩn mở cho các thiết bị di động. Chiếc điện thoại đầu tiên chạy Android
được bán vào tháng 10 năm 2008.
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép

Apache. Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã
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. Ngoài ra, Android còn có một
cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng
của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi. Vào tháng 10 năm
2012, có khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google
Play, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt.
Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh
phổ biến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010 và được các công ty
công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh
chỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu. Kết quả
là mặc dù được thiết kế để chạy trên điện thoại và máy tính bảng, Android đã xuất
hiện trên TV, máy chơi game và các thiết bị điện tử khác. Bản chất mở của Android
cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng
mã nguồn mở để tạo ra những dự án do cộng đồng quản lý . Những dự án này bổ sung
các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các
thiết bị ban đầu chạy hệ điều hành khác.
Android chiếm 75% thị phần điện thoại thông minh trên toàn thế giới vào thời
điểm quý 3 năm 2012, với tổng cộng 500 triệu thiết bị đã được kích hoạt và 1,3 triệu
lượt kích hoạt mỗi ngày. Sự thành công của hệ điều hành cũng khiến nó trở thành
mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong "cuộc chiến
điện thoại thông minh" giữa các công ty công nghệ.
2.1.2. Các phiên bản Android
Trong khi các số phiên bản của Android phiên bản hệ điều hành tuần tự là: 1.6,
2.1, 4.2,... Các bản phát hành cũng được đặt tên tương tự như các mặt hàng khác nhau
2


trong một thực đơn tráng miệng hảo hạng: Donut, Eclair, và Jelly Bean. Khi mọi
người ám chỉ Jelly Bean có nghĩa là phiên bản Android 4.2. Phiên bản Android cũng

được mô tả ở cấp độ API, bởi số nguyên tăng dần theo trình tự. Vì vậy, Android API
ở mức 17 đề cập đến Android phiên bản 4.2, còn được gọi là Jelly Bean.
Bảng 2.1 Các phiên bản của hệ điều hành Android
Phiên bản

Tên mã

Ngày phát hành

API

Phân bố

5.0

Lollipop

07/2014

20

Dành cho người
phát hành

4.4

KitKat

10/2013


19

17,9%

4.3

Jelly Bean

25/07/2013

18

10,5%

4.2.x

Jelly Bean

13/11/2012

17

18,8%

4.1.x

Jelly Bean

09/07/2012


16

25,2%

4.0.x

IceCream
Sandwich

16/12/2011

15

11,4%

3.2

Honeycomb

15/07/2011

13

0%

3.1

Honeycomb

10/05/2011


12

0%

2.3.3–2.3.7

Gingerbread

09/02/2011

10

13%

2.3–2.3.2

Gingerbread

06/12/2010

9

0,5%

2.2

Froyo

20/05/2010


8

0,7%

2.0–2.1

Eclair

26/10/2009

7

0%

1.6

Donut

15/09/2009

4

0%

2.1.3. Kiến trúc HĐH Android
2.1.3.1. Phần cứng
Android không phải là một phần của phần cứng, mà nó là một phần mềm hoàn
chỉnh. Android có thể được điều chỉnh để làm việc trên bất kì thiết bị phần cứng
nào. Có một số ràng buộc về phần cứng đối với thiết bị có thể chạy được hệ điều

hành Android như sau:

3


Phần Cứng
Chipset
RAM
Ổ cứng
Màn hình chính
Navigation Key
USB
Bluetooth

Những yêu cầu tối thiểu
ARM-based
128MB RAM,258MB Flash External
Mini hoặc Micro SD
QVGA TFT LCD hoặc lớn hơn,16 bit color hoặc tốt hơn
2MP CMOS
Standard mini-B USB interface
1.2 hoặc hơn

Những yêu cầu về phần cứng của hđh Android
Những yêu cầu về phần cứng có thể khác nhau tuỳ theo phiên bản Android.
2.1.3.2. Hệ điều hành Android
Có 5 tầng phân biệt trong hệ thống android
 Tầng lõi ARM Linux (Linux Kernel):
Là tầng thấp nhất được xây dựng từ hai thành phần chính là Linux Kernel và bộ
vi xử lý ARM (Acorn RISC Machine). Bộ vi xử lý ARM hoạt động với hiệu suất

cao nhưng tiêu thụ năng lượng rất ít.
Android dựa trên Linux phiên bản 2.6, từ Android 4.0 trở về sau là phiên bản 3.x.
Linux kernel phiên bản 2.6 là phiên bản có tính ổn định cao. Sự kết hợp giữa hai
thành phần này nhằm giải quyết phần nào giới hạn nguồn năng lượng sử dụng và
tối ưu việc sử dụng các tài nguyên trong thiết bị.
Nền tảng Linux Kernel 2.6 chứa những drivers để điều khiển phần cứng như
keypad, wifi, camera, audio, màn hình,v.v... Đây là trung tâm điều khiển của
Android.Các giải thuật quản lý tài nguyên, chuyển đổi qua lại giữa các tác vụ phân
chia quyền, giải quyết tranh chấp được cài đặt trong kernel. Tuy nhiên lập trình
viên sẽ không lập trình trực tiếp trên tầng này.
 Tầng thư viện (Libraries):
Chứa mã nguồn mở cấp thấp cho những chức năng cơ bản như: mã hoá và giải
mã âm thanh, hình ảnh kĩ thuật số, trình bày các giao diện đồ hoạ, bảo mật lưu
lượng TCP/IP cũng như các thành phần cho trình duyệt web, hỗ trợ truy xuất cơ
sở dữ liệu (SQLite),v.v...
Đây là tầng chứa các thư viện C/C++ được gọi thông qua giao diện java. Tầng
này gồm thư viện surface (tạo các cửa sổ giao diện), OpenGL (hỗ trợ xây dựng
ứng dụng 2D và 3D), Media Framework (hỗ trợ xây dựng các ứng dụng về âm
thanh hình ảnh), SSL (cung cấp các chức năng bảo mật thiết bị), SQLite (cơ sở dữ
liệu mã nguồn mở được nhúng trong thiết bị), webkit (hỗ trợ hiển thị nội dung
website),v.v...

4


 Tầng máy ảo Android (Android Runtime):
Đây là một phần mềm dùng để chạy các ứng dụng trên thiết bị Android, bao gồm
một tập các thư viện lõi (core libraries) cung cấp hầu hết các chức năng trong thư
viện lõi của ngôn ngữ lập trình Java và máy ảo Dalvik. Mỗi ứng dụng android sẽ
chạy trên một tiến trình dành riêng cho nó, với một máy ảo Dalvik riêng cũng

được thiết lập dành riêng cho mỗi ứng dụng. Dalvik được viết để một thiết bị có
thể chạy nhiều máy ảo cùng lúc hiệu quả. Máy ảo Dalvik thực thi các tập tin .dex,
là loại tập tin được đóng gói từ các file .class giúp tối ưu bộ nhớ, quản lý tiến trình
và quản lý bộ nhớ hiệu quả, máy ảo này cũng sử dụng các chức năng do Linux
kernel cung cấp.
 Tầng khung ứng dụng Android (Android Application Framework):
Tầng này định nghĩa Android API, cung cấp bộ công cụ ở mức cao để các lập
trình viên nhanh chóng xây dựng ứng dụng.
Chứa các thư viện java hỗ trợ người dùng giao tiếp với tầng thư viện và tầng máy
ảo. Một phần của tầng này do Google cung cấp sẵn, một phần do lập trình viên
tạo ra. Trong tầng này thì thành phần quan trọng nhất là Activity Manager vì nó
quản lý chu kì sống của Activity.
 Activity Manager: quản lý chu trình sống của các Activity trong ứng dụng
Android.
 Telephony Manager: cung cấp thư viện để truy xuất đến các dịch vụ điện
thoại cũng như là thông tin thuê bao.
 View System: xử lý giao diện trong ứng dụng android.
 Location Manager: cung cấp thư viện hỗ trợ người dùng định vị vị trí của
thiết bị.
 Tầng ứng dụng lõi Android (Applications):
Đây là tầng cao nhất và ứng dụng của lập trình viên sẽ nằm ở tầng này. Google đã
viết sẵn một số thư viện tiện ích trong tầng này để việc truy xuất thông tin ở các
tầng dưới thuận tiện,linh hoạt và hiệu quả nhất.
Bao gồm các những ứng dụng cơ bản hỗ trợ thêm cho người lập trình như: Webkit
browser, Google Calendar, Gmail, Map Application, SMS Messenger, Email
Client ,v.v...

5



Các tầng của hệ điều hành Android
2.1.3.3. Kết nối mạng
Android hỗ trợ giao tiếp không dây bằng cách sử dụng:
 Mạng wifi 802.11: Là hệ thống mạng không dây sử dụng sóng vô tuyến giống
như điện thoại di động, truyền hình và radio với băng tầng 2,4 3,6 và 5 Ghz.
 Công nghệ GSM (The Global System Mobile Communication): là hệ thống
mạng tế bào sử dụng kỹ thuật TDMA (Time Division Multi Access) – đa truy cập
theo thời gian. Mỗi cuộc gọi được phát triển trên tầng số chung nhưng theo các
khoảng thời gian khác nhau. Khoảng thời gian này đủ bé để người sử dụng không
nhận thấy sự rời rạc khi nghe người khác nói. Công nghệ dành cho mạng 2G và
hoạt động ở băng tầng 900MHz hay 1800MHz.
 EDGE (Enhanced Data Ratesn for GSM Evolution): Còn được gọi là EGPGS,
là một công nghệ được phát triển từ GPRS, cho phép truyền dữ liệu với tốc độ
384 kbit/s cho người dùng cố định hoặc di chuyển chậm và 144 kbit/s cho người
dùng di chuyển với tốc độ cao. EDGE được biết đến như một công nghệ 2,75G.
 3G: là công nghệ truyền thông thứ ba, cho phép truyền dữ liệu thoại và dữ liệu
ngoài thoại (tải dữ liệu, gửi email,tin nhắn nhanh, hình ảnh). Công nghệ này tăng
băng thông và hỗ trợ đa dạng ứng dụng hơn trong đó có dịch vụ video call.
 4G LTE: Là công nghệ thứ tư của công nghệ không dây. 4G được thiết kế nhằm
tăng tốc độ cho người dùng điện thoại thông minh và máy tính bảng với 100Mbps
dowload và 50Mbps upload. Hầu hết điện thoại thông minh hỗ trợ 4G đều chạy
hệ điều hành Android.

6


2.1.3.4. Bảo mật
Android là một hệ thống đa tiến trình, trong đó mỗi ứng dụng chạy riêng biệt trong
một tiến trình riêng biệt dành cho nó. Bảo mật giữa ứng dụng và hệ thống được thực
thi ở mức tiến trình thông qua những tiêu chuẩn của Linux. Mỗi ứng dụng trong

Android được gán một ID và mặc định khi ứng dụng chạy sẽ không có bất cứ tiến
trình hay hệ thống khác can thiệp vào nó.
Việc cho phép trao đổi thông tin và tương tác qua lại giữa các tiến trình phải được
định nghĩa trước trong ứng dụng đó để khi cài đặt, hệ điều hành sẽ nhận diện được
thông tin này.
2.1.4. Cấu trúc của một ứng dụng Android
2.1.4.1. Các thành phần của một ứng dụng Android
Các thành phần tạo nên ứng dụng Android được chia làm 6 loại bao gồm:
 Activity: là nền của 1 ứng dụng. Khi khởi động một ứng dụng Android nào
đó thì bao giờ cũng có 1 main Activity được gọi, hiển thị màn hình giao diện
của ứng dụng cho phép người dùng tương tác.
 Service: thành phần chạy ẩn trong Android. Service sử dụng để update dữ liệu,
đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùng
thấy.
 Content Provider: kho dữ liệu chia sẻ. Content Provider được sử dụng để
quản lý và chia sẻ dữ liệu giữa các ứng dụng.
 Intent: nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các
thông báo đi nhằm khởi tạo một Activity hay Service để thực hiện công việc
mong muốn.
 Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới.
 Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng
hoạt động.
Activity, Service, Broadcast Receiver và Content Provider mới là những thành
phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trong
AndroidManifest.
Actitvity là thành phần quan trọng nhất và đóng vai trò chính trong xây dựng ứng
dụng Android. Hệ điều hành Android quản lý Activity theo dạng stack: khi một
Activity mới được khởi tạo, nó sẽ được xếp lên đầu của stack và trở thành running
activity, các Activity trước đó sẽ bị tạm dừng và chỉ hoạt động trở lại khi Activity
mới được giải phóng.

Activity bao gồm 4 state:
- active (running): Activity đang hiển thị trên màn hình (foreground).

7


- paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus).
- stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop
- killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo nguyên tắc
ưu tiên.
Các Activity ở trạng thái stop hoặc paused cũng có thể bị giải phóng và khi nó được
hiển thị lại thì các Activity này phải khởi động lại hoàn toàn và phục hồi lại trạng thái
trước đó.

Biều đồ miêu tả Activity State
Vòng đời của Activity:
- Entire lifetime: Từ phương thức onCreate() cho tới onDestroy() .
- Visible liftetime: Từ phương thức onVisible() cho tới onInvisible().
- Foreground lifetime: Từ phương thức onBegin() cho tới onPause().
8


Khi xây dựng Actitvity cho ứng dụng cần phải viết lại phương thức onCreate() để
thực hiện quá trình khởi tạo. Các phương thức khác có cần viết lại hay không tùy
vào yêu cầu lập trình.
Android có cơ chế quản lý các process theo chế độ ưu tiên. Các process có priority
thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm bảo tài nguyên.
Foreground process: là process của ứng dụng hiện thời đang được người dùng tương
tác.
Visible process: là process của ứng dụng mà activity đang hiển thị đối với người

dùng (onPaused() của activity được gọi).
Service process: là Service đang running.
Background process: là process của ứng dụng mà các activity của nó không hiển thị
với người dùng (onStoped() của activity được gọi).
Empty process: process không có bất cứ 1 thành phần nào active. Theo chế độ ưu
tiên thì khi cần tài nguyên, Android sẽ tự động kill process, trước tiên là các empty
process.
2.1.4.2. Cấu trúc lưu trữ dự án trong Android
Thành Phần
Chức Năng
Thư mục mã Chứa toàn bộ các tập tin *.java có trong ứng dụng. Các tập tin
nguồn (SRC):
này được tổ chức trong các Java Package.
Các Java Package chứa các tập tin *.java có chức năng liên quan
với nhau để hệ thống có tính cấu trúc hơn.
Thư mục thư Chứa các tập tin .jar, đây là bộ thư viện mà hệ điều hành
viện Android Android hỗ trợ cho ứng dụng tuỳ theo Build Target của ứng
dụng
Thư mục assets Thư mục này dùng để lưu trữ dữ liệu do lập trình viên tự định
nghĩa như tập tin HTTP, tập tin XML, tập tin văn bản, tập tin
CSDL,.v.v...
Các tập tin này sẽ được ứng dụng truy xuất thông qua đối tượng
Asset Manager của Android.
Việc truy xuất tài nguyên trong Assets thông qua việc đọc và
lưu trữ các bit và byte
Thư mục RES Cũng giống như thư mục assets, đây là thư mục để lưu trữ các
tài nguyên của ứng dụng.
Thư mục này có thể lưu trữ bất cứ loại tài nguyên nào từ chuỗi
cho tới hình ảnh và âm thanh.
Việc truy xuất tài nguyên trong RES thông qua IDs.Khi thêm

tài vào thư mục RES, Android sẽ phát sinh một ID và lưu trữ
ID này vào tập tin R.java và chỉ cần gọi ID này để truy xuất.
9


Thư mục BIN,
LIBS,
REFERENCED
LIBRARIES

Thư mục GEN

Tập tin
Android
Manifest.xml

Mặc định khi tạo ứng dụng thư mực BIN sẽ không hiển thị.Mục
đích của thư viện này là để chứa các thư viện hỗ trợ phát triển
ứng dụng. Các thư viện được thêm vào thư mục này không phải
là thư viện của JDK hay Android SDK mà là một thư viện bên
ngoài.
Thư mục Referenced Libraries được tạo khi thêm thư viện vào
thư mục Libs.
Thư mục này được tạo trong lần biên dịch đầu tiên của ứng
dụng.
Thư mục GEN chứa tập tin R.java dùng để lưu trữ các giá trị
ID. Khi muốn truy xuất tài nguyên nào chỉ cần chỉ định giá trị
ID tương ứng của tài nguyên đó
Đặt tên cho Java package của ứng dụng.
- Mô tả các thành phần (component) của ứng dụng: activity,

service, broadcast receiver hoặc content provider.
- Thông báo những permission mà ứng dụng cần có để truy nhập
các protected API và tương tác với các ứng dụng khác.
- Thông báo những permission mà các ứng dụng khác cần có để
tương tác với ứng dụng hiện thời.
- Thông báo level thấp nhất của Android API mà ứng dụng cần
để chạy.
- Khai báo các thư viện mà ứng dụng sử dụng.
- Khai báo quyền hạn của ứng dụng

Bảng 2.2 Cấu trúc lưu trữ dự án trong Android
Cách tổ chức tài nguyên trong thư mục RES:
Thư mục con
anim/
color/
drawable/
Drawable-hdpi/
Drawable-ldpi/
Drawable-mdpi/
layout/
menu/
raw/
values/

Loại tài nguyên lưu trữ
Các tập tin XML định nghĩa loạt ảnh (animation).
Các tập tin XML định nghĩa danh sách màu.
Các tập tin hình ảnh hoặc các tập tin XML có thể được
biên dịch thành các tài nguyên hình ảnh.
Các tập tin hình ảnh với độ phân giải cao.

Các tập tin hình ảnh với độ phân giải thấp.
Các tập tin hình ảnh với độ phân giải trung bình.
Các tập tin XML định nghĩa các giao diện trong dự án.
Các tập tin XML định nghĩa menu trong ứng dụng.
Các tập tin dữ liệu thô dùng trong ứng dụng.
Các tập tin XML định nghĩa các giá trị đơn giản:

10








Array.xml: chứa các tài nguyên mảng.
Color.xml: chứa các định nghĩa màu sắc.
Dimens.xml: định nghĩa các giá trị kích thước.
String.xml định nghĩa các giá trị kiểu chuỗi.
Style.xml: Định nghĩa tài nguyên về phong cách.

Bảng 2.3 Cấu trúc lưu trữ trong thư mục res
2.2. TEXT TO SPEECH TRONG ANDROID
2.2.1. Giới thiệu về Text to Speech
Tính năng chuyển văn bản thành giọng nói (Text-to-speech hay TTS)
được Google trang bị sẵn cho hệ điều hành Android từ phiên bản 1.6 Donut. Tính
năng rất hữu ích trong nhiều trường hợp, đặc biệt đối với các phần mềm từ điển,
giúp cho bạn có thể nghe phát âm của từ một cách đơn giản, ngoài ra một số phần
mềm khác có thể đọc giúp bạn nội dung đang hiển thị trên màn hình, đọc tin nhắn

hay số điện thoại đang gọi, hướng dẫn chỉ đường bằng giọng nói... Chỉ có một vài
phần mềm trên Android tự xây dựng cơ sở dữ liệu phát âm và giải thuật riêng của
mình, còn phần lớn đều dựa vào dịch vụ có sẵn của Google để chuyển văn bản
thành giọng nói.
2.2.2. Cách sử dụng Text to Speech
Để có thể làm tốt công việc chuyển văn bản thành giọng nói thì cần rất nhiều những
thao tác xử lý chạy bên dưới mỗi khi nhận được một nội dung ở đầu vào, với
Google thì họ ưu tiên xử lý tất cả trên server rồi mới trả kết quả về điện thoại của
bạn. Cách làm này nhằm giảm bớt dung lượng lưu trữ vì chắc chắn một điều là cơ
sở dữ liệu là khá lớn, ưu tiên dung lượng và chúng ta phải hi sinh một chút về kết
nối internet, dịch vụ này luôn yêu cầu có internet (3G hoặc wifi) mới có thể chạy
được. Ngoài ra bạn có thể cài đặt dịch vụ TTS khác để sử dụng mà không cần dự
vào Google, sau đây là cách làm:
Vào Settings -> Accessibility -> Text-to-speech output:

11


Cài đặt Text to Speech
Mặc định thì voice data (giọng eng) đã được cài sẵn, vì thế lựa chọn Install voice
data chỉ hữu ích khi bạn muốn cài thêm giọng khác như Đức, Tây Ban Nha, Pháp
hay Ý. Như đã nói ở trên, tất cả dữ liệu đều được Goolge xử lý trên server nên voice
data của họ có dung lượng khá nhỏ, chỉ khoảng vài MB:

Cài đặt thêm ngôn ngữ khác
2.3. SQLITE
2.3.1. Giới thiệu SQLite
SQLite là một thư viện thực thi các chức năng của một database engine với đặc điểm
giống như một phần mềm portable, không cần cài đặt, không cần cấu hình, không cần
12



server, những điểm này rất khác so với việc sử dụng SQL Server hoặc Oracle, nhưng
nó vẫn có transaction để đảm bảo tính toàn vẹn và an toàn trong quá trình thao tác dữ
liệu. Có thể so sánh nó có một vài điểm giống với Access, nhưng nhìn chung vẫn có
nhiều sự khác biệt.
Đặc điểm của SQLite là gọn, nhẹ, đơn giản. Chương trình gồm 1 file duy nhất vỏn
vẹn chưa đến 500kb, không cần cài đặt, không cần cấu hình hay khởi động mà có thể
sử dụng ngay. Dữ liệu database cũng được lưu ở một file duy nhất. Không có khái
niệm
user,
password
hay quyền
hạn
trong
SQLite
database.
SQLite không thích hợp với những hệ thống lớn nhưng ở quy mô vừa và nhỏ thì
SQLite phát huy uy lực và không hề yếu kém về mặt chức năng hay tốc độ. Với các
đặc điểm trên SQLite được sử dụng nhiều trong việc phát triển, thử nghiệm .v.v... và
là sự lựa chọn phù hợp cho những người bắt đầu học database.
2.3.2. Chi tiết về các đặc tính SQLite
Không cần phải thiết lập bất kỳ một cấu hình nào để có thể sử dụng SQLite.
Các HQTCSDL như SQL Server, Oracle, Postgre... thường cần một server riêng để
triển khai ứng dụng, cài đặt database engine, các máy khách sẽ kết nối đến server để
xử lý dữ liệu một cách tập trung. Tuy nhiên SQLite không làm việc theo cách này mà
ứng dụng sẽ truy xuất trực tiếp vào file database, các máy khách cũng có thể truy xuất
một file database SQLite để trên một server thông qua cơ chế chia sẻ và bảo mật file
của hệ điều hành,người dùng nào truy cập được vào thư mục và có quyền đọc - ghi
thì sẽ có thể đọc ghi vào file database SQLite. Tuy nhiên sẽ có những hạn chế nhất

định.
Database do SQLite tạo ra là một file dữ liệu duy nhất.
Có thể copy file database SQLite từ hệ thống này sang hệ thống khác, từ hệ thống 32
hay 64 bit, từ phiên bản SQLite này sang phiên bản khác mà không cần chuyển đổi ,
nâng cấp hệ điều hành, cấu trúc hệ thống hay phải làm lại file database.
Cực kỳ nhỏ gọn và dễ sử dụng.
Số lượng kiểu dữ liệu của SQlite rất ít, điều này là một đặc trưng của nó, bởi trong
SQLite, kiểu dữ liệu là một thuộc tính của chính giá trị được lưu chứ không phải là
thuộc tính của cột lưu giá trị đó. Tuy vậy, cũng có một vài ràng buộc, là với cột khóa
chính kiểu integer thì phải lưu giá trị phải chính xác là kiểu int, ngoài ra SQLite cũng
cố gắng chuyển đổi kiểu của giá trị sang kiểu của cột lưu nó khi có thể. Mục đích của
việc thiết kế kiểu dữ liệu như vậy nhằm làm cho nó tin cậy và đơn giản hóa việc sử
dụng, và cũng để dễ tương thích hơn khi sử dụng với các ngôn ngữ như Tcl hoặc
Python.
Dữ liệu lưu bao nhiêu thì hệ thống cấp phát cho bấy nhiêu không gian bộ nhớ cho
từng dòng dữ liệu, không cấp phát thừa hoặc thiếu không gian lưu trữ cho dữ liệu,
nhờ đó mà file database trở nên nhỏ gọn và tốc độ xử lý dữ liệu cũng nhanh hơn.
SQLite là một hệ quản trị CSDL mã nguồn mở, hoàn toàn miễn phí.

13


2.4. GIỚI THIỆU VỀ LINQ
2.4.1. LinQ là gì ?
Để giảm gánh nặng thao tác trên nhiều ngôn ngữ khác nhau và cải thiện năng suất
lập trình, Microsoft đã phát triển giải pháp tích hợp dữ liệu cho .NET Framework
có tên gọi là LINQ (Language Integrated Query), đây là thư viện mở rộng cho các
ngôn ngữ lập trình C# và Visual Basic.NET (có thể mở rộng cho các ngôn ngữ
khác) cung cấp khả năng truy vấn trực tiếp dữ liệu Object, CSDL và XML.
LINQ là một tập hợp các thành phần mở rộng cho phép viết các câu truy vấn dữ liệu

ngay trong một ngôn ngữ lập trình, như C# hoặc VB.NET. Khi tạo một đối tượng
LINQ thì Visual Studio sẽ tự động sinh ra các lớp có các thành phần tương ứng với
CSDL của chúng ta. Khi muốn truy vấn, làm việc với CSDL ta chỉ việc gọi và truy
xuất các hàm, thủ tục tương ứng của LINQ mà không cần quan tâm đến các câu
lệnh SQL thông thường.
2.4.2. Tại sao nên dùng LinQ ?
-

Trước đây, cách phổ biến nhất để ứng dụng lấy dữ liệu từ các hệ cơ sở dữ
liệu (CSDL) là sử dụng SQL (Structure Query Language - ngôn ngữ truy vấn
cấu trúc). SQL có cú pháp rất khác với những ngôn ngữ lập trình phổ dụng
như C# và VB.NET, do vậy bạn phải nhọc công "hàn gắn" hai thực thể khác
biệt này với nhau trong mỗi dự án phần mềm. LINQ ra đời để giảm gánh
nặng thao tác "hàn gắn" trên nhiều ngôn ngữ khác nhau.

-

Hơn nữa để sử dụng trong ứng dụng C# lại thêm 1 tầng phức tạp nữa với
các câu lệnh: dùng ConnectionString khởi tạo kết nối tới DataBase, tự khai
báo các biến để chạy 1 lệnh - command, rồi còn phải tính toán đầu ra của
câu lệnh... Điều này rất phức tạp và hay gặp phải lỗi.

-

LinQ có khả năng hỗ trợ trên nhiều nền tảng khác: XML, SQLite, Excel...

2.4.3. Cách dùng LinQ
Vào Project, Add new items rồi chọn như hình dưới đây:

14



Tạo mới file Data Classes
Sau đó, ta kéo các bảng trong CSDL cần tương tác vào khung:

Thêm các table vào Data Classes
Khai báo biến để tương tác với LinQ:
DB.DBDataContext db = new DB.DBDataContext();

Sử dụng LinQ để viết hàm kiểm tra người dùng:
15


×