You are on page 1of 43

TRƯỜNG ĐẠI HỌC TÂN TRÀO

KHOA KHOA HỌC CƠ BẢN


BỘ MÔN TIN HỌC

BÀI TẬP LỚN


Môn học: Lập trình trên thiết bị di động
Đề tài: Thiết kế, xây dựng App mở Camera và chụp ảnh trên hệ
điều hành Android

Nhóm thực hiện: - Quan Thị Chanh


- Đào Thị Hạ
- Lê Tuấn Lực
- Nguyễn Thị Huệ
- Phạm Thị Hồng Hải
- Ma Thị Thương

Giáo viên hướng dẫn: Lê Văn Hùng

Tuyên Quang, tháng 08 năm 2022


MỤC LỤC
CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT....................................................................................................
CHƯƠNG I. MỞ ĐẦU.......................................................................................................................1
1.1. Tính cấp thiết...........................................................................................................................1
1.2. Một số kiến thức về lập trình Android..................................................................................5
CHƯƠNG II. THIẾT KẾ, XÂY DỰNG APP MỞ CAMERA VÀ..............................................14
CHỤP ẢNH TRÊN HỆ ĐIỀU HÀNH ANDROID........................................................................14
2.1. Cài đặt môi trường lập trình Android.................................................................................14
2.2. Thiết kế giao diện App mở camera và chụp ảnh trên hệ điều hành Android.................31
2.3. Xây dựng các chức năng.......................................................................................................33
CHƯƠNG III. DEMO APP MỞ CAMERA VÀ CHỤP ẢNH.....................................................36
TRÊN HỆ ĐIỀU HÀNH ANDROID..............................................................................................36
3.1. Chạy chức năng mở Camera................................................................................................36
3.2. Chạy chức năng chụp, xem trước........................................................................................37
3.3. Chạy chức năng lưu ảnh.......................................................................................................37
CHƯƠNG IV. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.............................................................38
4.1. Kết luận..................................................................................................................................38
4.2. Hướng phát triển...................................................................................................................38
CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT

TỪ VIẾT
STT Ý NGHĨA
TẮT

1 TBDĐ Thiết bị di động


Viết tắt của cụm từ iPhone Operating System - là một hệ điều
2 iOS
hành điện thoại di động
Viết tắt của cụm từ Cascading Style Sheets là một ngôn ngữ
3 CSS được sử dụng để tìm và định dạng lại các phần tử được tạo ra
bởi các ngôn ngữ ...
Viết tắt của Extensible Markup Language là ngôn ngữ đánh
4 XML
dấu mở rộng
Viết tắt của JavaScript Object Notation-là một tiêu chuẩn mở
5 JSON
để trao đổi dữ liệu trên web
6 CSDL Cơ sở dữ liệu
Viết tắt của cụm từ “Global Positioning System”- là hệ thống
8 GPS
định vị toàn cầu do Mỹ phát triển và vận hành
Viết tắt của third-generation technology) - là công
9 3G
nghệ truyền thông thế hệ thứ ba
Viết tắt của Open Handset Allianc – là Liên minh thiết bị
10 OHA
cầm tay mở
Code Division Multiple Access nghĩa là Đa truy nhập (đa
11 CDMA
người dùng) phân chia theo mã
Viết tắt của chữ Central Processing Unit - là bộ xử lý trung
12 CPU
tâm
Viết tắt của Really Simple Syndication - là đồng bộ hóa đơn
13 RSS
giản.
14 AVD Viết tắt Android Virtual Device - là một thiết bị cấu hình

15 RAM Viết tắt Random Access Memory - là một loại bộ nhớ


CHƯƠNG I. MỞ ĐẦU
1.1. Tính cấp thiết
Công nghệ thông tin là một ngành sử dụng hệ thống các thiết bị và máy
tính, bao gồm phần cứng, phần mềm, để cung cấp giải pháp xử lý thông tin trên
nền công nghệ cho các cá nhân, tổ chức có yêu cầu.
Ngày nay, với sự bùng nổ dân số, cùng với sự phát triển công nghệ thông
tin như vũ bão, máy tính hay laptop dần được con người thu nhỏ lại nhưng vẫn
đảm bảo có đầy đủ các chức năng như một máy tính cá nhân. Vì vậy, các dòng
điện thoại smartphone lần lượt ra đời, có thể kể đến một số thiết bị di động nổi
tiếng như IPhone 5S xài hệ điều hành iOS của hãng Apple, Samsung Galaxy S4
xài hệ điều hành Android của hãng Samsung, Nokia Lumia 930 xài hệ điều hành
Windows Phone của Microsoft,…. Và để tăng số lượng người sử dụng
smartphone, download ứng dụng từ AppStore thì các hãng thiết bị di động nổi
tiếng trên vô Công nghệ thông tin cùng khuyến khích các nhà lập trình viên lên
ý tưởng và làm ra một ứng dụng dựa trên ý tưởng của mình. Từ đó, môn học lập
trình trên thiết bị di động (TBDĐ) ra đời để các nhà lập trình viên tạo ra được
nhiều ứng dụng đa dạng đáp ứng được nhu cầu của nhiều tầng lớp người sử
dụng.
Các đặc điểm của lập trình di động: Dễ tiếp cận, dễ tìm hiểu và dễ học; giúp lập
trình viên tạo ra ứng dụng cho người sử dụng; giúp hiện thực hóa ý tưởng của
lập trình viên; giúp lập trình viên tạo ra ứng dụng là cầu nối giao tiếp với mọi
người trên thế giới qua số lượng người download và sử dụng ứng dụng của
mình.
Có rất nhiều cách cho các lập trình viên có thể phát triển các ứng dụng
trên di động, từ việc thiết kế các website tối ưu cho di động (web app), phát triển
ứng dụng lại dựa trên HTML (hybrid app) cho đến viết các ứng dụng gốc cho
nền tảng (native app). Mặc dù có nhiều phương pháp để phát triển một ứng dụng
cho di động nhưng chúng đều có một điểm chung đó là chạy trên mã gốc của
một nền tảng nhất định. Do đó, khi một tổ chức muốn phát triển ứng dụng chạy
trên một nền tảng nào đó, họ sẽ thường tuyển dụng các ứng viên có kiến thức
chuyên sâu về nền tảng được yêu cầu, hiểu rõ các lớp, các thành phần của nền
tảng dù cho ứng dụng có được phát triển theo kỹ thuật nào đi chăng nữa. Nói về
quy trình phát triển phần mềm, thuật ngữ này không hẳn chỉ dành cho các quản
lý dự án như nhiều người vẫn nghĩ. Một lập trình viên cũng cần phải hiểu được
quá trình phát triển của một phần mềm như thế nào, theo dõi các tác vụ, tiến độ
ra sao, làm việc với các lập trình viên khác như thế nào thì hiệu quả… Kể cả khi
một lập trình viên "chiến" một mình một dự án thì cũng cần hiểu rõ về vấn đề
này. Agile là một process giúp cho việc phát triển phần mềm được nhanh gọn và
linh hoạt hơn do đó, nếu như các developer nắm bắt được process này và áp
dụng một cách hiệu quả, quá trình phát triển phần mềm sẽ được rút ngắn và tinh
gọn đi rất nhiều. Quy trình phát triển phần mềm nhanh gọn (agile) có rất nhiều
phương pháp khác nhau như Scrum, Kanban, XP…và các lập trình viên cần
chọn cho dự án của mình một phương pháp phù hợp dựa trên các tiêu chí đánh
giá về dự án. Các bộ công cụ được cung cấp để có thể phát triển theo hướng
agile một cách hiệu quả cũng rất nhiều, có thể kể đến như Pivotal hay Trello,
giúp cho việc phát triển phần mềm được rõ ràng, nhanh gọn hơn so với các
phương pháp truyền thống.
Cơ hội phát triển của lập trình di động Rất nhiều công ty ứng dụng di
động đang mọc lên, trong số đó rất nhiều doanh nghiệp là do các lập trình viên
tự thành lập để phục vụ những dự án của mình.Việt Nam - miền đất hứa cho lập
trình viên ứng dụng di động Các lập trình viên nói chung luôn dựa vào nhu cầu
sử dụng của khách hàng để phát triển những ứng dụng di động phù hợp và định
hình xu hướng cho thị trường. Tại Việt Nam, các lập trình viên không chỉ tham
khảo xu hướng chung của thế giới, mà còn đào sâu tìm hiểu người dùng trong
nước.
Việt Nam hiện đang là một vùng đất màu mỡ với dân số trẻ và tốc độ phát
triển công nghệ nhanh, do vậy rất có tiềm năng phát triển đối với ngành ứng
dụng di động. Người dùng Việt rất “nhạy” quảng cáo Đi kèm với tốc độ phát
triển của ngành di động, hoạt động quảng cáo trên thiết bị này cũng rầm rộ
không kém. Thị trường quảng cáo trên điện thoại di động đang được khai thác
tối đa, mở ra một hướng đi hấp dẫn cho digital marketing (tiếp thị số).
Tuy nhiên không dễ để truyền tải thông điệp quảng cáo một cách tế nhị và
hiệu quả. Người Việt ngày càng “nhạy” hơn với quảng cáo. “Nhạy” ở đây bao
gồm cả nhận biết và nhạy cảm. Họ hiểu quảng cáo là nguồn thu của lập trình
viên, nuôi sống ứng dụng nhưng họ sẽ cảm thấy bị làm phiền khi quảng cáo xuất
hiện quá nhiều. Ứng dụng Việt hoàn toàn đủ sức vươn ra thế giới. Số lượng
smartphone gia tăng chóng mặt tại Việt Nam đã tạo nên một thị trường béo bở
cho ngành lập trình ứng dụng. Sau thành công bất ngờ của Flappy Bird, nhiều
chuyên gia cho rằng, thị trường này sẽ ngày càng sôi động và sẽ có nhiều cú
hích lớn, đẩy quy mô ngành sang tầm thế giới. Hiện nay nhu cầu nhân lực trong
ngành lập trình ứng dụng di động cao hơn hẳn nhu cầu chung của ngành công
nghệ thông tin. Không chỉ các công ty phần mềm Việt Nam mà công ty nước
ngoài tại Việt Nam cũng tuyển dụng lập trình viên cho các dự án trong và ngoài
nước. Rất nhiều công ty ứng dụng di động đang mọc lên, trong số đó rất nhiều
doanh nghiệp là do các lập trình viên tự thành lập để phục vụ những dự án của
mình.
Cơ hội nghề nghiệp về lập trình di động đây là câu trả lời là bất kỳ nơi
nào bạn muốn, trong các công ty, xí nghiệp, trường học, bệnh viện, các tổ chức,
hiệp hội... Thậm chí, bạn có thể là một chuyên gia Công nghệ thông tin tự do,
hình mẫu ngày càng được ưa thích, làm việc độc lập, không phụ thuộc vào bất
kỳ cơ quan, tổ chức nào. Bạn cũng có thể cùng một số đồng nghiệp khác lập ra
một nhóm hay một công ty của riêng mình. Tóm lại, công nghệ thông tin là một
ngành nghề phát huy tối đa khả năng sáng tạo và tự chủ của bạn. Các công ty
phần mềm: Các công ty này nghiên cứu, xây dựng, phát triển và cung cấp các
phần mềm, các ứng dụng, xây dựng website, games... cho thị trường. Hiện nay,
phát triển phần mềm là lĩnh vực Công nghệ thông tin mạnh nhất ở Việt Nam và
thu hút lực lượng nhân lực tham gia đông đảo nhất. Vì vậy, bạn có thể dễ dàng
tìm kiếm và phát triển khả năng của mình trong lĩnh vực phần mềm. Các công ty
sản xuất, lắp ráp, sửa chữa trang thiết bị phần cứng: Tuy chưa đạt được ưu thế
như những công ty phần mềm, nhưng sẽ là sai lầm nếu bạn hoàn toàn thờ ơ với
các công ty sản xuất, lắp ráp và sửa chữa thiết bị phần cứng. Nó thực sự hứa hẹn
cả một nền công nghiệp hùng mạnh trong tương lai. Ngay bây giờ, không ít
chuyên gia Công nghệ thông tin trong chúng ta đang nỗ lực cho ra đời và ngày
một hoàn thiện những chiếc máy tính mang thương hiệu Việt Nam. Các công ty
cung cấp giải pháp tích hợp Các công ty này chuyên thiết kế, triển khai các giải
pháp tích hợp về phần cứng và phần mềm. Đây tất nhiên cũng sẽ là một lĩnh vực
mới hứa hẹn đầy thách thức và cả thành công trong tương lai. Cùng với sự phát
triển mạnh mẽ của Công nghệ thông tin tại Việt Nam, chúng ta đang ngày càng
làm chủ tốt hơn lĩnh vực này. Vì vậy có rất nhiều cơ sở để bạn ngay từ bây giờ
bắt tay vào tìm hiểu về các công ty cung cấp giải pháp tích hợp. Các công ty
cung cấp giải pháp về mạng và an ninh mạng: Với sự phát triển “thần tốc” của
Internet tại Việt Nam và cả những vấn đề về an ninh mạng như virus, hacker...
lĩnh vực này đầy tiềm năng phát triển và đang mở ra những cơ hội lớn cho sự
nghiệp của bạn. Những phẩm chất và kỹ năng cần thiết của một người làm trong
lĩnh vực công nghệ thông tin:
- Thông minh và sáng tạo.
- Khả năng phân tích, suy luận, xâu chuỗi các sự kiện để xác định nguyên
nhân.
- Kiên trì và nhẫn nại, có khả năng làm việc dưới áp lực lớn.
- Tính chính xác trong công việc.
- Ham học hỏi, trau dồi kiến thức.
- Có vốn ngoại ngữ chuyên ngành.
- Yêu thích khoa học và các bộ môn trí tuệ.
- Và quan trọng nhất làm niềm đam mê công nghệ thông tin.
- Xác định mục tiêu và mục đích của lập trình di động
- Xây dựng các ứng dụng, hiểu và đăng ký các tài khoản để xây dựng các
ứng dụng.
- Các quy trình triển khai ứng dụng cho người dùng trên Google Play
Store, Apple Store hay WP Store.
- Tùy chỉnh các điều khiển trên giao diện ứng dụng.
- Xây dựng các ứng dụng đa chạm (Gesture Recognition).
- Thao tác với các loại dữ liệu như XML, JSON, thao tác CSDL cục bộ
SQLite, SharedPreference,...
- Tương tác với Webservice, tương tác với Google Cloud.
- Xây dựng ứng dụng liên quan đến bản đồ (GPS, Internet Connection -
Wifi, 3G).
- Viết ứng dụng đa nhiệm (AsyncTask, Thread, Handler), viết ứng dụng
đa phương tiện (Camera, Media, Gallery).
- Gửi thông báo trên thiết bị, thông báo từ máy chủ Server.
- Cách thức sử dụng các thư viện mở trên Internet, viết ứng dụng tích hợp
điện thoại, dịch vụ tin nhắn.
- Tìm hiểu các bộ cảm biến trên Android, iOS, WP.
Ngày nay, khi công nghệ ngày một phát triển, nhu cầu của người dùng
về công nghệ cũng ngày một nhiều. Sự ra đời của nhiều ứng dụng đã dần đáp
ứng được những nhu cầu đó, ứng dụng cho điện thoại là một trong số đó.
Những ứng dụng đó gần như đáp ứng ngay tức thì nhu cầu người dùng, ứng
dụng về văn bản, nghe nhạc, chụp ảnh... đang trở thành một trong những ứng
dụng quan trọng nhất trên smartphone. Bên cạnh việc các nhà sản xuất đầu tư
nhiều vào công nghệ camera, các ứng dụng chụp ảnh cũng cho phép người có
được những bức hình đẹp và độc đảo. Trong đó phải kể tới ứng dụng chụp ảnh
và tạo hiệu đẹp rất được ưa chuộng hiện nay đó là ứng dụng Camera 360 trên
nền tảng hệ điều hành Android, cho phép người ta chụp và chỉnh sửa những
hiệu ứng cho bức ảnh để tạo nên một tấm hình đẹp. Cũng từ ứng dụng này,
nhóm em này lên ý tưởng là sẽ xây dựng một ứng dụng về Camera và hình ảnh
cho điện thoại trên hệ điều hành Android. Tất nhiên, nhóm sẽ bước vào tìm
hiểu và cố gắng tạo nên được ứng dụng Camera ở mức cơ bản và đơn giản, rồi
sau này phát triển dần lên. Đề tài “ Xây dựng ứng dụng Camera và hình ảnh
trên Android” sẽ là một đề tài thú vị và có tính tương thích tốt.

1.2. Một số kiến thức về lập trình Android


1.2.1. Khái niệm lập trình Android
Android là hệ điều hành được phát triển dành cho máy điện thoại di
động. được xây dựng trên nền tảng của hệ điều hành Linux. Ta cũng biết
Linux là một hệ điều hành mã nguồn mở cho phép người tùy ý quản lý và tạo
nên những ứng dụng trên nó. Android là hệ điều hành mở mã nguồn chính duy
nhất với 12 triệu dòng mã bao gồm 3 triệu dòng mã XML, 2.8 triệu dòng mã
C, 2.1 triệu dòng Java và 75 triệu dòng C++.
Ban đầu nền tảng này được phát triển bởi Android Inc (sau đó được
Google mua lại) và gần đây nó trở thành một trong những phần mềm đứng đầu
của liên minh OHA (Open Handset Alliance - với khoảng 78 thành viên bao
gồm cả nhà sản xuất, nhà phát triển ứng dụng... cho thiết bị di động mà dẫn
đầu là Google).
Android được phát triển nhằm cạnh tranh với các hệ điều hành di động
khác nhu IOS (Apple), BlackBerry OS, Windows Mobile (Microsoft),
Symbian (Nokia), Samsung (Bada), WebOS (Palm)... Tinh đến thời điểm này,
Android đã trở thành nền tảng di động tăng trưởng nhanh nhất thế giới.
Lúc đầu Android đơn thuần chỉ là một phần mềm trên điện thoại di
động, sau khi được mua lại bởi Google nhóm kĩ sư do Rubin đứng đầu đã phát
triển nó dựa trên hạt nhân Linux và giới thiệu cho các nhà sản xuất thiết bị
cầm tay về một hệ thống mềm dẻo có khả năng nâng cấp mở rộng cao.
Cho tới nay, đã có rất nhiều phiên bản Android ra đời, đa số tập trung
vào việc và lỗi và cập nhật tính năng mới. Hiện tại Android có một số
Cupcake, Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice-cream
sandwich. Android còn hỗ trợ một kho ứng dụng Android Market, với hơn
294.730 ứng dụng tính tới tháng 5/2011.
1.2.2. Kiến trúc cơ bản của hệ điều hành Android
Kiến trúc hệ điều hành Android được chia làm 4 phần như hình dưới:
* Linux kernel:
Ở dưới cùng của các tầng trên là Linux - Linux 2.6 với khoảng 115 bản
và lỗi. Tầng này cung cấp chức năng hệ thống cơ bản như quản lý các tiến
trình, quản lý bộ nhớ, quản lý thiết bị như máy ảnh, bàn phím, màn hình hiển
thị, v.v... Ngoài ra, nhân Linux xử lý tất cả các vấn đề về Mạng và một loạt
các trình điều khiển thiết bị giao tiếp với phần cứng ngoại vi.
Cụ thể như sau:
Display Driver: Điều khiển 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.
Camera Driver: Điều khiển hoạt động của camera, nhận các tín hiệu mà
camera trả về.
Bluetooth Driver: Điều khiển thiết bị thu và phát sóng Bluetooth.
USB Driver: Quản lý hoạt động cổng giao tiếp USB.
Keypad Driver: Điều khiển bản phim.
Wifi Driver: Điều khiển quá trình thu và phát sóng wifi.
Binder (IPC) Driver: Quản lý việc kết nối và liên lạc với các mạng vô
tuyến như CDMA,GSM 3G... đảm bảo những chức năng truyền thông được
thực hiện. Power Management: Giám sát việc tiêu thụ năng lượng.
* Libraries:
Tầng này là một tập hợp các thư viện bao gồm trình duyệt web mã
nguồn mở sử dụng WebKit engine, thư viện libc, cơ sở dữ liệu SQLite là một
kho lưu trữ hữu ích cho việc lưu trữ và chia sẻ dữ liệu của ứng dụng, có các
thư viện để chơi ghi lại âm thanh và video, các thư viện SSL chịu trách nhiệm
về bảo mật Internet, v.v...
Android Runtime: Đây là phần thứ ba của kiến trúc Android. Phần này
cung cấp một thành phần quan trọng được gọi là Dalvik Virtual Machine - một
loại máy ảo Java được thiết kế đặc biệt và tối ưu hóa cho Android.
Dalvik VM sử dụng các tính năng cốt lõi của Linus như quản lý bộ nhớ
và đa luồng, những tính năng này đều có trong ngôn ngữ Java . Dalvik VN cho
phép tất cả các ứng dụng Android chạy trong tiến trình riêng của nó. Android
Runtime cũng cung cấp một tập các thư viện lõi cho phép các nhà phát triển
ứng dụng Android viết các ứng dụng Android sử dụng ngôn ngữ lập trình Java
(J2SE).
* Application Framework:
Tầng Application Framework cung cấp nhiều dịch vụ cấp cao hơn cho
các ứng dụng trong ở dạng các class trong Java. Các nhà phát triển ứng dụng
được phép sử dụng các dịch vụ này trong các ứng dụng của họ. (Ví dụ: dịch
vụ kết nối Internet, dịch vụ SMS,...).
Các thành phần trong tầng này như:
Activity Manager: Quản lý chu trình sống của một ứng dụng cũng như
công cụ điều khiển các Activity.
Windows Manager: Quản lý việc xây dựng và hiển thị 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.
Telephone Manager: Cung cấp công cụ để thực hiện 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 định vị vị trí của điện thoại thông qua hệ
thống định vị toàn cầu GPS và Google Maps.
Notifications Manager: Quản lý việc hiển thị thông báo (như thông báo
tin nhắn, email...).
Resource Manager: Quản lý tài nguyên tĩnh của các ứng dụng bao gồm
hình ảnh, âm thanh, layout, string.
View System: Tập hợp nhiều các View có thể kế thừa lẫn nhau dùng để
thiết kế giao diện ứng dụng như GridView, TableView.....
Content Providers: Cho phép các ứng dụng có thể truy xuất dữ liệu từ
các ứng dụng khác hoặc chia sẻ dữ liệu giữa các ứng dụng đó.
* Applications:
Các ứng dụng khi viết sẽ được cài đặt ở tầng này. Ví dụ: Angry Bird,
Facebook, Viber, v.v...Đây là tầng ứng dụng giao tiếp với người 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 được gọi là Phone,
contacts, Browser, SMS, Calendar, Email-client, Map...v..v. các chương này có
đặc điểm là được viết bằng ngôn ngữ Java có phần mở rộng là apk. Khi các
chương trình này chạy một máy ảo Virtual Machine sẽ được dựng lên để phục
vụ nó. Nó có thể là một Active Program- chương trình có giao diện với người
dùng hoặc là một Background- chương trình chạy trên nền hay dịch vụ.
Android là một hệ điều hành đa nhiệm điều này có nghĩa là trong cùng
một thời điểm có thể có nhiều chương trình được chạy, tuy nhiên mỗi chương
trình chỉ có một thực thể riêng được chạy (instance). Điều này giúp hạn chế tài
nguyên và giúp máy chạy tốt hơn. Hơn nữa Android là một hệ điều hành mỡ,
đồng nghĩa nó cho phép ứng dụng của bên thứ 3 được phép chạy nền. Các ứng
dụng đó có một hạn chế đó là nó không được phép sử dụng quá 5-10% công
suất CPU, điều này để nhằm tránh tính độc quyền về CPU.
Quản lý bộ nhớ: Vì các thiết bị Android chủ yếu chạy bằng pin, nên
Android được thiết kế để quản lý bộ nhớ (RAM) để giảm tối đa tiêu thụ điện
năng, trái với hệ điều hành máy tính để bàn luôn cho rằng máy tính sẽ có
nguồn điện không giới hạn. Khi một ứng dụng Android không còn được sử
dụng, hệ thống sẽ tự động ngưng nó trong bộ nhớ, trong khi ứng dụng về mặt
kỹ thuật vẫn "mở", những ứng dụng này sẽ không tiêu thụ bất cứ tài nguyên
nào (như năng lượng pin hay năng lượng xử lý) và nằm đó cho đến khi nó
được cần đến. Cách làm như vậy có lợi kép là vừa làm tăng khả năng phản hồi
nói chung của thiết bị Android, vì ứng dụng không nhất phải đông rồi mở lại từ
đầu, vừa đảm bảo các ứng dụng nền không làm tiêu hao năng lượng một cách
không cần thiết.
Android quản lý các ứng dụng trong bộ nhớ một cách tự động: khi bộ
nhớ
thấp, hệ thống sẽ bắt đầu diệt ứng dụng và tiến trình không hoạt động được
một thời gian sắp theo thời điểm cuối mà chúng được sử dụng (tức là cũ nhất
sẽ bị tắt trước).
Tiến trình này được thiết kế ẩn đi với người dùng, để người dùng không
cần phải quản lý bộ nhớ hoặc tự tay tắt các ứng dụng Tuy nhiên, sự che giấu
này của hệ thống quản lý bộ nhớ Android đã dẫn đến sự thịnh hành của các
ứng dụng tắt chương trình của bên thứ ba trên cửa hàng Google Play; những
ứng dụng kiểu như vậy được cho là có hại nhiều hơn có lợi.
1.2.3. So sánh hệ điều hành Android với các hệ điều hành khác
Về cơ bản thì chúng đều là những hệ điều hành dành cho các thiết bị
cầm
tay, nhỏ gọn. Khả năng hoạt động liên tục để đảm bảo liên lạc, đảm bảo kết nối
mạng... và điểm yếu của chúng là năng lượng ít. Điểm khác biệt của hệ điều
hành Android là nó được phát triển trên nhân của Linux, là một hệ điều hành
mã nguồn mở và miễn phí trong khi các hệ điều hành khác đều là nguồn đóng
và tổn phí. Việc phát triển trên nhân Linux giúp Android dễ dàng chạy trên các
hệ máy khác nhau, tính tương thích với phần cứng cao hơn.
Các trình ứng dụng trên Android được viết bằng Java. Ta có thể lấy đơn
cử 3 hệ điều hành cho điện thoại di động hiện nay là Android, IOS, Window
phone để thấy rõ sự khác biệt hơn. Xét về tổng số thiết bị thì Android luôn
đứng đầu danh sách với hàng trăm thiết bị có sử dụng hệ điều hành này, lý do
đó là nó được phân phối tự do, với kho ứng dụng Android Market với hơn
380.000 ứng dụng trong khi IOS chữa tới hơn 500.000 ứng dụng và ít ứng
dụng rác hơn Android Market. Về ứng dụng tối ưu hóa cho máy tính bảng thì
Android vẫn thua so với IOS, nhưng các ứng dụng smarkphone Android chạy
trên tablet Android đem lại hình ảnh tốt hơn các ứng dụng iPhone chạy trên
iPad của IOS. Do Android được xây dựng trên nền nhân của Linux, nên nó dễ
dàng cho phép các ứng dụng chưa phê duyệt của bên thứ 3, trong khi Apple và
Microsoft đều áp dụng chiến lược “valler garden” theo đó các ứng phải trải qua
quá trình phê duyệt trước khi hoạt động trên các thiết bị chạy bằng IOS hay
Windows phone. Đề tài các ứng dụng chưa được phê duyệt, người
dùng phải tiến hành Jailbreak, một vài ứng dụng trên Android cũng phải “root
” thiết bị trước khi cài đặt. Xét về tính điều hướng thì Android có lợi thế lớn
nhất với Google Maps Navigation, tích hợp Voice Command hoàn toàn miễn
phí. Android được phát triển bởi Google nên dịch vụ tìm kiếm của nó gắn liền
với Google Search, ngoài ra
Android còn là nền tảng duy nhất cho phép tùy chỉnh bàn phím ảo trên màn
hình. Ngoài bản phim mặc định người dùng có thể lựa chọn cài đặt các loại
bản phim khác như Swype. Slide it, Swiftkey, hoặc Sopen. Hơn nữa, khi kết
nối với máy tính, Android sẽ kết nối như một ổ đĩa USB Flash và cho phép
bạn xem tất cả các file tập tin của mình. Xét cho cùng thì Android vẫn là hệ
điều hành mang lại nhiều lợi thế cho người dùng hơn.
1.2.4. Thư viện mã nguồn mở về camera và hình ảnh
* SQLite:
Một cơ sở dữ liệu nhỏ gọn được sử dụng bởi rất nhiều các công ty lớn
như: Adobe, Google, Microsoft, Mozila, Sun...thưởng cho các ứng dụng về
phía Client (khách hàng). Thư viện SQLite được tích hợp vào Android nhằm
phục vụ cho việc lưu trữ các ứng dụng ở gói android database.sqlite. Package
android.database.sqlite bao gồm các lớp cơ sở dữ liệu quản lý ứng dụng sử
dụng cơ sở dữ liệu riêng. Những ứng dụng sử dụng cơ sở dữ liệu riêng.
* ImageJ:
ImageJ là một chương trình xử lý hình ảnh Java phạm vi công cộng lấy
cảm hứng từ hình ảnh NTH cho máy Macintosh. Nó có thể hiển thị, chỉnh sửa,
phân tích, xử lý, lưu và in 8-bit, 16-bit và 32-bit hình ảnh.
* Fiji:
Fiji là một gói phần mềm xử lý hình ảnh. Nó có thể được mô tả như là
một bản phân phối của ImageJ (và ImageJ2) cùng với Java, Java3D và rất
nhiều plug-in tổ chức thành một cấu trúc menu mạch lạc. Fiji so với ImageJ
như Ubuntu so với Linux.
* Common Imaging:
Apache hình ảnh, trước đây được biết đến như Apache Sanselan là một
thư viện mà đọc và viết một loạt các định dạng hình ảnh, bao gồm cả phân tích
nhanh chóng của thông tin hình ảnh (kích thước, màu sắc không gian) và dữ
liệu meta.
* Image Magick:
ImageMagick là một bộ phần mềm để tạo, chỉnh sửa, soạn thư, hoặc
chuyển đổi hình ảnh bitmap. Nó có thể đọc và ghi hình ảnh trong một loạt các
định dạng (hơn 100), bao gồm DPX EXR GIF, JPEG, JPEG-2000, PDF, PNG,
Postscript, SVG, và TIFF. Sử dụng ImageMagick để thay đổi kích cỡ, lật,
gương, xoay, làm méo mó, biến dạng và chuyển đổi hình ảnh điều chỉnh màu
sắc hình ảnh, áp dụng hiệu ứng đặc biệt khác nhau, hoặc vẽ văn bản đường, đa
giác, hình elip và đường cong Bezier.
* Endrov:
Endrov là một chương trình phân tích hình ảnh đa năng. Nó được viết
một cách độc lập và được thiết kế để giải quyết nhiều những thiếu sót của
phần mềm miễn phí và nhiều phần mềm thương mại.
* LeadTools:
LeadTools cung cấp hơn 200 chức năng xử lý hình ảnh trong một số
loại tài liệu bao gồm dọn dẹp, nâng cao hình ảnh y tế, chuyển đổi màu sắc và
chính, giảm tiếng ồn, phát hiện cạnh và nhiều hơn nữa.
* OpenCV:
OpenCV được phát hành theo giấy phép BSD và do đó miễn phí của nó
cho cả hai sử dụng học thuật và thương mại. Nó có C ++, C, Python và Java
giao diện và hỗ trợ Windows, Linux, Mac OS, iOS và Android. OpenCV được
thiết kế để tính toán hiệu quả và với một tập trung mạnh vào các ứng dụng
thời gian thực. viết trongtối ưu hóa C / C++, thư viện có thể tận dụng xử lý đa
lõi.
1.2.5. Các lớp giao diện XML trong Android
Một trong những ưu điểm lớn nhất của Android đó là nó thúc đẩy cho
ngôn ngữ Java. Android SDK hỗ trợ rất tốt cho JRE, hơn nữa Java đang và đã
được hỗ trợ để làm việc với XML theo nhiều cách khác nhau, hầu hết các API
liên quan tới XML của Java đều được hỗ trợ đầy đủ trên Android. Ví dụ:
Simple API của Java cho XML (SAX), và Document Object Model hiện đều
có sẵn trên Android. Nhiều năm qua cả hai API này đều là công nghệ của Java.
Sản phẩm Streaming API mới đây cho XMI hiện chưa có trong Android, tuy
nhiên Android lại cung cấp một thư viện tương đương về mặt chức năng. Ta sẽ
đi tìm hiểu hơn trong phần này.
* Rss:
RSS là một định dạng tập tin trong XVI dùng trong việc chia sẽ tin tức
web được dùng bởi nhiều Website và Weblog. Gồm các chuẩn sau:
Rich site summary (RSS 0.91).
RDF Site Summary (RSS 0.91 & 1.0).
Really Simple Syndication (RSS 2.0).
Ứng dụng Android sẽ lấy điểm tin RSS từ trang chủ của nhà phát triển
Android phổ biến Androidster và phân tách nó thành một danh sách các
đối tượng Java đơn giản mà bạn có thể sử dụng để quay lại Android ListView.
* Sax:
Trong môi trường Java có thể thường xuyên sử dụng SAX API khi
muốn có một trình phân tích nhanh và hạn chế tối đa việc sử dụng bộ nhớ.
Điều này rất có lợi cho các thiết bị chạy bằng Android, bạn có thể sử dụng
SAX như là môi trường Java mà không cần tới những thay đổi đặc biệt cần
thiết để chạy trên Android.
CHƯƠNG II. THIẾT KẾ, XÂY DỰNG APP MỞ CAMERA VÀ
CHỤP ẢNH TRÊN HỆ ĐIỀU HÀNH ANDROID

2.1. Cài đặt môi trường lập trình Android


Để có bắt đầu lập trình ứng dụng Android, cần cài đặt 3 ứng dụng sau:
2.1.1. Java JDK
Bước 1: Truy cập trang download JDK và chọn JDK download.
Chọn JDK download
Bước 2: Chọn phiên bản JDK phù hợp với hệ điều hành sử dụng

Chọn phiên bản JDK phù hợp với hệ điều hành sử dụng (Windows)
Bước 3: Bạn tick vào I reviewed and accept the Oracle Technology
Network License Agreement for Oracle Java SE rồi nhấn Download.
Nhấn chọn download
Bước 4: Sau khi tải xuống hoàn tất. Mở tệp vừa mới tải xuống rồi nhấn
chọn Run.

Nhấn vào Run


Bước 5: Nhấn chọn Next để bắt đầu cài đặt.
N
hấn chọn Next
Bước 6: Tiếp theo bạn có thể lựa chọn nơi lưu thư mục, nếu không
sẽ mặc định lưu ở ổ đĩa C. Sau đó bạn nhấn Next để tiếp tục

Tiếp tục Nhấn Next


Bước 7: Lúc này chỉ cần nhấn vào Close là đã hoàn thành việc cài
đặt JDK.
2.1.2. Android Studio
* Download Android Studio
- Truy cập trang https://developer.android.com
- Chọn Download android studio

- Chọn lựa chọn như hình


Kết quả download được:

* Các cài đặt đòi hỏi


Đảm bảo rằng máy tính của bạn đã cài đặt Java phiên bản 7 trở lên. Ở đây
tôi đã cài đặt sẵn Java phiên bản 8.0
* Cài đặt Android Studio

Lựa chọn tất cả các tùy chọn (options).


The Android SDK (software development kit) là một tập hợp các công cụ được
sử dụng để phát triển ứng dụng cho Android. Android SDK bao gồm các thư
viện đòi hỏi:
- Bộ dò lỗi (Debugger)
- Thiết bị giả lập (emulator)
- Các tài liệu liên quan cho Android API.
- Các đoạn code mẫu.
- Các hướng dẫn cho hệ điều hành Android.
Android Virtual Device (AVD) là một thiết bị cấu hình, nó chạy với bộ giả
lập Android (Android emulator). Nó làm việc với bộ giả lập để cung cấp một
môi trường thiết bị ảo cụ thể, để cài đặt và chạy ứng dụng Android.
Chọn thư mục cài đặt:
- Android Studio Installation Location: D:\ DevPrograms\ Android\ Android
Studio
- Android SDK Install Location: D:\DevPrograms\Android\sdk
Android Studio đã được cài đặt xong
* Chạy Android Studio
Trong lần chạy đầu tiên, Android Studio hỏi nhập khẩu các sét đặt từ
phiên bản Android Studio mà bạn có thể đã cài đặt trước đó hay không. Bạn có
thể chọn NO.
Lựa chọn một Theme
Setup Wizard mở ra một cửa sổ để chọn các thành phần để cập nhập, hoặc
cài đặt thêm: Performance (Intel® HAXM):
- Cho phép phần cứng hỗ trợ ảo hoá (hardware-assisted virtualization
engine (hypervisor)) để tăng tốc độ chạy ứng dụng Android trên máy tính phát
triển ứng dụng Android Virtual Device.
- Thiết bị Android ảo được cấu hình sẵn và tối ưu hóa để bạn thử nghiệm ứng
dụng trên trình giả lập (Emulator). (Được đề nghị) Lựa chọn thư mục SDK đã cài đặt
ở bước trước. Các thành phần SDK mới sẽ được cập nhập vào thư mục này.

Nếu máy tính được trang bị phần cứng tốt, bộ giả lập Android (Android
Emulator) có thể chạy được trong chế độ tăng tốc (Accelerated performance mode).
Có thể cấu hình chỉ định số lượng RAM tối đa dành cho bộ quản lý tăng tốc phần
cứng (Intel Hardware Accelerated Manager - HAXM). Khuyến nghị là 2GB.
2.1.3. Máy ảo
* Tạo máy ảo Android với AVD Manager:
Kết nối thiết bị Android thật để chạy ứng dụng (nhớ trong thiết bị thật cần
vào Setting chuyển sang chế độ Developer sang ON, tùy vào phiên bản Android
đang chạy trên thiết bị mà kích hoạt chế độ này có những bước khác nhau, dùng
thiết bị nào thì tra thông tin kích hoạt chế độ này trên thiết bị đó. Ví dụ có thể
arch: enable developer option on samsung s3.
Ở đây, có thể tạo các máy ảo Android, với sự mềm dẻo hơn trong việc
chạy thử ứng dụng (bạn chọn được kích thước màn hình - thông số phần cứng,
chọn được phiên bản Android).
Trình quản lý máy ảo đi kèm Android Studio có tên là Android Virtual
Device Manager, mở công cụ này nên bằng cách truy cập vào menu: tools >
Android > AVD Manager

Để tạo thiết bị mới bấm vào Create Virtual Device ...


Trong cửa sổ Select hardware này, chọn phần cứng muốn tạo máy ảo, sau khi
chọn bấm Next.
Ở đây chọn bản Android nào muốn cài vào máy ảo, có 3 tab để lựa
chọn: Recommended - danh sách khuyến nghị, x86 image - Android chạy dựa
trên kiến trúc chip x86, Other - các bản Android khác. Chọn lấy một phiên bản
Android (nếu bản chọn có chữ Download thì bấm vào để tải về). Tiếp theo
bấm Next, đặt một tên cho thiết bị đễ dễ quản lý.
Như vậy đã có một máy ảo, có thể chạy thử ngay bằng cách bấm vào
ký hiệu play trong trình AVD Manager.
* Chạy thử code của Project trên máy ảo:
Trong Android Studio có thể nhấn Shift + F10 hoặc vào menu: run > run
app .... Một cửa sổ hiện ra, có danh sách thiết bị đang kết nối và các máy ảo đã
tạo. Muốn code chạy trên thiết bị nào, thì chọn thiết bị đó vào OK.
Máy ảo sẽ được mở ra (nếu chưa mở) và ứng dụng đang code sẽ được
nạp và chạy trên máy ảo này.
2.2. Thiết kế giao diện App mở camera và chụp ảnh trên hệ điều
hành Android
* Giao diện App mở camera và chụp ảnh trên hệ điều hành

- Thiết kế giao diện (dưới dạng Design):


- Giao diện dưới dạng khung ảnh và nút camera:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/androi
d"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context="com.example.admin.mayanh.MainActivity">

<ImageView
android:id="@+id/imageViewhinh"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="82dp"
android:layout_marginStart="82dp"
android:background="@mipmap/ic_launcher_round"

app:srcCompat="@android:drawable/screen_background_light
"
tools:layout_editor_absoluteX="92dp"
tools:layout_editor_absoluteY="16dp" />
<Button
android:id="@+id/buttonCamera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="135dp"
android:layout_marginTop="250dp"
android:text="Camera"
tools:layout_editor_absoluteX="147dp"
tools:layout_editor_absoluteY="245dp" />

</RelativeLayout>
2.3. Xây dựng các chức năng
* Nút ImageView:

Code:
package com.example.admin.mayanh;

import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.ContactsContract;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ActionMode;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
ImageView imgHinh;
Button btnCamera;
int REQUEST_CODE = 123;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgHinh = (ImageView)
findViewById(R.id.imageViewhinh);

* Nút Camera:
Code Camera:
btnCamera.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
Intent intent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int
resultCode, Intent data) {
if(requestCode == REQUEST_CODE && resultCode ==
RESULT_OK){
Bitmap bitmap = (Bitmap)
data.getExtras().get("data");
imgHinh.setImageBitmap(bitmap);
}
super.onActivityResult(requestCode, resultCode,
data);
}
CHƯƠNG III. DEMO APP MỞ CAMERA VÀ CHỤP ẢNH
TRÊN HỆ ĐIỀU HÀNH ANDROID
3.1. Chạy chức năng mở Camera
Mở nút camera để di chuyển đến chức năng chụp ảnh
3.2. Chạy chức năng chụp, xem trước
Nhấn vào nút tròn giữa để chụp ảnh, và xem trước những bức ảnh đã chụp

3.3. Chạy chức năng lưu ảnh


Sau khi chụp ảnh xong, sử dụng dấu  để lưu hình ảnh đã chụp
CHƯƠNG IV. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
4.1. Kết luận
Ngày nay, việc chụp ảnh đã trở thành một phần không thể thiếu, đặc biệt
khi ngành thương mại điện tử ngày càng nở rộ hiện nay. Khách hàng không thể
chạm vào sản phẩm như trong cuộc sống thực, họ cần tới những bức ảnh hiển thị
sản phẩm rõ ràng và sắc nét nhất. Hình ảnh đẹp bao giờ cũng tạo ấn tượng tốt
cho thương hiệu của mình, giúp khách hàng vượt ra ranh giới của sự đắn đo giữa
việc xem tiếp hay tắt màn hình, nên mua hay không nên mua. Và như mọi người
đã biết, trước khi có mạng truyền thông xã hội, việc mọi người tự chụp ảnh ở
nhà cho người khác xem thực sự là một điều vô lý. Nhưng bây giờ, với
Facebook, Instagram và nhiều ứng dụng khác, ảnh “tự sướng” trở thành một sản
phẩm đại chúng để có thể đăng ảnh của chính mình. Mỗi chia sẻ như vậy sẽ
mang hình ảnh cá nhân về cuộc sống của bạn vào trực tuyến cùng mọi người.
Sau thời gian học tập bộ môn nhóm chúng em đã tìm hiểu, thực hiện đề
tài cũng như viết báo cáo, đã xây dựng được ứng dụng chụp hình trên nền tảng
hệ điều hành Android. Có thể chụp hình ảnh theo ý muốn. Với giao diện thân
thiện và dễ sử dụng. Với đồ án lần này, ngoài việc xây dựng một ứng dụng có
thể chụp ảnh, nhóm chúng em đã được rèn luyện kỹ năng viết code trên Android
Studio, biết thêm về các hàm liên quan đến chụp ảnh trong Android. Nâng cao
khả năng lập trình, tự học hỏi nghiên cứu tài liệu, kỹ năng làm báo cáo, cũng
như làm việc theo nhóm.
4.2. Hướng phát triển
Ứng dụng vẫn còn thiếu sót khá nhiều về mặt chức năng cũng như khả
năng tương tác với người dùng, do đó trong thời gian tới sẽ tiến hành cập nhập
bổ sung các tính năng như:
Tiến hành nâng cấp giao diện của ứng dụng đẹp mắt hơn
Thêm các chức năng chỉnh sửa ảnh, đảo ảnh, lọc mịn ảnh, làm đẹp (trang
điểm, chỉnh mặt,...),... Có thể chụp hình cùng Filter, cắt background.
Với các tính năng khá phổ biến trên hệ điều hành Android.Nhóm chúng
em mong rằng có thể phát triển nghiên cứu thêm nhiều App phục vụ cho cuộc
sống.

You might also like