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

Xây dựng ứng dụng hỗ trợ theo dõi chăm sóc sức khỏe trẻ em trên 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.03 MB, 109 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
-------------------------------------------

NGUYỄN THỊ LAN

XÂY DỰNG ỨNG DỤNG HỖ TRỢ CHĂM SÓC SỨC KHỎE
TRẺ EM TRÊN ANDROID

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
CHUYÊN NGÀNH MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG

1


THÁI NGUYÊN, NĂM 2016

2


TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
---------- oOo ----------

ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Đề Tài:

XÂY DỰNG ỨNG DỤNG HỖ TRỢ CHĂM SÓC SỨC KHỎE
TRẺ EM TRÊN ANDROID


Giảng viên hướng dẫn: Ths Dương Thu Mây
Sinh viên:

Nguyễn Thị Lan

Lớp:

TT&MMTK10A
3


LỜI CẢM ƠN

Lời đầu tiên, em xin chân thành cảm ơn trường Đại Học Công Nghệ
Thông Tin và Truyền Thông- Đại học Thái Nguyên đã tạo điều kiện thuận lợi
cho phép em hoàn thành đồ án tốt nghiệp này.
Em xin chân thành cảm ơn sự giúp đỡ và đóng góp ý kiến nhiệt tình của các
thầy - cô giáo trong bộ môn Mạng máy tính và truyền thông - Khoa Công Nghệ
Thông Tin- Đại học Công Nghệ Thông Tin và Truyền Thông - Đại Học Thái
Nguyên.
Đặc biệt em xin bày tỏ lòng cảm ơn sâu sắc nhất đến Cô giáo Dương Thu
Mây, đã nhiệt tình giúp đỡ em trong suốt quá trình học tập và nghiên cứu.
Và sau cùng em xin gửi lời cảm ơn đến gia đình, bạn bè những người luôn
bên cạnh động viên và giúp đỡ em trong thời gian làm thực tập.

Sinh viên thực hiện
Nguyễn Thị Lan

4



LỜI CAM ĐOAN
Em xin cam đoan nội dung của đề tài hoàn toàn là do em nghiên cứu, tìm
hiểu và tổng hợp từ các tài liệu liên quan, cũng như các kiến thức từ thực tế khi em
học tập, rèn luyện trên ghế giảng đường, không sao chép hoàn toàn nội dung của
các đề tài khác.
Thái Nguyên, ngày tháng năm 2016
Sinh viên
Nguyễn Thị Lan

5


MỤC LỤC
LỜI NÓI ĐẦU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Tổng quan về hệ điều hành android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 Giới thiệu chung về hệ điều hành android . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2 Máy ảo Dalvik trong Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3 Kiến trúc của android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.4 Các thành phần cơ bản của ứng dụng Android . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Tổng quan về phân tích thế kế hướng đối tượng UML . . . . . . . . . . . . . . . . . . . 11
1.2.1 Giới thiệu chung về UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.2 Các đặc điểm cơ bản của hệ thống hướng đối tượng . . . . . . . . . . . . . . . . . 12
1.2.3 Ưu nhược điểm của phân tích thiết kế hướng đối tượng . . . . . . . . . . . . . . 13
1.3. Ứng dụng mô hình UML trong thiết kế ứng dụng Android . . . . . . . . . . . . . 13
1.3.1. Ứng dụng của UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.2. Các biểu đồ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.3. Các kỹ thuật chung của UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.4. UML trong thiết kế ứng dụng Android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

CHƯƠNG 2: KHẢO SÁT, PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG . . . . . . . . 20
2.1 Khảo sát hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.1 Khảo sát tình hình thực tế . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.2 Bài toán đặt ra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.1.3 Các chức năng chăm sóc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Đặc tả mô hình UML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3 Biểu đồ ca sử dụng (UseCase Diagram) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.1 Biểu đồ Use Case tổng quát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.2 Mô tả về biểu đồ Use Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.4 Thiết kế cơ sở dữ liêu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6


2.4.1 Giới thiệu về SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.4.2 Bảng trong cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG CHĂM SÓC SỨC KHỎE . . . . . . . . . . 50
3.1 Hướng dẫn cài đặt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.1.1 Tải và cài đặt môi trường Java Runtime Environment (JRE) . . . . . . . . . 50
3.1.2 Tải và cài đặt Android Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.1.3 Tải và cài đặt Android SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.1.4 Tải và cài đặt ADT plugin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.1.5 Tải và cài đặt máy ảo Genymotion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.1.6 Tải và cài đặt SQLite Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2 DEMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
KẾT LUẬN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
TÀI LIỆU THAM KHẢO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

7



DANH MỤC HÌNH ẢNH
Hình 1.1: Cấu trúc stack hệ thống Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Hình 1.2: Vòng đời của một activity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Hình 1.3: Truyền dữ liệu dùng intent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Hình 1.4: Các phương thức gọi lại của một services . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Hình 2.1: Thông tin về thai nhi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Hình 2.2: Lịch tiêm của mẹ trước khi mang thai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Hình 2.3: Duy trì tình trạng sức khoẻ và tinh thần . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Hình 2.4: Mức biểu hiện tâm trạng phụ nữ sau khi sinh . . . . . . . . . . . . . . . . . . . . . . . . 25
Hình 2.5: Tâm lý của phụ nữ sau khi sinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Hình 2.6: Chăm sóc dinh dưỡng cho bé từ 4 – 6 tháng tuổi . . . . . . . . . . . . . . . . . . . . 26
Hình 2.7 : Hướng dẫn bố mẹ theo dõi cân nặng của trẻ sơ sinh. . . . . . . . . . . . . . . . . 27
Hình 2.8: Lịch tiêm dành cho trẻ sơ sinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Hình 2.9: Biểu đồ Use case mức tổng quát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Hình 2.10: Mô hình kiến trúc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Hình 2.11: Biểu đồ hoạt động đăng xuất. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Hình 2.12: Biểu đồ hoạt động đăng nhập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Hình 2.13: Biểu đồ hoạt động lịch tiêm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Hinh 2.14: Biểu đồ hoạt động cân nặng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Hình 2.15: Biểu đồ hoạt động đêm thai máy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Hình 2.16: Biểu đồ hoạt động khám thai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Hình 2.17: Biểu đồ hoạt động sức khỏe mẹ mang thai . . . . . . . . . . . . . . . . . . . . . . . . . 35
Hình 2.18: Biểu đồ trình tự chức năng đăng ký . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Hình 2.19: Biểu đồ trình tự chức năng đăng nhập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Hình 2.20: Biểu đồ trình tự chức năng sửa thông tin của mẹ.. . . . . . . . . . . . . . . . . . . 38
Hình 2.21: Biểu đồ trình tự chức năng ghi chú. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8


Hình 2.22 : Biểu đồ trình tự chức năng quản lý nhắc nhở . . . . . . . . . . . . . . . . . . . . . . 40

Hình 2.23: Biểu đồ trình tự chức năng theo dõi sức khỏe thai nhi . . . . . . . . . . . . . 41
Hình 2.24: Biểu đồ trình tự chức năng khám thai của mẹ . . . . . . . . . . . . . . . . . . . . . . 42
Hình 2.25: Biểu đồ trình tự chức năng các bệnh thương gặp . . . . . . . . . . . . . . . . . . . 43
Hình 2.26: Biểu đồ trình tự chức năng lịch tiêm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Hình 2.27: Biểu đồ trình tự chức năng theo dõi cân nặng của trẻ . . . . . . . . . . . . . . . 45
Hình 2.28: Biểu đồ trình tự chức năng theo dõi chiều cao của trẻ . . . . . . . . . . . . . . 46
Hình 2.29: Biểu đồ trình tự chức năng chế động dinh dưỡng của bé. . . . . . . . . . . . 47
Hình 2.30: Biểu đồ lớp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Hình 2.31: Bảng cơ sở dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Hình 3.1 : Giao diện chính của chương trình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Hình 3.2: Đăng ký thông tin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Hình 3.3: Sửa thông tin của mẹ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Hình 3.4: Menu chính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Hình 3.5: Thông tin chi tiết ũi tiêm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Hình 3.6: Đếm thai máy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Hình 3.7: Chế độ dinh dưỡng của mẹ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Hình 3.8: Nhắc nhở của mẹ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Hình 3.9: Biểu đồ cân nặng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Hình 3.10: Thông tin chi tiết lịch khám thai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

LỜI NÓI ĐẦU
Sự phát triển không ngừng của ngành công nghệ thông tin đã đem lại những
đóng góp to lớn cho nhân loại, đã giải quyết được những khó khăn mà trước đây
con người chưa giải quyết được.Đối với nước ta đang trong sự nghiệp công nghiệp
hóa, hiện đại hóa đất nước, ngành công nghệ thông tin hứa hẹn sẽ có những bước
tiến đang kể trong tương lai. Đi cùng với sự phát triển của ngành công nghệ thông
9


tin là sự ra đời ngày càng nhiều thiết bị cầm tay, smartphone. Nhu cầu của con

người về việc sử dụng và giải trí trên các thiết bị di động cũng ngày càng cao và đa
dạng.
Bên cạnh với sự phát triển của công nghệ, chất lượng cuộc sống của con
người ngày càng tăng lên thì vấn đề sức khỏe ở con người đòi hỏi phải có những
tiến bộ hơn, đặc biệt là sức khỏe của trẻ em – thế hệ được coi là mầm xanh của
tương lai.Tuy nhiên, thực trạng thực tế đã cho ta thấy có nhiều vấn đề tiêu cực
trong việc chăm sóc và chữa bệnh cho trẻ em, đặc biệt là vấn đề chăm sóc sức
khỏe cho trẻ em .
Xuất phát từ những vấn đến trên, em đã lựa chọn đề tài “Xây dựng ứng
dụng hỗ trợ theo dõi chăm sóc sức khỏe trẻ em trên Android” để giúp cho việc
giải quyết các vấn đề trên trở nên tiện lợi, dễ dàng và chuyên nghiệp hơn.
Mặc dù đã rất cố gắng hoàn thành đề tài 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 ý và tận tình chỉ
bảo từ các thầy, cô.
Cuối cùng em rất cám ơn cô Dương Thu Mây đã hướng dẫn chỉ bảo tận tình
để em có thể hoàn thành đề tài này.
Em xin chân thành cảm ơn !
Sinh viên
Nguyễn Thị Lan

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Tổng quan về hệ điều hành android
1.1.1 Giới thiệu chung về hệ điều hành android
Android là một nền tảng mã nguồn mở toàn diện được thiết kế cho các thiết
10


bị di động. Nó là sự liên minh giữa ông lớn Google và Open Handset Alliance –
các tập đoàn sản xuất thiết bị cầm tay nổi tiếng như Intel, SamSung, Toshiba…
Với mục tiêu là tăng tốc việc đổi mới trong di động và cung cấp cho người tiêu

dung nhiều tiện ích phong phú, ít tốn kém. Android chính là công cụ để làm điều
đó.
Android là một nền tảng mã nguồn mở, toàn bộ ngăn xếp từ các module cấp
thấp của Linux đến tất cả các thư viện gốc và tử các ứng dụng khung cho đến các
ứng dụng hoàn chỉnh là hoàn toàn mở.
Trong lịch sử phát triển, ban đầu Android thuộc sở hữu của công ty Android
Inc. Sau đó được Google mua lại vào năm 2005 và bắt đầu xây dựng Android
Platform. Cuối năm 2007 liên minh Open HandsetAlliance được thành lập và được
công bố, Android chính thức trở thành mã nguồn mở. Phiên bản đầu tiên được phát
hành vào tháng 11 năm 2007.
1.1.2 Máy ảo Dalvik trong Android
Dalvik là máy ảo giúp các ứng dụng java chạy được trên các thiết bị động
Android. Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik
(dex). Định dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc
độ xử lý. Dalvik đã được thiết kế và viết bởi Dan Bornstein, người đã đặt tên cho
nó sau khi đến thăm một ngôi làng đánh cá nhỏ có tên là Dalvik.
Từ góc nhìn của một nhà phát triển, Dalvik trông giống như máy ảo Java
(Java Virtual Machine) nhưng thực tế thì hoàn toàn khác. Khi nhà phát triển viết
một ứng dụng dành cho Android, anh ta thực hiện các đoạn mã trong môi trường
Java. Sau đó, nó sẽ được biên dịch sang các bytecode của Java, tuy nhiên để thực
thi được ứng dụng này trên Android thì nhà phát triển phải thực thi một công cụ có
tên là dx. Đây là công cụ dùng để chuyển đổi bytecode sang một dạng gọi là dex
bytecode. "Dex" là từ viết tắt của "Dalvik executable" đóng vai trò như cơ chế ảo
thực thi các ứng dụng Android.
1.1.3 Kiến trúc của android
11


Hình 1.1: Cấu trúc stack hệ thống Android
Tầng ứng dụng

Đâ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 như: 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 (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.
12


 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.
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ệ
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ó
13


tin nhắn,có email mới….).
Library
Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều
thành phần khác nhau trong hệ thống Android. Điều này được thể hiện thông qua
nền tảng ứng dụng Android. Một số các thư viện cơ bản gồm:
 Hệ thống thư viện C : triển khai BSD-derived có nguồn gốc từ các hệ
thống thư viện chuẩn C (libc), được sử dụng chỉ bởi hệ điều hành.
 Media Libraries – Dựa trên gói Video OpenCORE; các thư viện hỗ trợ
phát và ghi âm của các định dạng âm thanh và video phổ biến, cũng như các file
hình ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
 Surface Manager – Quản lý việc truy xuất vào hệ thống hiển thị
 LibWebCore - Đâ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..
 SGL – Các cơ sở công cụ đồ họa 2D.
 3D libraries - Thực hiện dựa trên OpenGL ES 1.0 APIs; Thư viện sử dụng
hoặc là tăng tốc phần cứng 3D (nếu có) hoặc bao gồm tối ưu hóa phần mềm 3D.

 SQLite - Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng
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.

14


Linux kernel
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
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.
1.1.4 Các thành phần cơ bản của ứng dụng Android
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
15


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. 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.
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ó. 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ó. 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(): sự kiện được gọi khi muốn khỏi động lại một activity đã bị

Stop. 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ị.
 onResume(): sự kiện này được gọi khi Activity bắt đầu tương tác với
người dùng.
 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().
 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.

16


Hình 1.2: Vòng đời của một activity
Khi một Activity bị paused hoặc stopped, trạng thái của một Activity vẫn sẽ
được giữ lại. Điều này là đúng vì mỗi đối tượng Activity vẫn còn được giữ lại
trong bộ nhớ khi nó bị paused hoặc stopped. Tất cả các thông tin về Activity cũng
như trạng thái của nó vẫn còn tồn tại trong. Vì vậy, bất cứ thay đổi nào của người
dùng đối với Activity vẫn được giữ lại khi nó trở lại trạng thái hoạt động hoặc chế
độ resume.
Intent
Intent là cầu nối giữa các Activity trong ứng dụng android. Intent chính là
người đưa thư, giúp chúng ta triệu gọi cũng như truyền các dữ liệu cần thiết để
thực hiện một Activity từ một Activity khác.

17


Hình 1.3: Truyền dữ liệu dùng intent
Services

Các dịch vụ (services) là thành phần chạy nền và không có bất kỳ giao diện
nào. Chúng có thể thực hiện các hành động tương tự như các hoạt động, nhưng mà
không có bất kỳ giao diện người dùng nào. Dịch vụ là hữu ích với các hành động
(actions) khi mà người dùng cùng một lúc muốn thực hiện trên màn hình nhiều
actions. Services có thể được sử dụng theo 2 cách:
+ Services có thể được bắt đầu và được phép hoạt động cho đến khi một
người nào đó dừng Services lại hoặc Services tự ngắt. Ở chế độ này, Services được
bắt

đầu

bằng

cách

gọi

Context.startService()



dừng

bằng

lệnh

Context.stopService(). Services có thể tự động ngắt bằng lệnh Service.stopSelf()
hoặc Service.stopSelfResult(). Chỉ cần một lệnh stopService() để ngừng Service lại
cho dù lệnh startService() được gọi ra bao nhiêu lần.

+ Service có thể được vận hành theo như đã được lập trình việc sử dụng
một giao diện mà nó định nghĩa. Người dùng thiết lập một đường truyền đến đối
tượng Service mà Services sử dụng và sử dụng đường kết nối đó để thâm nhập vào
Service. Kết nối này được thâm nhập bằng cách gọi lệnh Context.bindService() và
được đóng lại bằng cách gọi lệnh Context.unbindService(). Nhiều người dùng có
thể kết nối tới cùng một thiết bị. Nếu Service vẫn chưa được khởi chạy, lệnh
bindService() có thể tùy ý khởi động Services.
18


Hai chế độ này thì không tách biệt toàn bộ. Có thể kết nối với một Service
mà nó đã được bắt đầu với lệnh startService(). Ví dụ, một Service nghe nhạc ở chế
độ nền có thể bắt đầu với lệnh startService() cùng với một đối tượng Intent mà
định dạng được âm nhạc để chơi. Sau đó, có thể là khi người sử dụng muốn kiểm
soát trình chơi nhạc nhạc hoặc biết thêm thông tin về bài hát hiện tại đang chơi, thì
sẽ có một Activity tạo lập một đường truyền tới Service bằng cách gọi bindService
(). Trong trường hợp như thế này, stopService() sẽ không thực sự ngừng Service
cho đến khi liên kết cuối cùng được đóng lại.

Hình 1.4: Các phương thức gọi lại của một services

Content Providers
Content Providers là lớp trung gian chia sẻ dữ liệu giữa các ứng dụng. Mặc
19


định, Android chạy mỗi ứng dụng trong một khuôn thử của riêng nó để tất cả dữ
liệu thuộc về một ứng dụng hoàn toàn độc lập với các ứng dụng khác trong hệ
thống. Mặc dù một lượng nhỏ dữ liệu vẫn được trao đổi giữa các ứng dụng thông
qua các Intent, content providers sẽ tốt hơn và thích hợp nhiều cho việc chia sẻ dữ

liệu liên tục giữa các bộ dữ liệu lớn.
Hệ thống Android sử dụng cơ chế này vào mọi lúc. Chẳng hạn như Content
Providers ở đây trình bày tất cả các dữ liệu liên hệ của người dùng một cách đa
dạng trên ứng dụng. Settings Provider trình bày việc cài đặt các ứng dụng khác
nhau trên hệ thống, bao gồm cả việc xây dựng ứng dụng Settings. Media Store
chịu trách nhiệm lưu trữ và chia sẻ các phương tiện khác nhau, chẳng hạn như ảnh
và âm nhạc trên các ứng dụng khác nhau.
Content Providers là các giao diện tương đối đơn giản với các phương thức
tiêu chuẩn như insert(), update(), delete(), and query(). Các phương thức này giống
như các phương thức chuẩn trong cơ sở dữ liệu.
Broadcast Receivers
Broadcast Receivers (có thể gọi là Receiver) là một trong bốn loại thành
phần trong ứng dụng Android. Chức năng dùng để nhận các sự kiện mà các ứng
dụng hoặc hệ thống phát đi.
Có 2 cách phát-nhận đó là:
+ Không có thử tự: receiver nào đủ điều kiện thì nhận hết, không phân biệt
và cũng tách rời nhau.
+ Có thứ tự: receiver nào đăng ký ưu tiên hơn thì nhận trước và có thể
truyền thêm thông tin xử lý cho các receiver như sau.
Chu kì sống của Broadcast Receiver: thực ra chu kỳ sống của Broadcast
Receiver chỉ có duy nhất một phương thức onReceive():
+ Khi có sự kiện mà Broadcast Receiver đã đăng ký nhận được phát đi, thì
phương thức onReceive() của Broadcast Receiver đó sẽ được gọi.
+ Sau khi thực thi xong phuowmg thức này, lifecycle của Receiver kết thúc.
20


+ Ngay khi onReceive() kết thúc, hệ thống coi như receiver đã không còn
hoạt động và có thể kill process chứa receiver này bất cứ lúc nào.
+ Tránh xử lý các code quá lâu trong onReceive().

+ Không có xử lý bất đồng bộ chờ callback trong Receiver ( cụ thể như hiển
thị Dialog, kết nối các service…).

21


SQLite
SQLite là một dạng CSDL tương tự MySQL, PostgreSQL,…Đặ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à nó 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.
Telephony
Telephony cũng làm một thành phần tương đối quan trọng trong hệ thống
Android. Nó cho phép người lập trình có thể lấy các thông tin của hệ thống như
thông tin SIM, thông tin thiết bị, thông tin mạng…Ngoài ra, chúng ta cũng có thể
cài đặt các thông số cho cho thiết bị nếu các thông số đó có thể thay đổi được. Tất
cả những điều đó được được quản lý bởi một class Telephony Manager trong
Android.
1.2 Tổng quan về phân tích thế kế hướng đối tượng UML
1.2.1 Giới thiệu chung về UML
Ngôn ngữ mô hình hóa thống nhất (Unifield Modeling Language – UML) là
một ngôn ngữ để biểu diễn mô hình theo hướng đối tượng được xây dựng bởi ba
tác giả trên với mục đích là:
+ Mô hình hoá các hệ thống sử dụng các khái niệm hướng đối tượng.
+ Thiết lập một kết nối từ nhận thức của con người đến các sự kiện cần mô
hình hoá.
+ Giải quyết vấn đề về mức độ thừa kế trong các hệ thống phức tạp, có
nhiều ràng buộc khác nhau.
+ Tạo một ngôn ngữ mô hình hoá có thể sử dụng được bởi người và máy.

22


UML tổ chức một mô hình thành một loạt các hướng nhìn, thể hiện các khía
cạnh khác nhau của hệ thống. Chỉ khi kết hợp tất cả các hướng nhìn lại với nhau,
người ta mới co được một bức tranh trọn vẹn về hệ thống. Một hướng nhìn không
phải là một hình vẽ, nội dung của nó được miêu tả qua các biểu đồ, đây là những
hình vẽ chứa đựng các phần tử mô hình hóa. Một biểu đồ bình thường chỉ trình
bày một phần nội dung của một hướng nhìn, và một hướng nhìn được định nghĩa
với rất nhiều biểu đồ.
1.2.2 Các đặc điểm cơ bản của hệ thống hướng đối tượng
Lớp và đối tượng
 Lớp (Class) – Mẫu để xác định trường hợp hoặc các đối tượng cụ thể
 Đối tượng (Object) – Mô tả của một lớp
 Thuộc tính (Attributes) – Mô tả cho đối tượng
 Chức năng (Behaviors) – Xác định các đối tượng có thể làm gì
Phương thức và message
Phương thức (Method) thực hiện chức năng của đối tượng. Tương tự như
một hàm hoặc một thủ tục.
Message được gửi khi một phương thức được kích hoạt
Tóm lược và ẩn thông tin
 Tóm lược: Kết hợp dữ liệu và quá trình thành một thực thể
 Ẩn thông tin: Chỉ có những thông tin cần thiết để sử dụng một module
phần mềm mới được công bố cho người sử dụng
Thừa kế
 Các lớp super hoặc các lớp cơ bản là những lớp mở đầu của hệ thống
phân cấp các lớp
 Các lớp con hoặc các lớp cụ thể được thừa kế từ các lớp này
 Các lớp con được thừa kế các thuộc tính và phương thức từ các lớp cao
hơn trong hệ thông phân cấp lớp.

23


Đa hình thái và liên kết động
 Đa hình thái: Một thông điệp có thể được giải thích khác nhau bởi các
đối tượng khác nhau.
 Liên kết động: Nhập vào chậm trễ hoặc lựa chọn phương pháp cho một
đối tượng được thực hiện khi thời gian bắt đầu chạy
 Liên kết tĩnh: Loại của đối tượng được xác định tại thời điểm biên dịch.


24


1.2.3 Ưu nhược điểm của phân tích thiết kế hướng đối tượng
Ưu điểm
 Gần gũi với thế giới thực
 Tái sử dụng dễ dàng
 Đóng gói, che giấu thông tin là cho hệ thống tin cậy hơn
 Xây dựng tốt với những hệ thống lớn và phức tạp
 Dễ bảo trì, mọi thay đổi của đối tượng không làm ảnh hưởng đến các đối
tượng khác.
Nhược điểm
 Khó tực hiện vì khó xác định đối tượng của hệ thống
1.3. Ứng dụng mô hình UML trong thiết kế ứng dụng Android
1.3.1. Ứng dụng của UML
Đối với nhiều lập trình viên, không có khoảng cách nào giữa ý tưởng để
giải quyết một vấn đề và việc thể hiện điều đó thông qua các đoạn mã. Họ nghĩ ra
và họ viết mã. Trên thực tế, điều này gặp một số vấn đề. Thứ nhất, việc trao đổi về
các ý tưởng giữa những người lập trình sẽ gặp khó khăn, trừ khi tất cả đều nói

cùng một ngôn ngữ. Thậm chí ngay cả khi không gặp trở ngại về ngôn ngữ thì đối
với từng công ty, từng nhóm cũng có những “ngôn ngữ” riêng của họ. Điều này
gây trở ngại cho một người mới vào để có thể hiểu được những việc đang được
tiến hành. Hơn nữa, trong lĩnh vực phần mềm, nhiều khi khó có thể hiểu được nếu
chỉ xem xét các đoạn mã lệnh.
Xây dựng mô hình sử dụng ngôn ngữ UML đã giải quyết được các khó
khăn trên. Khi trở thành một chuẩn trong việc lập mô hình, mỗi kí hiệu mang một
ý nghĩa rõ ràng và duy nhất, một nhà phát triển có thể đọc được mô hình xây dựng
bằng UML do một người khác viết.
Những cấu trúc mà việc nắm bắt thông qua đọc mã lệnh là khó khăn nay đã

25


×