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

Ứng dụng chỉnh sửa ảnh 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 MB, 81 trang )

 LỜI CẢM ƠN
Lời đầu tiên, em xin gửi lời cảm ơn sâu sắc đến thầy giáo Th.S Bùi Anh Tú
– bộ môn công nghệ phần mềm đã định hướng và tận tình giúp đỡ, động viên em
trong quá trình thực hiện đồ án. Em xin chân thành cảm ơn thầy!
Em xin cảm ơn những người bạn và gia đình đã động viên, giúp đỡ để em
phấn đấu vượt qua khó khăn trong quá trình học tập và rèn luyện tại Trường Đại
học Công nghệ Thông tin và Truyền thông.
Đồ án tốt nghiệp là cơ hội để em có thể áp dụng, tổng kết lại những kiến
thức mà mình được học. Đồng thời, em rút ra được những kinh nghiệm thực tế và
quý giá trong suốt quá trình thực hiện đồ án. Sau một thời gian khá dài, em tập
trung công sức cho đồ án và làm việc tích cực, đặc biệt nhờ sự chỉ đạo và hướng
dẫn tận tình của thầy Bùi Anh Tú cùng với các thầy cô trong trường Đại học Công
nghệ thông tin và truyền thông – Đại học Thái Nguyên, đã giúp em hoàn thành đồ
án một cách thuận lợi và gặt hái được những kết quả như mong muốn.
Cuối cùng, em xin cảm ơn tất cả thầy cô giáo Trường Đại học Công nghệ
Thông tin và Truyền thông đã dạy dỗ, chỉ bảo những kiến thức, tri thức khoa học
và những bài học kinh nghiệm trong suốt quá trình học tập, rèn luyện tại trường, đề
em chuẩn bị thật tốt kiến thức và hành trang trong cuộc sống.
Kính chúc quý thầy cô mạnh khỏe, tiếp tục đạt được nhiều thắng lợi trong
nghiên cứu khoa học và sự nghiệp trồng người.

 Em xin chân thành cảm ơn!
 Sinh viên

 Hoàng Duy Hoàng


1


 LỜI CAM ĐOAN


Em xin cam đoan toàn bộ nội dung trong đồ án này là do tự em đọc và
nghiên cứu các tài liệu, khảo sát các phần mềm hiện nay. Từ đó viết ra cơ sở lý
thuyết và xây dựng chương trình “Ứng dụng chỉnh sửa ảnh trên nền tảng
Android”.
Mọi nguồn tham khảo, trích dẫn trong đồ án đều được ghi rõ nguồn gốc.
Người cam đoan
Hoàng Duy Hoà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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
MỞ ĐẦU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1 Tổng quan về hệ điều hành android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.1 Đặc điểm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.2 Kiến trúc tổng quát của hệ điều hành Android . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.3 Chu kỳ ứng dụng android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 Các thành phần giao diện trong android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.1 View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.2 ViewGroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.3 LinearLayout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2.4 FrameLayout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2.5 AbsoluteLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2.6 RetaliveLayout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2.7 TableLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.2.8 ImageView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2.9 ListView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2.10 TextView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.2.11 EditText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3 Activity và Intent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3.1 Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3


1.3.2 Intent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4 Tìm hiểu về bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.1 Bitmap trong Android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.2 Màu sắc trong Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.3 Thao tác với điểm ảnh trong bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5 Một số thuật toán xử lý ảnh trong android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.5.1 Convolution matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.5.2 Neon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.5.3 Emboss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.5.4 TV Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.5.5 Sketch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.5.6 Invert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.5.7 Smoothing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.5.8 Gaussian blue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.5.9 Grayscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.5.10 Sharpen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.5.11 Color lighten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
CHƯƠNG 2: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG . . . . . . . . . 32
2.1 Khảo sát thực tế . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2 Đặc tả bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3 Đặc tả chức năng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.3.1 Chức năng load ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.2 Chức năng xử lý ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4 Các biểu đồ hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.4.1 Biểu đồ use case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.4.2 Biểu đồ trình tự . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4.3 Biểu đồ hoạt động. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4.4 Biểu đồ class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4


2.5 Luồng sự kiện. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.5.1 Luồng sự kiện cho chức năng load ảnh.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.5.2 Luồng sự kiện chức năng edit.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5.3 Luồng sự kiện chức năng styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5.4 Luồng sự kiện chức năng text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5.5 Luồng sự kiện chức năng stickers.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.5.6 Luồng sự kiện cho các chức năng share, save, wallpaper. . . . . . . . . . . . . 44
CHƯƠNG 3: DEMO ỨNG DỤNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1 Một vài hình ảnh của ứng dụng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2 Danh sách các màn hình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
KẾT LUẬN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
TÀI LIỆU THAM KHẢO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5


DANH MỤC HÌNH
Hình 1.1-2 Hệ điều hành Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Hình 1.3 Kiến trúc tổng quát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Hình 1.4 Tầng ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Hình 1.5 Application Framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Hình 1.6 Libraries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Hình 1.7 Android Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Hình 1.8 Linux kernel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Hình 1.9 Chu kỳ sống thành phần.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Hình 1.10 Chu kỳ sống của Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Hình 1.11 Bố trí các widget sử dụng LinearLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Hình 1.12 Bố trí trong RelativeLayout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Hình 1.13 Minh hoạ cho một ListView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Hình 1.14 Truyền dữ liệu giữa 2 Activity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Hình 1.15 Các thuộc tính của Intend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Hình 1.16 Các Action đã được định nghĩa sẵn trong Intend . . . . . . . . . . . . . . . . . . . . 22
Hình 1.17 Công thức xử lý ảnh ma trận nhân chập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Hình 1.18 Công thức ma trận nhân chập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Hình 1.19 Mô tả ảnh neon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Hình 1.20 Mô tả ảnh Emboss. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Hình 1.21 Mô tả hiệu ứng Shapen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Hình 2.1 Quá trình xử lý một bức ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Hình 2.2 biểu đồ use case tổng quát. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Hình 2.3 Biểu đồ usecase edit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Hình 2.4 Biểu đồ usecase Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Hình 2.5 Biểu đồ usecase Stickers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Hình 2.6 Biểu đồ usecase text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6


Hình 2.7 Biểu đồ trình tự chức năng load ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Hình 2.8 Biểu đồ trình tự chức năng xử lý ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Hình 2.9 Biểu đồ hoạt động cho chức năng load ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Hình 2.10 Biểu đồ hoạt động cho chức năng xử lý ảnh. . . . . . . . . . . . . . . . . . . . . . . . 39

Hình 2.11 Biểu đồ class tổng quát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Hình 2.12 Biểu đồ class edit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Hình 2.13 Biểu đồ class Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Hình 2.14 Biểu đồ class Sticker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Hình 2.15 Biểu đồ class Style. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Hình 3.1 Màn hình chức năng load ảnh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Hình 3.2 Màn hình hiển thị ảnh và các chức năng xử lý ảnh . . . . . . . . . . . . . . . . . . . 46
Hình 3.3 Tạo hiệu ứng Neon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Hình 3.4 Tạo hiệu ứng Pseudo HDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Hình 3.5 Chọn các filter cho bức ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Hình 3.6 Tăng giảm độ sáng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Hình 3.7-8 Chọn các stickers cho bức ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Hình 3.9-10 Chọn background và frame cho ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Hình 3.11-12 Nhập văn bản và chọn màu chữ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Hình 3.13-14 Share và save ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

7


 MỞ ĐẦU
Ngày nay, hệ điều hành Android ra đời và trở thành nền tảng điện thoại
thông minh phổ biến nhất thế giới, với sự kế thừa những ưu việt của các hệ điều
hành ra đời trước và sự kết hợp của nhiều công nghệ tiên tiến nhất hiện nay.
Những ưu điểm dễ thấy nhất của Android chính là khả năng tùy biến nhanh chóng,
dễ làm quen, ứng dụng hỗ trợ phong phú, tương thích với đa cấu hình phần cứng
của các nhà sản xuất. Dù đã hay chưa từng sử dụng smartphone Android thì ta
cũng không cần quá lo lắng về việc thay đổi. Hầu như tất cả những smartphone sử
dụng hệ điều hành Android đều rất dễ sử dụng, đơn giản trong tùy biến theo sở
thích cá nhân, cũng như có rất nhiều ứng dụng để thỏa mãn nhu cầu của từng
người dùng. Đồng thời Android có mã nguồn mở đã 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 được điều chỉnh và phân phối Android
một cách tự do.
Cùng với sự phát triển không ngừng của công nghệ thông tin, các siêu phẩm
điện thoại thông minh ra đời, các thiết bị di động như điện thoại, máy tính bảng,
máy nghe nhạc, selfie... ngày càng phát triển mạnh mẽ, tạo nên cuộc cạnh tranh
giữa các hãng phát triển di động. Ngày càng nhiều sản phẩm di động thông minh ra
đời được nâng cấp và cải thiện rất lớn về hiệu suất cũng như cấu hình cao đáp ứng
nhu cầu của người sử dụng.
Bên cạnh những chức năng quan trọng của một chiếc smartphone, một chức
năng cũng không thể thiếu đó là chiếc camera chụp ảnh, để lưu trữ lại những kỷ
niệm đẹp, những khoảnh khắc ý nghĩa... Những chiếc smartphone ngày càng được
cải thiện cả về tính năng lẫn chất lượng phần cứng, camera trên điện thoại cũng
ngày một hoàn thiện hơn, áp dụng những công nghệ xử lý ảnh tiên tiến để cho ra
những bức ảnh đẹp và trân thực nhất, đáp ứng nhu cầu chụp ảnh, selfie với chất
lượng hình ảnh cao.
Tuy nhiên, những chiếc camera mặc định của điện thoại thường chỉ cho ra
8


những hình ảnh thô và không làm hài lòng người sử dụng, đôi khi họ muốn biến
những bức ảnh kém nổi bật sau khi chụp trở nên lung linh và sắc nét hơn, với
những hiệu ứng biến đổi màu sắc, hiệu ứng khung ảnh, làm cho bức ảnh trở nên
khác biệt. Và họ cần một ứng dụng khác biệt có thể thay thế ứng dụng mặc định
mà hệ điều hành cung cấp có thể tùy chỉnh bức ảnh sau khi chụp theo sở thích của
mỗi người.
Bởi vậy trước nhu cầu và lợi thế đó, em quyết định nghiên cứu và xây dựng
ứng dụng: “Xây dựng ứng dụng chỉnh sửa ảnh trên nền tảng android.”
Ứng dụng có thể cho phép mọi người chỉnh sửa các hiệu ứng, biển đổi tăng
sáng tối cho bức ảnh, có thể tạo style, thêm text hoặc các sticker ngộ nghĩnh cho
bức ảnh. Bên cạnh đó sau khi xử lý ảnh xong, người dùng có thể chia sẻ lên mạng

xã hội, tạo wallpaper cho điện thoại của mình.
Nội dung báo cáo gồm các phần chính sau đây:
Chương 1: Cơ sở lý thuyết
Chương 2: Khảo sát và phân tích thiết kế hệ thống
Chương 3: Demo ứng dụng
Trong quá trình xây dựng đề tài không thể tránh được những thiếu sót
, em mong được những ý kiến đóng góp, phê bình của các thầy, cô để bài
của em được hoàn thiện hơn. Sự phê bình, góp ý của quý thầy cô sẽ là nhưng bài
học kinh nhiệm quý báu cho công việc thực tế của em sau này.
Em xin trân thành cảm ơn!
Sinh viên
Hoàng Duy Hoàng

9


 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
 Tổng quan về hệ điều hành android.

Hình 1.1-2 Hệ điều hành Android
Android là nền tảng phần mềm dựa trên mã nguồn mở Linux OS (Kernel
2.6) được thiết kế dành riêng cho các thiết bị di động có màn hình cảm ứng như
điện thoại thông minh hay máy tính bảng, nhằm xây dựng các ứng dụng hỗ trợ mà
người sử dụng cần đến.
Được xây dựng trên một nền tảng mở, và một bộ thư viện đa năng, mạnh
mẽ với nguyên lý mở, Android đã nhanh chóng được cộng đồng lập trình viên di
10


động hưởng ứng mạnh mẽ.

Nền tảng Android tích hợp nhiều tính năng nổi bật:
 Android là một hệ điều hành nhân Linux, đảm bảo sự tương tác với các phần
cứng, quản lý bộ nhớ, điều khiển các tiến trình tối ưu cho các thiết bị di động.
 Bộ ứng dụng khung cho phép sử dụng lại và thay thế các thành phần
riêng lẻ.
 Máy ảo Dalvik được tối ưu cho các thiết bị di động, chạy các ứng dụng
lập trình trên ngôn ngữ Java.
 Các thư viện cho phát triển ứng dụng mã nguồn mở bao gồm SQLite,
WebKit, OpenGL và trình quản lý đa phương tiện.
 Hỗ trợ các chuẩn đa phương tiện phổ biến, thoại trên nền GSM,
Bluetooth EDGE, 3G và Wifi.
 Hỗ trợ Camera, GPS, la bàn, máy đo gia tốc…
 Bộ phát triển ứng dụng SDK đầy đủ gồm thiết bị giả lập, công cụ sửa
lỗi, tích hợp với Eclipse SDK.

 Đặc điểm
 Tính mở
Android được xây dựng từ dưới đi lên cho phép người phát triển tạo các
ứng dụng di động hấp dẫn với đầy đủ các điểm mạnh của các thiết bị cầm tay hiện
có. Android hoàn toàn mở, một ứng dụng có thể gọi tới bất kể một chức năng lõi
của điện thoại như tạo cuộc gọi, gửi tin nhắn hay sử dụng máy ảnh, cho phép
người phát triển tạo phong phú hơn, liên kết hơn các tính năng cho người dùng.
Nền tảng này sẽ tiếp tục phát triển bởi cộng đồng phát triển để tạo ra các ứng dụng
di động hoàn hảo.
 Tính ngang hàng của các ứng dụng
Với Android, không có sự khác nhau giữa các ứng dụng điện thoại cơ bản
với ứng dụng của bên thứ ba. Chúng được xây dựng để truy cập như nhau tới một
11



loạt các ứng dụng và dịch vụ của điện thoại. Với các thiết bị được xây dựng trên
nền tảng Android, người dùng có thể đáp ứng đầy đủ các nhu cầu mà họ thích.
Chúng ta có thể đổi màn hình nền, kiểu gọi điện thoại, hay bất kể ứng dụng nào.
Chúng ta thậm chí có thể hướng dẫn điện thoại chỉ xem những ảnh mình thích.
 Dễ xây dựng ứng dụng
Android cung cấp bộ thư viện giao diện lập trình ứng dụng đồ sộ và các
công cụ để viết các ứng dụng phức tạp. Ví dụ, Android có thể cho phép người phát
triển biết được vị trí của thiết bị và cho phép các thiết bị giao tiếp với nhau để có
thể tạo nên mạng xã hội chia sẻ ngang hàng rộng khắp.

12


So sánh với các hệ điều hành cùng loại khác:
Bảng 1.1 So Sánh Các Hệ Điều Hành Điện Thoại Thông Minh
HDH

Ưu điểm

Nhược điểm

Google Android là nền tảng mở, cho Hệ

điều

hành

phân

phép người dùng có thể tùy biến nền mảnh, không thống nhất

tảng theo ý thích, hơn nữa lại có một trên các thiết bị, giới
Liên minh thiết bị cầm tay mở hậu hạn về độ 'mở' và nhiều
thuẫn, Google Android đang là đối thủ lỗ hổng bảo mật là
xứng tầm của iPhone của Apple. những yếu điểm của
Android

Google đang tích cực mở rộng cộng Android OS.
đồng phát triển các ứng dụng cho
Android. Bộ công cụ phát triển phần
mềm (SDK) đầy đủ, hỗ trợ đa nền
(Linux, Windows hay Mac OS) do
chạy trên máy ảo Java. Thư viện ngày
càng hoàn thiện, dễ dàng cho người
lập trình.
Có thư viện API khá giống với API Sự có mặt của iPhone
trên Win32, các công cụ hỗ trợ lập và Android là hai trở

Windows
Phone

trình đầy đủ với Visual Studio, điều ngại lớn với Windows
này làm cho những người phát triển Mobile. Hai nền tảng
trên Win32 không mất công tìm hiểu này đang hoàn thiện và
lại các API và các công cụ lập trình.

được người dùng rất ưa
chuộng.

13



Màn hình cảm ứng đa điểm: iPhone Việc lập trình trên cho
sử dụng hoàn toàn bằng cảm ứng và iPhone phải thực hiện
không sử dụng các nút. Với iPhone ta trên hệ điều hành Mac,
có thể điều khiển trên màn hình kể cả do đó không phải ai
việc trượt của các ngón tay. Ta có thể cũng có thể lập trình
phóng to ảnh bằng cách trượt hai ngón cho iPhone. Hơn thế,
tay ra xa và thu nhỏ bằng cách ngược nếu muốn đưa chương
iOS

trình ra máy thật người

lại.

Bộ cảm nhận gia tốc: Những phản lập trình phải trả một
ứng nhanh chóng của bộ cảm nhận gia khoản phí lập trình, điều
tốc thay đổi độ phân giải màn hình từ này làm giảm tính cạnh
dọc sang ngang tự động khi ta đặt điện tranh so với các đối thủ
thoại nằm ngang. Điều này làm sinh khác.
động thêm cho các trò chơi. Âm thanh,
hình ảnh hoàn hảo.

 Kiến trúc tổng quát của hệ điều hành Android
Mô hình sau thể hiện môt cách tổng quát các thành phần của hệ điều hành
Android.

14


Hình 1.3 Kiến trúc tổng quát


 Tầng ứng dụng (Applications)

Hình 1.4 Tầng ứng dụng
Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: contacts,
browser, camera, Phone,… Tất cả các ứng dụng chạy trên hệ điều hành Android
đều được viết bằng Java.
1.1.2.2 Application Framework

15


Hình 1.5 Application Framework
Kiến trúc của Android khuyến khích khái niệm thành phần sử dụng lại, cho
phép công bố và chia sẻ các Activity, Service, dữ liệu, với các ứng dụng khác với
quyền truy cập được quản lý bởi khai báo.
1.1.2.3 Library

Hình 1.6 Libraries
Android cung cấp một số các APIs cho phát triển ứng dụng. Danh sách các
API cơ bản sau được cung cấp bởi tất cả các thiết bị trên nền Android:
 android.util: Gói tiện ích cơ bản bao gồm nhiều lớp mức thấp như là các
lớp quản lý (List, Stack…) lớp xử lý chuỗi, lớp xử lý XML.
 android.graphics: Cung cấp các lớp đồ họa mức thấp thực hiện các chức
năng đồ họa, màu, vẽ cơ bản.
 android.database: Cung cấp các lớp mức thấp bắt buộc cho việc điều
khiển cursor khi làm việc với các cơ sở dữ liệu.
 android.content: Các giao tiếp lập trình nội dung được dùng để quản lý
truy cập dữ liệu và xuất bản bằng cách cung cấp các dịch vụ thao tác với tài
nguyên, Content Provider, và các gói.

 android.view: View là lớp giao diện người dùng cơ bản nhất. Tất cả giao
diện người dùng được tạo ra đều phải sử dụng một tập các View để cung cấp cho
các thành phần tương tác người dùng.
 android.widget: Xây dựng dựa trên gói View. Những lớp widget những
thành phần giao diện được tạo sẵn được sử dụng để tạo nên giao diện người dùng.
 android.telephony: Các API điện đàm cung cấp khả năng tương tác trực
16


tiếp với tầng điện thoại trong các thiết bị, cho phép tạo, nhận, theo dõi các cuộc
gọi, tình trạng các cuộc gọi và tin nhắn SMS.

 Android Runtime

Hình 1.7 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).
1.1.2.5 Linux Kernel
Android sử dụng nhân Linux 2.6 làm nhân cho các dịch vụ hệ thống như
bảo mật, quản lý bộ nhớ, quản lý tiến trình (xử lý tiến trình, đa luồng), ngăn xếp
mạng và trình điều khiển thiết bị (giao tiếp USB, giao tiếp hồng ngoại, không đây,
v.v…). Nhân Linux này cũng có vai trò như một lớp trừu tượng giữa phần cứng và
phần mềm.

Hình 1.8 Linux kernel
 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 khiển hoạt động của camera, nhận luồng dữ liệu từ

camera về.
 Bluetooth Driver : Điều khiển thiết bị phát và thu sóng Bluetooth.
17


 USB 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í 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.

 Chu kỳ ứng dụng android
 Chu kỳ sống thành phần
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc
bắt đầu khởi tạo và đến thời điểm kết thúc. Giữa đó, đôi lúc chúng có thể là active
hoặc inactive, hoặc là trong trường hợp activies nó có thể visible hoặc invisible.

Hình 1.9 Chu kỳ sống thành phần.
Các trạng thái của chu kỳ sống

18


Hình 1.10 Chu kỳ sống của Activity
Một Activity chủ yếu có 3 chu kỳ chính sau:
 Active hoặc running: Khi Activity là được chạy trên màn hình. Activity
này tập trung vào những thao tác của người dùng trên ứng dụng.
 Paused: Activity là được tạm dừng (paused) khi mất focus nhưng người
dùng vẫn trông thấy.
 Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác. Nó vẫn còn trạng
thái và thông tin thành viên trong nó.


 Chu kỳ sống của ứng dụng
Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành phần
đều có một chu trình sống riêng. Và ứng dụng chỉ được gọi là kết thúc khi tất cả
các thành phần trong ứng dụng kết thúc. Activity là một thành phần cho phép
người dùng giao tiếp với ứng dụng. Tuy nhiên, khi tất cả các Activity kết thúc và
người dùng không còn giao tiếp được với ứng dụng nữa nhưng không có nghĩa là
ứng dụng đã kết thúc. Bởi vì ngoài Activity là thành phần có khả năng tương tác
người dùng thì còn có các thành phần không có khả năng tương tác với người dùng
như là Service, Broadcast receiver.
1.1.3.3 Thời gian sống của ứng dụng
Bảy phương thức chuyển tiếp định nghĩa trong chu kỳ sống của một
Activity. Thời gian sống của một Activity diễn ra giữa lần đầu tiên gọi onCreate()
đến trạng thái cuối cùng gọi onDestroy().
1.1.3.4. Thời gian hiển thị của Activity
Visible lifetime của một activity diễn ra giữa lần gọi một onStart() cho đến
khi gọi onStop(). Trong suốt khoảng thời gian này người dùng có thể thấy activity
trên màn hình, có nghĩa là nó không bị foreground hoặc đang tương tác với người
dùng.
 1.2 Các thành phần giao diện trong android

19


 1.2.1

View

Trong một ứng dụng Android, giao diện người dùng được xây dựng từ các
đối tượng View và ViewGroup. Có nhiều kiểu View và ViewGroup. Mỗi một kiểu

là một hậu duệ của class View và tất cả các kiểu đó được gọi là các Widget.

 1.2.2

ViewGroup

ViewGroup thực ra chính là View hay nói đúng hơn thì ViewGroup chính
là các widget Layout được dùng để bố trí các đối tượng khác trong một screen.

20


 1.2.3

LinearLayout

LinearLayout được dùng để bố trí các thành phần giao diện theo chiều
ngang hoặc chiều dọc nhưng trên một line duy nhất mà không có xuống dòng.
LinearLayout làm cho các thành phần trong nó không bị phụ thuộc vào kích
thước của màn hình.

Hình 1.11 Bố trí các widget sử dụng LinearLayout

 FrameLayout
FrameLayout được dùng để bố trí các đối tượng theo kiểu giống như là các
Layer trong Photoshop. Những đối tượng nào thuộc Layer bên dưới thì sẽ bị che
khuất bởi các đối tượng thuộc Layer nằm trên. FrameLayer thường được sử dụng
khi muốn tạo ra các đối tượng có khung hình bên ngoài chẳng hạn như contact
image button.


 AbsoluteLayout
Layout này được sử dụng để bố trí các widget vào một vị trí bất kì trong
layout dựa vào 2 thuộc tính toạ độ x, y. Tuy nhiên, kiểu layout này rất ít khi được
dùng bởi vì toạ độ của các đối tượng luôn cố định và sẽ không tự điều chỉnh được
tỷ lệ khoảng cách giữa các đối tượng.
21


 1.2.6 RetaliveLayout
Layout này cho phép bố trí các widget theo một trục đối xứng ngang hoặc
dọc. Để đặt được đúng vị trí thì các widget cần được xác định một mối ràng buộc
nào đó với các widget khác.

Hình 1.12 Bố trí trong RelativeLayout
1.2.7 TableLayout
Layout này được sử dụng khi cần thiết kế một table chứa dữ liệu hoặc cần
bố trí các widget theo các row và column. Chẳng hạn như, giao diện của một chiếc
máy tính đơn giản hoặc một danh sách dữ liệu.

 1.2.8 ImageView
Được dùng để thể hiện một hình ảnh. Nó cũng giống như ImageButton, chỉ
22


khác là không có hình dáng của một cái button.

 1.2.9 ListView
Được sử dụng để thể hiện một danh sách các thông tin theo từng cell. Mỗi
cell thông thường được load lên từ một file XML đã được cố định trên đó số lượng
thông tin và loại thông tin cần được thể hiện.

Để thể hiện được một list thông tin lên một screen thì cần phải có 3 yếu tố chính:
 Data Source: Data Source có thể là một ArrayList, HashMap hoặc bất
kỳ một cấu trúc dữ liệu kiểu danh sách nào.
 Adapter: Adapter là một class trung gian giúp ánh xạ dữ liệu trong Data
Source vào đúng vị trí hiển thị trong ListView. Chẳng hạn, trong Data Source có
một trường name và trong ListView cũng có một TextView để thể hiện trường
name này. Tuy nhiên, ListView sẽ không thể hiển thị dữ liệu trong Data Source lên được
nếu như Adapter không gán dữ liệu vào cho đối tượng hiển thị.
 ListView là đối tượng để hiển thị các thông tin trong Data Source ra
một cách trực quan và người dùng có thể thao tác trực tiếp trên đó.

23


Hình 1.13 Minh hoạ cho một ListView

 1.2.10 TextView
TextView ngoài tác dụng là để hiển thị văn bản thì nó còn cho phép định
dạng nội dung bằng thẻ html.

 1.2.11 EditText
Trong Android đối tượng EditText được sử dụng như một TextField hoặc
một TextBox.
Các thuộc tính cần chú ý sử dụng EditText đó là:
 android:inputType = “…” sử dụng để xác định phương thức nhập cho
24


EditText. Chẳng hạn như khi bạn muốn một ô để nhập password hay một ô để
nhập Email thì thuộc tính này sẽ làm điều đó.

 android:singleLine = “true” EditText của bạn sẽ trở thành một
TextField, ngược lại sẽ là TextBox.
 1.3 Activity và Intent

 1.3.1 Activity
Activity là một thành chính của một ứng dụng Android, được dùng để hiển
thị một màn hình và nắm bắt các hoạt động xảy ra trên màn hình đó. Khi làm việc
với Activity cần nắm bắt được một số kiến thức cơ bản như sau:
 Tính liên lạc giữa 2 activity
Khi chuyển sang một Activity khác ta có thể gửi kèm dữ liệu trong intend
đó như sau:
intend.putExtra(“key1”, “value1”);
intend.putExtra(“key2”, 23);
Bên phía Activity được khởi động hay được chuyển đến, có thể lấy dữ liệu
được gửi như sau:
getIntend().getExtra().getString(“key1”);
getIntend().getExtra().getInt(“key2”);

 Task
Android là một hệ điều hành đa tiến trình. Khi lập trình trên nền tảng
Android thì tiến trình là một vấn đề cần phải được chú ý nhiều nhất. Mặc dù
Android hỗ trợ đa tiến trình nhưng trên một thiết bị di động với cấu hình thấp mà
chúng ta quá lạm dụng tiến trình thì sẽ rất tốn bộ xử lý điều này cũng đồng nghĩa
với việc bạn đang biến ứng dụng của bạn trở thành một thứ phần mềm tiêu thụ
điện năng.

 1.3.2 Intent
 Khái niệm Intend:

25



×