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

Xây dựng ứng dụng hỗ trợ luyện thi GRE cho sinh viên ICTU trên nền tảng 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 (2.96 MB, 113 trang )

LỜI CẢM ƠN
Trong thời gian từ học tập và rèn luyện tại trường Đại học công nghệ thông tin –
Truyền thông Thái Nguyên với nhiều sự khó khăn ban đầu trong học tập cũng như rèn
luyện của bản thân nhưng em đã nhận được sự giúp đỡ, chỉ bảo tận tình của các thầy
giáo, cô giáo trong trường. Em xin cảm ơn tới các thầy cô giáo đã tận tình giảng dạy,
trang bị cho em những vốn kiến thức và kinh nghiệm quý báu, cung cấp cho em những
điều kiện và môi trường học tập tốt nhất.
Để hoàn thành được đồ án này, em xin chân thành cảm ơn thầy giáo Trần
Phạm Thái Kiên - giảng viên trường Đại học công nghệ thông tin – Truyền thông
Thái Nguyên đã trực tiếp hướng dẫn, chỉ bảo tận tình cho em và tạo điều kiện giúp
đỡ em trong suốt thời gian thực hiện đề tài.
Em xin chân thành cảm ơn!
Thái Nguyên, tháng 06 năm 2016
Sinh viên

Đinh Mạnh Tường

1


LỜI CAM ĐOAN
Em xin cam đoan đồ án này là công trình tổng hợp và nghiên cứu của cá
nhân em, được thực hiện trên cơ sở nghiên cứu lý thuyết, kiến thức dưới sự hướng
dẫn tận tình của thầy giáo ThS. Trần Phạm Thái Kiên. Trong đồ án có sử dụng
một số tài liệu tham khảo như đã nêu trong phần tài liệu tham khảo.
Thái Nguyên, tháng 06 năm 2016
Sinh viên thực hiện

Đinh Mạnh Tường

2




MỤC LỤC
LỜI CẢM ƠN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
LỜI CAM ĐOAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
MỤC LỤC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

danh mục hình ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
LỜI NÓI ĐẦU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1. Tổng quan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2. Lý do chọn đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1 Giới thiệu về bài thi GRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.1 Sơ lược bài thi GRE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.2 Cấu trúc của bài thi GRE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2 Giới thiệu về Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.1 Tổng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.2 Nền tảng của Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.3 Kiến trúc của hệ điều hành Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.4 Cấu trúc của project Android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2.5 Các thành phần cơ bản của ứng dụng Android . . . . . . . . . . . . . . . . . . . . . . 20
1.2.6 Web Service trong Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.3 Tổng quan về phân tích thế kế hướng đối tượng UML . . . . . . . . . . . . . . . . . . 33
1.3.1 Giới thiệu chung về UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.3.2 Các đặc điểm cơ bản của hệ thống hướng đối tượng . . . . . . . . . . . . . . . . 34
1.3.3 Ưu nhược điểm của phân tích thiết kế hướng đối tượng. . . . . . . . . . . . . 35
1.4 Ứng dụng mô hình UML trong thiết kế ứng dụng Android . . . . . . . . . . . . . . 36
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.1 Khảo sát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.1.1 Một số phần mềm thi Online . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3


2.1.2 Khảo sát hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.1.3 Yêu cầu công nghệ của hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.1.4 Kiến trúc hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2 Phân tích thiết kế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.1 Xác định tác nhân và use-case. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.2 Đặc tả use-case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.3 Biểu đồ trình tự. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2.4 Biểu đồ thành phần . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.2.5 Biểu đồ hoạt động. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.2.6 Xây dựng cơ sở dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
CHƯƠNG 3. CÀI ĐẶT CHƯƠNG TRÌNH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.1 Mô hình phía Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.1.1 Chức năng Đăng nhập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.1.2 Chức năng Quản lý câu hỏi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.1.3 Chức năng Quản lý kỳ thi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.1.4 Chức năng Quản lý bài thi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.2 Mô hình phía Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.2.1 Chức năng Đăng nhập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.2.2 Chức năng xem Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.2.3 Chức năng Thi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
TÀI LIỆU THAM KHẢO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

4


danh mục hình ảnh


Hình 1.1 Bảng thống kê số lượng App trên Store
Hình 1.2 Kiến trúc của hệ điều hành Android.

14

15

Hình 1.3 Trình tự các Activity khi đưa vào ngăn xếp

21

Hình 1.4. Trình tự các Activity đưa ra ngoài ngăn xếp 21
Hình 1.5. Vòng đời của một Activity
Hình 1.6. Hoạt động của Intents

23

23

Hình 1.7 Phương thức Call back 25
Hình 1.8 Kiến trúc Webservice đơn giản 28
Hình1.9 Webservice với php và mySql 32
Hình 2.1 Mô hình kiến trúc hệ thống

42

Hình 2.2 Biểu đồ Use case mức tổng quát

44


Hình 2.3 Biểu đồ trình tự chức năng đăng nhập 47
Hình 2.4 Biểu đồ trình tự chức năng cập nhật thông tin 49
Hình 2.5 Biểu đồ trình tự chấm điểm bài thi
Hình 2.6 Biểu đồ thành phần

50

51

Hình 2.7. Biểu đồ hoạt động của Use Case đăng nhập 51
Hình 2.8: Biểu đồ hoạt động của Use Case chọn bài thi 52
Hình 2.9 Mô hình thực thể liên kết.

55

Hình 3.1: File connect.php 56
Hình 3.2 Xử lý dữ liệu dạng json 56
Hình 3.4 Giao diện Đăng nhập

58

Hình 3.5 Giao diện Trang chủ

58

Hình 3.6 Giao diện Quản lý câu hỏi

59


Hình 3.7 Giao diện thêm chi tiết câu hỏi 60

5


Hình 3.8 Chức năng Quản lý kỳ thi

60

Hình 3.9 Giao diện Quản lý bài thi

61

Hình 3.10. Giao diện bài thi của 1 học viên

62

Hình 3.11. Giao diện Đăng nhập phía Client

63

Hình 3.12 Giao diện Trang chủ

64

Hình 3.13. Danh sách các Tips

65

Hình 3.14 Giới thiệu về ứng dụng.


65

Hình 3.15 Cách làm bài hiệu quả. 66
Hình 3.16 Hướng dẫn sử dụng phần mềm GRE online. 67
Hình 3.17 Top 10 cách làm bài thi GRE tốt.

68

Hình 3.18 Có thể bạn chưa biết. 69
Hình 3.19 Giao diện trang làm bài thi

70

Hình 3.20 Giao diện danh sách các câu hỏi trong bài thi
Hình 3.21 Giao diện nhập nội dung trả lời

71

Hình 3.22 Giao diện câu hỏi toán học dạng trắc nghiệm.
Hình 3.23 Giao diện câu hỏi ngôn ngữ.

73

Hình 3.24 Giao diện câu hỏi ngôn ngữ dạng đoạn văn. 74
Hình 3.25 Thông báo xác nhận khi nộp bài

6

71


75

72


LỜI NÓI ĐẦU
 Tổng quan
Thế giới hôm nay đang chứng kiến những thay đổi mạnh mẽ trong mọi hoạt
động phát triển kinh tế – xã hội nhờ những thành tựu của Công nghệ thông tin.
Công nghệ thông tin đã góp phần quan trọng cho việc tạo ra những nhân tố năng
động mới cho quá trình hình thành nền kinh tế tri thức và xã hội thông tin.
Khi công nghệ thông tin ngày càng phát triển thì việc ứng dụng nó vào các
lĩnh vực khác nhau cũng là một điều tất yếu. Đối với giáo dục và đào tạo, công
nghệ thông tin có tác dụng mạnh mẽ, làm thay đổi nội dung, phương pháp dạy và
học. Công nghệ thông tin là phương tiện để tiến tới “xã hội học tập”. Mặt khác,
giáo dục và đào tạo đóng vai trò quan trọng thúc đẩy sự phát triển của Công nghệ
thông tin thông qua việc cung cấp nguồn nhân lực cho CNTT. Bộ giáo dục và đào
tạo cũng yêu cầu “đẩy mạnh ứng dụng CNTT trong giáo dục đào tạo ở tất cả các
cấp học, bậc học, ngành học theo hướng dẫn học CNTT như là một công cụ hỗ trợ
đắc lực nhất cho đổi mới phương pháp dạy học ở các môn”.
Chính vì vậy, thực hiện tinh thần chỉ đạo trên của bộ giáo dục và của sở
giáo dục và đào tạo, nhận thức được rằng, việc ứng dụng CNTT phục vụ cho việc
đổi mới phương pháp dạy học là một trong những hướng tích cực nhất, hiệu quả
nhất trong việc đổi mới phương pháp dạy học.
Nhưng làm thế nào để ứng dụng CNTT hiệu quả trong các tiết dạy, biết
cách tận dụng nó, biến nó thành công cụ hiệu quả cho công việc của mình, mục
đích của mình đó là vấn đề mà bất cứ một ai cũng gặp phải khi có ý định đưa
CNTT vào giảng dạy.
 Lý do chọn đề tài

Ở nước ta hiện nay cùng với công cuộc đổi mới, nền giáo dục cũng đang có
nhiều biến chuyển rõ rệt cả về lượng và chất. Thể hiện ở những tiến bộ trong cách dạy
và học cũng như trong cách kiểm tra đánh giá kết quả học tập của người học.
7


Việc đánh giá kết quả học tập đóng vai trò hết sức quan trọng trong việc
nâng cao chất lượng đào tạo. Đánh giá đúng kết quả học tập sẽ khuyến khích khả
năng học tập của người học. Bên cạnh những cách kiểm tra đánh giá chất lượng
bài thi truyền thống là thi viết và thi vấn đáp thì hiện nay cũng đã có nhiều nơi thực
hiện phương pháp thi trắc nghiệm trên máy tính, tuy nhiên nó cũng còn nhiều mặt
hạn chế về mặt trang thiết bị, cơ sở hạ tầng, và thời gian của cả người dạy và người học.
Đối với các bài thi đánh giá năng lực nói chung và bài thi đánh giá năng lực
tiếng Anh GRE nói riêng thì việc đánh giá chính xác, đúng thực chất năng lực của
người học là hết sức cần thiết. Bên cạnh đó cũng cần có những thay đổi về mặt cơ
chế quản lý, hình thức thi,... nhằm nâng cao chất lượng giảng dạy, đánh giá năng
năng lực và tạo điều kiện cho cả người học và người dạy.
Với những nhu cầu đặt ra ở trên, nay em thực hiện đề tài “Xây dựng ứng
dụng hỗ trợ luyện thi GRE cho sinh viên ICTU trên nền tảng Android”
Mặc dù đã rất cố gắng hoàn thành đồ án nhưng chắc chắn sẽ không tránh
khỏi những sai sót, em rất mong nhận được sự thông cảm, góp ý tận tình chỉ bảo từ
các thầy, cô.

8


CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
 Giới thiệu về bài thi GRE
 Sơ lược bài thi GRE
GRE (Graduate Record Examination) là một bài kiểm tra, đánh giá nhằm

giúp cho các trường đại học, các tổ chức tài trợ học bổng đánh giá một cách đúng
đắn năng lực của các thí sinh khi xin học sau đại học tại Mỹ. GRE kiểm tra thí sinh
về 3 năng lực cơ bản là ngôn ngữ (Verbal), toán học (Math) và viết luận
(Analytical Writing).
GRE thực sự là một kì thi khó vì nó đòi hỏi bạn phải có một lượng từ
vựng khổng lồ khoảng 5000 từ và các kỹ năng làm bài thành thạo. Chính vì
thế, nên việc học và ôn luyện GRE mất rất nhiều thời gian và phải đầu tư
nhiều công sức.
Bắt đầu từ ngày 1 tháng 8, 2011, bài thi GRE Tổng quát hiệu chỉnh thay thế
bài thi GRE Tổng quát hiện hành. Bài thi GRE Tổng quát hiệu chỉnh đo lường
cùng các kỹ năng như bài thi GRE Tổng quát trước đây – lý luận ngôn ngữ, lý luận
định lượng và viết luận phân tích. Đây là những kỹ năng đã được phát triển trong
một thời gian dài và không giới hạn trong bất cứ lĩnh vực học tập cụ thể nào,
nhưng rất quan trọng cho tất cả các lĩnh vực. Bài thi hiệu chỉnh cho bạn một kinh
nghiệm thi tốt hơn và các loại câu hỏi mới cho phép biểu lộ khả năng và trình độ
của bạn sẵn sàng cho trình độ cao học.
Là 1 trong những kỳ thi nổi tiếng nhất trên thế giới trong việc xét điều kiện
nhập học sau đại học (Master hoặc PhD) ở các chuyên ngành khoa học tự nhiên và
khoa học xã hội (trừ Y, Dược, Luật) tại Mỹ và một số nước khác do Cục Khảo Thí
Hoa Kỳ (ETS) tổ chức. Chứng chỉ GRE được sử dụng để so sánh và đánh giá
thành tích học tập của các thí sinh sau đại học bên cạnh bảng điểm đại học và các
chứng chỉ liên quan khác. Điểm thi GRE có giá trị trong vòng 5 năm.

9


 Cấu trúc của bài thi GRE
Bài thi này có 2 dạng thức: GRE General Test - là bài thi chung cho các bạn
sinh viên muốn học sau đại học (thời gian dành cho bài thi này là 3 giờ 45 phút) và
GRE Subject Test - là bài thi chuyên ngành theo từng lĩnh vực (hóa học, sinh học,

khoa học máy tính ...), không bắt buộc mà chỉ mang tính chất khuyến khích (thời
gian dành cho bài thi này là 2 giờ 50 phút).
GRE General Test: Tổng điểm cho bài thi GRE General test là 1600 điểm
cho 2 phần Verbal và Math, và 6 điểm cho phần Analytical Writing.
 Verbal (Ngôn ngữ - 60 phút): Thí sinh trả lời câu hỏi về khoa học tự nhiên
và khoa học xã hội, bao gồm các dạng bài:
 Analogy: Chọn cặp từ có mối liên hệ gần nhất với cặp từ gốc. Có 5 cặp
đáp án chọn lựa A, B, C, D và E , thí sinh trả lời bằng cách chọn đáp án đúng nhất
và tô đen ô đánh số câu tương ứng trong tờ đáp án.
 Antonym: Tìm từ đối nghĩa với từ gốc. Dạng câu hỏi loại bài này là dạng
chọn lựa đáp án đúng nhất trong 4 đáp án.
 Sentence Completion: Lựa chọn từ/cặp từ để điền vào chỗ trống trong câu
làm cho câu hoàn chỉnh nhất. Đề bài thường xen kẽ các câu có 1 ô trống và câu có
2 ô trống tương ứng với mỗi câu là 5 đáp án chọn lựa.
 Reading Comprehension: Đọc hiểu các đoạn văn về các đề tài khoa học,
xã hội và trả lời các câu hỏi trắc nghiệm trong bài. Dạng câu hỏi thường là trắc
nghiệm 4 chọn lựa và thí sinh làm bài như các phần trên.
 Math/Quantitative (Toán học – 60 phút): phần này nhằm để đánh giá kiến
thức cơ bản của các môn số học, đại số, hình học, phân tích dữ liệu và tính toán ở
chương trình phổ thông và giải quyết được các bài toán, không kiểm tra kiến thức
toán cao cấp hay tính toán phức tạp. GRE mới sẽ loại bỏ bớt các câu hỏi về hình
10


học nhưng tăng cường các câu hỏi về phân tích dữ liệu. Thí sinh sẽ lựa chọn đáp
án đúng trong 5 đáp án.
 Analytical Writing (Phân tích – 75 phút): Thí sinh phải viết hai bài luận:
một bài trình bày cảm nhận của mình về một vấn đề, một bài phân tích một tranh
luận mà đề đưa ra.
 Issue task: Yêu cầu thí sinh sẽ viết và trình bày cảm nhận về một vấn đề

liên quan đến đời sống, xã hội. Nội dung bài luận gần giống bài luận số 2 trong
TOEFL iBT nhưng mang tính chất học thuật hơn và yêu cầu cũng cao hơn.
 Argument task: Yêu cầu thí sinh sẽ viết một bài phân tích chứng minh và
bác bỏ một tranh luận mà đề đưa ra. Để làm dạng bài thi này, thí sinh cần chuẩn bị
tốt tư duy logic và lập luận chặt chẽ.
 Giới thiệu về Android
 Tổng quan
Các thiết bị di động đã trải qua rất nhiều năm phát triển với rất nhiều loại
thiết bị khác nhau, có thể kể đến như máy nhắn tin di động, điện thoại di động,
thiết bị trợ giúp cá nhân (PDA, Palm...), điện thoại thông minh, máy tính bảng...
Các thiết bị nghe nhìn khác như máy ảnh, máy quay kỹ thuật số, máy nghe nhạc...
cũng có thể được xếp vào "thiết bị di động". Giáo trình này sẽ không đề cập đến
các thiết bị đã là lịch sử (không còn hoặc gần như không còn được sử dụng trong
thực tế) và các thiết bị nghe nhìn và chỉ đề cập đến các loại thiết bị điện toán cầm
tay hiện đang phổ biến trên thị trường tiêu dùng. Các thiết bị này thường được
phân thành các loại như sau:
 Điện thoại di động cơ bản (basic phones và featured phones) - là các điện
thoại di động với các tính năng cơ bản như nghe, gọi, danh bạ... và một số ứng
dụng dựng sẵn đơn giản. Các thiết bị này thường có kích thước nhỏ, màn hình độ
phân giải thấp, có hoặc không có bàn phím, pin dùng được lâu, ít khả năng kết nối,
11


khả năng phát triển cũng như cài đặt thêm phần mềm của nhà phát triển là (gần
như) không có.
 Điện thoại di động thông minh (smartphones) là các điện thoại được
trang bị cấu hình tốt hơn, chạy hệ điều hành thông minh với các bộ công cụ phát
triển phần mềm (Software Development Kit - SDK) cho phép lập trình viên phát
triển đa dạng các ứng dụng phục vụ mọi mục đích của cuộc sống và công việc. Các
thiết bị này thường có kích thước và màn hình lớn hơn nhiều so với featured

phones, cấu hình phần cứng (CPU, RAM, GPU, camera...) cao, đa dạng các kết nối
(Wifi, Bluetooth, 3G/4G, GPS, Glonass, NFC...), có thể có một số loại cảm biến
(cảm biến gia tốc, la bàn, cảm biến tiệm cận, cảm biến ánh sáng, con quay hồi
chuyển, cảm biến áp suất...). Với tính năng đa dạng như vậy nên dù thường được
trang bị thỏi pin lớn hơn so với các máy điện thoại cơ bản, thời lượng pin của điện
thoại thông minh thường hạn chế hơn so với featured phones.
 Máy tính bảng (tablets) là các thiết bị thông minh, tương tự như
smartphones nhưng có kích thước màn hình lớn hơn rất nhiều (thông thường từ 7"13"), có thể có khe cắm thẻ SIM (phục vụ việc nhắn tin, gọi điện hoặc truy cập Internet
qua mạng 3G).
 Điện thoại thông minh lai máy tính bảng (phablet) là loại thiết bị lai giữa
smartphone và máy tính bảng, về tính năng nó là một smartphone, nhưng được
trang bị màn hình cỡ lớn hơn smartphone thông thường và nhỏ hơn kích thước phổ
biến của màn hình tablet. Màn hình của phablet thường có kích thước 5.0"-6.9".
Trong lập trình, các phablet thường được xếp cùng với với các smartphones.
Android liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần
android được tối ưu hóa để hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ
thêm công nghệ mới. Chẳng hạn như theo một đánh giá thì android phiên bản 2.2
hoạt động nhanh hơn bản 2.1 tới 450%. Hiện nay, phiên bản mới nhất 2.3 phát

12


hành ngày 6/12/2010 và đang tiếp tục được cập nhật.
Ban đầu, Android được phát triển bởi Android Corporation, 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ở
(Open Handset Alliance - 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.

 Nền tảng của Android
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 tùy biến 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 ngôn ngữ lập trình Java có sửa
đổi. Vào tháng 7 năm 2013, có hơn một triệu ứng dụng cho thiết bị Android
được công bố, 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 đạt khoảng 50 tỷ. Một cuộc khảo sát các nhà phát
triển vào tháng 4 - 5 năm 2013 cho thấy hơn 71% lập trình viên cho di động đã
phát triển ứng dụng cho Android. Tại sự kiện Google I/O 2014, "gã khổng lồ"
công bố đã có hơn một tỉ người dùng Android hàng tháng, trong khi con số này
vào tháng 6 năm 2013 mới chỉ là 538 triệu.
Những yếu tố trên đã 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 (chiếm 33%),
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, giá rẻ để chạy trên các thiết bị công nghệ cao thay vì
xây dựng từ đầu.
13


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 750 triệu thiết bị đã được kích hoạt. Vào
tháng 4 năm 2013 đã có 1,5 triệu lượt kích hoạt mỗi ngày và tổng số thiết bị
Android được kích hoạt lên đến 1 tỷ vào tháng 9 năm 2013. Sự thành công của hệ
điều hành này 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 cái gọi là "cuộc chiến điện thoại thông minh" giữa
các công ty công nghệ.


14


Hình 1.1 Bảng thống kê số lượng App trên Store

15


 Kiến trúc của hệ điều hành Android

Hình 1.2 Kiến trúc của hệ điều hành Android.
Tầng hạt nhân Linux (Linux Kernel layer)
Hệ điều hành android được phát trển dựa trên hạt nhân linux, cụ thể là hạt
nhân linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này. Tất cả mọi
16


hoạt động của điện thoại muốn thi hành được thì đều được thực hiện ở mức cấp
thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp với
phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình
(process).
Tầng này có các thành phần chủ yếu :
 Display Driver : Điều khiển việc hiển thị lên màn hình cũng như thu nhận
những điều khiển của người dùng lên màn hình (di chuyển, cảm ứng...)
 Camera Driver : Điều kiển hoạt động của camera, nhận luồng dữ liệu từ
camera trả về.
 Bluetooth Driver : Điều khiển thiết bị phát và thu sóng Bluetooth.
 USB driver : Quản lý hoạt động của các cổng giao tiếp USB
 Keypad driver : Điều khiển bàn phím
 Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi

 Audio Driver : điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu
dạng audio thành tín hiệu số và ngược lại
 Binder IPC Driver : Chịu trách nhiệm về việc kết nối và liên lạc với
mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền
thông được thực hiện.
 M-System Driver : Quản lý việc đọc ghi... lên các thiết bị nhớ như thẻ SD,
flash
 Power Madagement : Giám sát việc tiêu thụ điện năng.
Tầng Library và android runtime
Phần này có 2 thành phần là phần Library và Android Runtime
 Phần Libraries
Phần này có nhiều thư viện được viết bằng C/C++ để các phần mềm có thể sử
dụng, các thư viện đó được tập hợp thành một số nhóm như :
 Thư viện hệ thống (System C library) : thư viện dựa trên chuẩn C,
17


được sử dụng chỉ bởi hệ điều hành.
 Thư viện Media (Media Libraries) : Có nhiều codec để hỗ trợ việc
phát và ghi các loại định dạng âm thanh, hình ảnh, video thông dụng.
 Thư viện web (LibWebCore) : Đây là thành phần để xem nội dung
trên web, được sử dụng để xây dựng phần mềm duyệt web (Android Browse)
cũng như để các ứng dụng khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ được
nhiều công nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX..
 Thư viện SQLite : Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng......
b. Phần Android runtime
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có
thể hoạt động. Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy
tính thường. Thứ nhất là các thư viện lõi (Core Library) , chứa các lớp như JAVA
IO, Collections, File Access. Thứ hai là một máy ảo java (Dalvik Virtual

Machine) . Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java
của hệ điều hành android không được chạy bằng JRE của Sun (nay là
Oracle) (JVM) mà là chạy bằng máy ảo Dalvik do Google phát triển.
Tầng Application Framework
Tầng này xây dựng bộ công cụ - các phần tử ở mức cao để các lập trình
viên có thể nhanh chóng xây dựng ứng dụng. Nó được viết bằng Java, có khả
năng sử dụng chung để tiết kiệm tài nguyên.
Gồm các thành phần:
 Activity Manager: Quản lý các chu kỳ sống của một ứng dụng cũng như
cung cấp các công cụ điều khiển Activity.
 Telephony Manager: Cung cấp công cụ để thực hiện việc liên lạc như gọi
điện thoại.
 XMPP Service: Cung cấp công cụ để liên lạc trong thời gian thực.
 Location Manager: Cho phép xác định vị trí của điện thoại dựa vào hệ

18


thống định vị toàn cầu GPS và Google Maps.
 Window Manager: Quản lý việc xây dựng và hiển thị các giao diện người
dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng.
 Notication Manager: Quản lý việc hiển thị các thông báo ( như báo có tin
nhắn,có email mới….).
Tầng Application
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như:
Các ứng dụng cơ bản được cài đặt đi liền với hệ điều hành là gọi điện
thoại (phone), quản lý danh bạ (contacts), duyệt web (browser), nhắn tin (sms),
lịch làm việc (calendar), đọc email (email-client), bản đồ (map), quay phim
chụp ảnh (camera)….
Các ứng dụng được cài thêm như các phần mềm chứng khoán (stock), các trò

chơi (game), từ điển….
Các chương trình có các đặc điểm là:
 Viết bằng Java, phần mở rộng là apk.
 Khi mỗi ứng dụng được chạy, nó có phiên bản Virtual Machine được
dựng lên phục vụ cho nó. Nó có thể là một Active Program: chương trình có giao
diện với người sử dụng hoặc là một background: chương trình chạy nền hay là dịch
vụ.
 Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một
thời điểm, có thể có nhiều chương trình chạy một lúc, tuy nhiên, với mỗi ứng dụng
thì có duy nhất một thực thể (instance) được phép chạy mà thôi. Điều đó có tác
dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn.
 Các ứng dụng được gán số ID của người sử dụng nhằm phân định quyền
hạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống.
 Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di
động khác, android cho phép một ứng dụng của bên thứ ba được phép chạy nền.

19


 Cấu trúc của project Android
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.
Fie này 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="com.example.tea"

android:versionCode="1"
android:versionName="1.0">
android:minSdkVersion="8"
android:targetSdkVersion="18" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
android:name="com.example.tea.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

20


</application>
</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.
 Ví dụ: android:icon=”drawable/ic_launcher”.
 android:name = “string”: thuộc tính này để đặt tên cho ứng dụng android.
Tên này sẽ 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.
Permission
Bao gồm các thuộc tính chỉ định quyền truy suấ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 nguyên nào đó thì trong file manifest của
ứng dụng cần phải khai báo các quyền truy suất sau:

android:name=”

android.permission.READ_PHONE_STATE”/>

android:name=”

android.permission.ACCOUNT_MANAGER”/>
<uses-permission 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=”8”/>
Ở đây chỉ ra phiên bản SDK nhỏ nhất mà ứng dụng hiện tại đang sử dụng.
File R.java
File R.java là file tự động sinh ra ngay khi tạo ứng dụng, file này được sử
21



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 ra 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 ngoà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óa một file hình ảnh
thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xóa.
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả
quá trình xây dựng ứng dụng.
 Các thành phần cơ bản của ứng dụng Android
Activity
 Khái niệm Activity
Activity chính là một cửa sổ chứa giao diện ứng dụng của bạn mà người
dùng có thể tương tác với nó. Mỗi màn hình trên ứng dụng cả bạn sẽ là kế thừa
của Activity. Activity dùng các View để hiển thị giao diện ứng dụng người
dùng và đáp ứng lại các yêu cầu từ người dùng. Trong các ứng dụng desktop,
một Activity tương tự như một Form. Bạn cần phải tạo một Activity tương ứng
cho một màn hình hiển thị. Một ứng dụng điển hình bao gồm một giao diện
chính chứa các chức năng chính của chương trình, và các Activity khác chứa
thông tin liên quan đến lưu trữ thông tin của người dùng nhập và các chức năng
khác hỗ trợ chức năng chính của chương trình. Để di chuyển màn hình trong
ứng dụng android, bạn có thể bắt đầu một Activity hay trở lại Activiy trước đó.
Có 3 dạng Activity:
 Floating Activity: là dạng Activity nổi, có kích thước không phủ lấ toàn
bộ màn hình.
 Activity Group: là một nhóm các Activity nhúng trong một Activity khác.
 Full screen Activity: là Activity phủ kín toàn bộ màn hình. Đây là loại
Activity thường được sử dụng phổ biến nhất.
22



Một ứng dụng chứa rất nhiều Activity liên kết với nhau và hoạt động giữa
các Activity chính, được khởi động đầu tiên khi ứng dụng chúng ta chạy. Nó sẽ ở
trạng thái focus và sẽ được đưa vào ngăn xếp. Từ Activity 1, chúng ta khởi động
Activity 2, lúc này Activity 2 sẽ ở trạng thái focus và sẽ được đưa vào ngăn xếp.
Từ Activity 2, chúng ta khởi động Activity 3, bây giờ tới Activity 3 nhận focus và
được đưa vào ngăn xếp.

Hình 1.3 Trình tự các Activity khi đưa vào ngăn xếp
Bây giờ, nếu như bạn nhấn nút Back trên thiết bị, Activity 3 sẽ bị đẩy ra
trước tiên. Lúc này Activity 2 sẽ dành được focus và hiển thị giao diện tương tác
với người dùng. Nếu bạn tiếp tục bấm nút Back thì Activity 1 sẽ dành được focus
và giao diện hiển thị sẽ là Activity 1. Nếu bạn tiếp tục nhấn nút Back nữa thì
Activity 1 sẽ xóa khỏi Stack và lúc này ngăn xếp rỗng và về màn hình HOME của
thiết bị Android.

Hình 1.4. Trình tự các Activity đưa ra ngoài ngăn xếp
23


24


 Vòng đời của 1 Activity
Không giống như các ứng dụng thông thường được khởi tạo ở hàm main. Hệ
thống Android sẽ được bắt đầu thực hiện một Activity tương ứng với từng trạng
thái vòng đời của nó. Vòng đời của một Activity sẽ diễn ra từ lúc khởi động cho
đến khi kết thúc vòng đời của nó. Phần này sẽ giới thiệu cho bạn đọc một cái nhìn
tổng quát về các phương thức quan trong trong vòng đời của một Activity.

Android cung cấp một số sự kiện để quản lý các trạng thái vòng đời của Activity
như sau:
 onCreate(): sự kiện này được gọi khi Activity được tạo lần đầu tiên.
Trong sự kiện này, bạn phải thực hiện những công việc như tạo giao diện, tải dữ
liệu. Sau sự kiện này là sự kiện onStart() được gọi.
 onRestart(): Activity sau khi chuyển sang trạng thái Stopped, nếu muốn
hiển thị và dành được focus, sự kiện onRestart() phải được gọi. Sau sự kiện này
luôn là sự kiện onStart() được gọi.
 onStart(): sự kiện nà được gọi khi giao diện của Activity hiển thị trên màn
hình thiết bị. Lúc này, tương tác giữa người dùng vẫn chưa được và chưa chuyển
sang nhận focus. Theo sự kiện này có thể là sự kiện onResume() hoặc sự kiện
onStop().
 onResume(): sự kiện này được gọi khi Activity bắt đầu tương tác với
người dùng. Theo sự kiện này có thể là sự kiện onPause().
 onPause(): khi một Activity khác dành quyền hiển thị và trạng thái focus
thì Activity hiện hành sẽ gọi sự kiện onPause(). Trong sự kiện này, công việc
chúng ta phải làm là lưu trạng thái Activity và tắt các dịch vụ không cần thiết.
Theo sau sự kiện này có thể là onResume() hoặc onStop().
 onStop(): sự kiện này được gọi khi Activity bị che khuất hoàn toàn bởi
một Activity khác và Activity đó cũng dành được focus. Theo sau sự kiện này có
thể là onRestart() hoặc là onDestroy().
25


×