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ừn
Trang 1 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 TS Nguyễn Văn Núi – 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 Thầy luôn luôn theo sát chỉ bảo và định hướng
để em hoàn thành đề tài một cách tốt nhất 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 Nguyễn Văn Núi 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
Trang 2LỜ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 “Xây dựng và phát triển ứng dụng thiết kế ảnh nghệ thuật kết hợp với sử dụng các câu danh ngôn 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 Văn Lục
Trang 3MỤ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 9
1.1 Tổng quan về hệ điều hành android 9
1.1.1 Lịch sử Android 10
1.1.2 Các phiên bản HĐH Android 11
1.1.3 Đặc điểm 14
1.1.4 Kiến trúc tổng quát của hệ điều hành Android 16
1.1.5 Chu kỳ ứng dụng android 20
1.2 Các thành phần giao diện trong android 21
1.2.1 View 21
1.2.2 ViewGroup 21
1.2.3 LinearLayout 22
1.2.4 FrameLayout 22
1.2.5 AbsoluteLayout 22
1.2.6 RetaliveLayout 22
1.2.7 TableLayout 23
1.2.8 ImageView 23
Trang 41.3 Activity & Intend 28
1.3.1 Activity 28
1.3.2 Intent 28
1.4 Bitmap trong Android 30
1.5 Màu sắc trong Android 31
1.6 Thao tác với điểm ảnh trong bitmap 32
1.7 Một số thuật toán xử lý ảnh trong android 33
1.7.1 Convolution matrix 33
1.7.2 Neon 35
1.7.3 Emboss 36
1.7.4 TV Screen 36
1.7.5 Sketch 37
1.7.6 Invert 37
1.7.7 Smoothing 37
1.7.8 Gaussian blue 37
1.7.9 Grayscale 38
1.7.10 Sharpen 38
1.7.11 Color lighten 39
CHƯƠNG 2: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG 40
2.1 Khảo sát thực tế 40
2.2 Đặc tả bài toán 41
2.3 Đặc tả chức năng 42
2.3.1 Chức năng load ảnh 42
2.3.2 Chức năng xử lý ảnh 42
2.3.3 Chức năng ghép danh ngôn hay, câu nói ý nghĩa vào ảnh 43
2.3.4 Xem ảnh nghệ thuật kết hợp danh ngôn hay, câu nói ý nghĩa từ server 44 2.4 Luồng sự kiện 44
2.4.1 Luồng sự kiện cho chức năng load ảnh 44
Trang 52.4.2 Luồng sự kiện chức năng edit 45
2.4.3 Luồng sự kiện chức năng styles 45
2.4.4 Luồng sự kiện chức năng text 45
2.4.5 Luồng sự kiện chức năng stickers 46
2.4.6 Luồng sự kiện cho các chức năng share, save, wallpaper 46
2.5 Các biểu đồ hệ thống 47
2.5.1 Biểu đồ use case 47
2.5.2 Biểu đồ trình tự 52
2.5.3 Biểu đồ hoạt động 53
2.5.4 Biểu đồ class 54
CHƯƠNG 3: DEMO ỨNG DỤNG 57
3.1 Một vài hình ảnh của ứng dụng 57
3.2 Danh sách các màn hình 61
KẾT LUẬN 63
TÀI LIỆU THAM KHẢO 64
Trang 6DANH MỤC HÌNH
Hình 1.1: Hệ điều hành Android 9
Hình 1.2: Logo các phiên bản hệ điều hành Android 11
Hình 1.3: Biểu tượng Robot Android 13
Hình 1.4: Kiến trúc tổng quát 16
Hình 1.5: Tầng ứng dụng 16
Hình 1.6: Application Framework 17
Hình 1.7: Libraries 17
Hình 1.8: Android Runtime 18
Hình 1.9: Linux kernel 19
Hình 1.10: Chu kỳ sống thành phần 20
Hình 1.11: Chu kỳ sống của Activity 20
Hình 1.12: Bố trí các widget sử dụng LinearLayout 22
Hình 1.13: Bố trí widget trong RetaliveLayout 23
Hình 1.14: Bố trí widget trong TableLayout 23
Hình 1.15: ImageView và ImageButton 24
Hình 1.16: Minh hoạ option menu 27
Hình 1.17: Truyền dữ liệu giữa 2 Activity 29
Hình 1.18: Các thuộc tính của Intend 29
Hình 1.19: Các Action đã được định nghĩa sẵn trong Intend 30
Hình 1.20: Công thức xử lý ảnh ma trận nhân chập 33
Hình 1.21 Công thức ma trận nhân chập 35
Hình 1.22 Mô tả ảnh neon 35
Hình 1.23 Mô tả ảnh Emboss 36
Hình 2.1: biểu đồ use case tổng quát 47
Hình 2.2: Biểu đồ use case edit 48
Hình 2.3: Biểu đồ use case Styles 49
Trang 7Hình 2.4: Biểu đồ uscase Stickers 50
Hình 2.5: Biểu đồ use case text 51
Hình 2.6: Biểu đồ trình tự chức năng load ảnh 52
Hình 2.7: Biểu đồ trình tự chức năng xử lý ảnh 52
Hình 2.8: Biểu đồ hoạt động cho chức năng load ảnh 53
Hình 2.9: Biểu đồ hoạt động cho chức năng xử lý ảnh 53
Hình 2.10: Biểu đồ class LoadImage 54
Hình 2.11: Biểu đồ class Xử lý ảnh 54
Hình 2.12: Biểu đồ class edit 55
Hình 2.13: Biểu đồ class Text 55
Hình 2.14 Biểu đồ class Sticker 56
Hình 2.15 Biểu đồ class Style 56
Hình 3.1 Màn hình chính của chương trình 57
Hình 3.2 Màn hình hiển thị status 57
Hình 3.3 Tạo hiệu làm mờ ảnh 58
Hình 3.4 Tạo hiệu ứng Sepia bằng blur 58
Hình 3.5 ghép câu nói ý nghĩa vào ảnh nghệ thuật 59
Hình 3.6 Tạo ảnh tâm trạng 59
Hình 3.7-8 xem ảnh nghệ thuật từ sever 60
Hình 3.9-10 Nhập văn bản và chọn màu chữ 60
Hình 3.11-12 Share và save ảnh 61
Trang 8 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, với nhiều chức năng thông minh Bên cạnh những chức năng quan trong 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 được nâng cấp để đá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 những hình ảnh thô và không làm hài lòng người sử dụng, họ cần một ứng dụng có thể biến những bức ảnh kém nổi bật trở nên lung linh và sắc nét hơn
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 và phát triển ứng dụng thiết kế ảnh nghệ thuật kết hợp với sử dụng các câu danh ngôn trên nền tảng android.”
Trang 10mà người sử dụng cần đến
Trang 11Đượ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 độ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
Trang 12Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay được gọi là Android Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị ràng buộc vào các nhà cung cấp mạng điện thoại di động Mục tiêu của thiết bị này là cho phép các nhà phát triển thực hiện các cuộc thí nghiệm trên một thiết bị thực có thể chạy hệ điều hành Android mà không phải ký một bản hợp đồng nào Vào khoảng cùng thời gian đó thì Google cũng cho phát hành một phiên vản vá lỗi 1.1 của hệ điều hành này.Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ soft-keyboard mà đòi hỏi các thiết bị phải sử dụng bàn phím vật lý Android cố định vấn đề này bằng cách phát hành SDK 1.5 vào tháng 4 năm 2009, cùng với một số tính năng khác Chẳng hạn như nâng cao khả năng ghi âm truyền thông, vật dụng,
và các live folder
Các phiên bản HĐH Android
Android đã trải qua một số các cấp nhật kể từ lần đầu phát hành Những cập nhật này nhìn chung có nhiệm vụ vá các lỗ hổng và thêm các tính năng mới vào hệ điều hành
Hình 1.2: Logo các phiên bản hệ điều hành Android
Trang 13Android những thế hệ đầu tiên 1.0 ( 9/2008) và 1.1 ( 2/2009) chưa có tên gọi chính thức Từ thế hệ tiếp theo, mỗi bản nâng cấp đều được đặt với những mã tên riêng dựa theo các món ăn hấp dẫn theo thứ tự bảng chữ cái từ “C-D-E-F-G-H-I” Hiện tại các phiên bản chính của Android bao gồm:
Android 1.5 (Cupcake): Ra mắt tháng 4/2009: Phiên bản này có một số
tính năng đáng chú ý như: khả năng ghi lại và xem video thông qua chế độ máy ghi hình, tải video lên YouTube và ảnh lên Picasa trực tiếp từ điện thoại, tích hợp bàn phím ảo với khả năng đoán trước văn bản, tự động kết nối với một thiết bị Bluetooth trong một khoảng cách nhấtđịnh, các widget và thư mục mới có thể cài đặt linh động trên màn hình chủ
Android 1.6 (Donut): Ra mắt tháng 9/2009: Phiên bản này giúp nâng cao
trải nghiệm trên kho ứng dụng Android Market, tích hợp giao diện tùy biến cho phép người dùng xóa nhiều ảnh cùng lúc, nâng cấp Voice Search, nâng cấp khả năng tìm kiếm bookmarks, history, contacts và web trên màn hình chủ, bước đầu
hỗ trợ màn hình độ phân giải WVGA
Android 2.0/2.1 (Eclair): Ra mắt tháng 10/2009: Phiên bản này có sự cải
thiện rõ rệt trong giao diện người dùng, tối ưu hóa tốc độ phần cứng, hỗ trợ nhiều kích cỡ và độ phân giải màn hình hơn, thay đổi giao diện duyệt web và hỗ trợ chuẩn HTML5, Exchange ActiveSync 2.5, nâng cấp Google Maps 3.1.2, camera zoom kĩ thuật số tích hợp đèn flash, nâng cấp bàn phím ảo và kết nối Bluetooth 2.1
Android 2.2 (Froyo): Ra mắt tháng 5/2010: Phiên bản này chú trọng nâng
cấp tốc độ xử lí, giới thiệu engine Chrome V8 JavaScript, hỗ trợ Adobe Flash10.1, thêm tính năng tạo điểm truy cập Wi-Fi Một tính năng đáng chú ý khác hỗ trợ
Trang 14nâng cấp đáng kể giao diện người dùng, cải thiện bàn phím ảo, thêm tính năng copy/paste, hỗ trợ công nghệ giao tiếp tầm sóng ngắn NFC, hỗ trợ chuẩn video WebM và nâng cao tính năng copy–paste Cùng với phiên bản Gingerbread, Google cũng ra mắt điện thoại đầu tiên của hãng sử dụng nền tảng này là Google Nexus S.
Android 3.2 (Honeycomb): Ra mắt tháng 2/2011: Đây là phiên bản hệ điều
hành dành riêng cho máy tính bảng tablet với giao diện mới tối ưu hóa cho tablet,
từ các thao tác đều phụ thuộc màn hình cảm ứng (như lướt web, duyệt mail ) Honeycomb hỗ trợ bộ xử lí đa nhân và xử lý đồ họa đồng thời hỗ trợ nhiều màn hình home khác nhau, cho phép người d ng dễ dàng t y biến giao diện nếu muốn
Android 4.0 (Ice-cream sandwich): Ra mắt tháng 10/2011, là sự kết hợp
giữa Gingerbread và Honeycomb và sẽ chạy trên tất cả các thiết bị như điện thoại, máy tính bảng, máy tính xách tay…
Android 4.1 (Jelly Bean): Ra mắt 9-7-2012: Máy tính bảng Nexus 7, sản
phẩm hợp tác giữa Google và Asus, là thiết bị dùng Jelly Bean đầu tiên ra mắt Android 4.1 nâng tầm hoạt động cho hệ điều hành của Google, trở thành hệ điều hành cho thiết bị di động hàng đầu hiện nay, đe dọa cả "ông lớn" Windows
Khả năng sắp xếp giao diện chủ và widget trong Jelly Bean rất tùy biến và linh hoạt Hệ thống hỗ trợ dịch vụ ví điện tử Google Wallet, đặc biệt trình duyệt web mặc định trong Android được thay thế bởi đại diện tên tuổi: Chrome, với khả năng đồng bộ dữ liệu theo tài khoản với bản Chrome trên máy tính
Trang 15Hình 1.3: Biểu tượng Robot Android
Jelly Bean giới thiệu Google Now, dịch vụ trực tuyến mới hiện chỉ dành cho Android, một phụ tá ảo đắc lực cho công việc sắp xếp lịch trình, tìm kiếm thông tin, xác định vị trí Rất đa năng và được xem như lời đáp trả của Google với "phụ tá ảo" Apple Siri trong iOS
Android 4.2 (vẫn là Jelly Bean): Ra mắt tháng 11-2012: Chỉ sau gần năm
tháng ra mắt Android 4.1, Google tiếp tục bồi thêm sức nặng cho Android với phiên bản 4.2 và vẫn mang tên mã Jelly Bean
Android 4.2 tiếp tục mang đến những cải tiến hấp dẫn cho ứng dụng chụp ảnh (Camera) như HDR, Photo Sphere, hiệu ứng ảnh, Google Now, đưa tính năng lướt chọn từ rất hay trong bàn phím ảo Chức năng "bom tấn" hỗ trợ nhiều tài khoản người dùng (multi-user profile) lần đầu tiên được áp dụng trong Android 4.2 nhưng chỉ có người dùng máy tính bảng thừa hưởng chức năng này
Trang 16chán” với 3 phiên bản khách nhau của Android Jelly Bean KitKat được coi là phiên bản Android “dễ tính” nhất từ trước đến nay khi nó được thiết kế cho tất cả các thiết bị có bộ nhớ RAM 512MB trở lên
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 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
So sánh với các hệ điều hành cùng loại khác:
Trang 17Bảng 1.1 So Sánh Các Hệ Điều Hành Điện Thoại Thông Minh
Android Google Android là nền tảng mở, cho
phép người dùng có thể tùy biến nền tảng theo ý thích, hơn nữa lại có một Liên minh thiết bị cầm tay mở hậu thuẫn, Google Android đang là đối thủ xứng tầm của iPhone của Apple
Google đang tích cực mở rộng cộng đồ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
Hệ điều hành phân mảnh, không thống nhất trên các thiết bị, giới hạn về độ 'mở' và nhiều
lỗ hổng bảo mật là những yếu điểm của Android OS
Windows
Phone
Có thư viện API khá giống với API trên Win32, các công cụ hỗ trợ lập trình đầy đủ với Visual Studio, điều này làm cho những người phát triển trên Win32 không mất công tìm hiểu lại các API và các công cụ lập trình
Sự có mặt của iPhone
và Android là hai trở ngại lớn với Windows Mobile Hai nền tảng này đang hoàn thiện và được người dùng rất ưa
Trang 18iOS Màn hình cảm ứng đa điểm: iPhone
sử dụng hoàn toàn bằng cảm ứng và không sử dụng các nút Với iPhone ta
có thể điều khiển trên màn hình kể cả việc trượt của các ngón tay Ta có thể phóng to ảnh bằng cách trượt hai ngón tay ra xa và thu nhỏ bằng cách ngược lại
Bộ cảm nhận gia tốc: Những phản
ứng nhanh chóng của bộ cảm nhận gia tốc thay đổi độ phân giải màn hình từ dọc sang ngang tự động khi ta đặt điện thoại nằm ngang Điều này làm sinh động thêm cho các trò chơi Âm thanh, hình ảnh hoàn hảo
Việc lập trình trên cho iPhone phải thực hiện trên hệ điều hành Mac,
do đó không phải ai cũng có thể lập trình cho iPhone Hơn thế, nếu muốn đưa chương trình ra máy thật người lập trình phải trả một khoản phí lập trình, điều này làm giảm tính cạnh tranh so với các đối thủ khác
1.1.4 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
Trang 20Hình 1.6: 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
Trang 21 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
com.google.android.maps: Bộ API mức cao cung cấp truy cập đến điều khiển bản đồ sẵn trong Android từ ứng dụng được xây dựng Bao gồm cả lớp MapView cũng như Overlay và MapController để tương tác với bản đồ bên trong ứng dụng
android.provider: Để tạo thuận lợi cho người phát triển truy cập đến các Content Provider tiêu chuẩn (như là dữ liệu danh bạ), gói cung cấp (Provider) bao gồm các lớp cho phép truy cập đến cơ sở dữ liệu chuẩn trong tất cả các bản phân phối Android
android.telephony: Các API điện đàm cung cấp khả năng tương tác trực 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.webkit: Gói WebKit cung cấp các API để làm việc với các nội dung Web-based bao gồm một lơp WebView để tạo ra giao diện web, nhúng trong ứng dụng và một trình quản lý cookie
1.1.4.4 Android Runtime
Trang 22Hình 1.8: 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.4.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
Trang 23 Bluetooth Driver : Điều khiển thiết bị phát và thu sóng Bluetooth.
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
Power Management : Giám sát việc tiêu thụ điện năng
M-system Driver : Quản lý việc đọc ghi… lên các thiết bị nhớ như thẻ SD, flash
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
Trang 24 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.10: Chu kỳ sống thành phần.
Các trạng thái của chu kỳ sống
Hình 1.11: 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
Trang 25nà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ó
Trang 261.1.5.2 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.5.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() Một Activity khởi tạo toàn bộ trạng thái toàn cục trong onCreate(), và giải phóng các tài nguyên đang tồn tại trong onDestroy()
1.1.5.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 Giữa 2 phương thức người dùng có thể duy trì tài nguyên để hiển thị activity đến người dùng
1.2 Các thành phần giao diện trong android
Trang 27ViewGroup 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 Có một số loại ViewGroup như sau
Trang 28tỷ lệ khoảng cách giữa các đối tượng
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 Các ràng buộc này là các ràng buộc trái, phải, trên, dưới so với một widget hoặc so với layout parent
Hình 1.13: Bố trí widget trong RetaliveLayout
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
Trang 29Hình 1.14: Bố trí widget trong TableLayout
Trang 30kỳ 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 đó
Trang 31 android:singleLine = “true” EditText của bạn sẽ trở thành một TextField, ngược lại sẽ là TextBox.
MenuOptions
Có 2 cách tạo một MenuOptions:
Tạo bằng code:
Trang 32Hình 1.16: Minh hoạ option menu
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:
Trang 33 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:
Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một Activity
Là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng như truyền các dữ liệu cần thiết tới một Activity khác Điều này cũng giống như việc di chuyển qua lại giữa các Forms trong lập trình Windows Form
Hình 1.17: Truyền dữ liệu giữa 2 Activity
Trang 34Hình 1.18: Các thuộc tính của Intend
Các Action được định nghĩa sẵn:
Dưới đây là những hằng String đã được định nghĩa sẵn trong lớp Intent Đi kèm với nó là các Activity hay Application được xây dựng sẵn sẽ được triệu gọi mỗi khi Intent tương ứng được gửi
Trang 35Hình 1.19: Các Action đã được định nghĩa sẵn trong Intend
1.4 Bitmap trong Android.
Lớp Bitmap là lớp thể hiện một bức ảnh trong hệ điều hành Android, chứa các thông tin và các phương thức cơ bản để có thể làm việc được với bức ảnh như đọc, ghi các điểm ảnh, lấy thông tin kích thước, … Được tạo thành từ sự sắp xếp các điểm ảnh, gọi là pixels, theo kiểu lát gạch hay ô lưới
Chất lượng ảnh Bitmap phụ thuộc vào độ phân giải của hình (đơn vị là ppi=pixels per inch), độ phân giải càng cao thì hình càng mịn và sắt nét nhưng sẽ nặng file và tốn tài nguyên máy Khi tăng giảm kích thước ảnh bitmap sẽ gây ra hiện tượng "bể" hình: các cạnh bị răng cưa và màu sắc bị phân mảng ô vuông
Đọc ảnh vào đối tượng Bitmap, cách đơn giản nhất là sử dụng lớp
Trang 363264 x 2448 pixel Nếu Bitmap sử dụng cấu hình ARGB_8888 sau khi được đọc vào bộ nhớ có thể chiếm đến 30MB (3264*2448*4 bytes) bộ nhớ trong.
Điều đó sẽ gây nên exception java.lang.OutofMemoryError: bitmap size exceeds VM budget
Một điều nữa là việc xử lý bitmap có kích thước lớn sẽ cần nhiều thời gian tính toán hơn bitmap có kích thước nhỏ Chính vì vậy ta cần một số thủ thuật để có thể làm việc với bitmap hiệu quả
1.5 Màu sắc trong Android
Trong hệ điều hành Android, lớp Color là lớp thể hiện một màu sắc, lớp này
có các thuộc tính và phương thức để làm việc với màu sắc Tuy vậy, màu sắc cũng được thể
hiện là một số nguyên 4 bytes, vậy có tổng cộng 2^32 ≈ 16.7 triệu màu Mỗi màu 4 bytes tương ứng với 4 kênh Alpha – Red – Green – Blue, mỗi kênh sẽ chiếm 1 byte
Để đọc giá trị của một kênh có thể dùng các toán tử thao tác với bit để cho tốc độ thực thi nhanh
1.6 Thao tác với điểm ảnh trong bitmap
Mỗi một điểm ảnh trên Bitmap là một số nguyên đại diện cho một màu mang giá trị của 4 kênh màu cơ bản Alpha, Red, Green, Blue Chúng ta sẽ đọc các điểm ảnh vào một mảng kiểu nguyên có kích thước bằng với số pixels của ảnh Các thuật toán xử lý ảnh sẽ xử lý trên mảng số nguyên đó sau đó lưu mảng kết quả trở lại Bitmap
Lớp Bitmap cung cấp hai phương thức:
Phương thức trên dùng để đọc toàn bộ điểm ảnh của một ảnh vào mảng số nguyên
Trang 37Phương thức trên dùng để đặt lại giá trị màu các điểm ảnh từ một mảng số nguyên là mảng giá trị sau khi xử lý.
Như vậy ta có thể viết một hàm xủ lý ảnh như sau với đầu vào là một Bitmap, đầu ra là một Bitmap khác đã qua xủ lý:
1.7 Một số thuật toán xử lý ảnh trong android
Trang 38Hình 1.20: Công thức xử lý ảnh ma trận nhân chập
Trang 39Công thức tính nhân chập:
Hình 1.21 Công thức ma trận nhân chập
1.7.2 Neon
Trang 40tô màu xanh lá của đèn neon cho nó còn lại nền là màu đen, như vậy ảnh thu được
sẽ có hiệu ứng đèn neon ở các biên của ảnh
Toán tử Sobel là 2 nhân chập có ma trận hệ số như sau:
Trong đó:
Hx dùng để phát hiện biên theo hướng ngang
Hy dùng để phát hiện biên theo hướng dọc