Thiết kế, xây dựng App mở Camera và chụp ảnh trên hệ điều hành Android 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.
Trang 1TRƯỜ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:
Giáo viên hướng dẫn:
Tuyên Quang, tháng 08 năm 2022
Trang 2MỤ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
Trang 33 CSS Viết tắt của cụm từ Cascading Style Sheets là một ngôn ngữ
đượ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ữ
4 XML Viết tắt của Extensible Markup Language là ngôn ngữ đánh
dấu mở rộng
5 JSON Viết tắt của JavaScript Object Notation-là một tiêu chuẩn mở
để trao đổi dữ liệu trên web
8 GPS định vị toàn cầu do Mỹ phát triển và vận hànhViết tắt của cụm từ “Global Positioning System”- là hệ thống
9 3G nghệ truyền thông thế hệ thứ baViết tắt của third-generation technology) - là công
10 OHA Viết tắt của Open Handset Allianc – là Liên minh thiết bị cầm tay mở
11 CDMA Code Division Multiple Access nghĩa là Đa truy nhập (đa người dùng) phân chia theo mã
12 CPU Viết tắt của chữ Central Processing Unit - là bộ xử lý trung tâm
13 RSS Viết tắt của Really Simple Syndication - là đồng bộ hóa đơn giản.
Viết tắt Android Virtual Device - là một thiết bị cấu hình Viết tắt Random Access Memory - là một loại bộ nhớ
Trang 4CHƯƠ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áytí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ênnề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ôngtin 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ổitiếng như IPhone 5S xài hệ điều hành iOS của hãng Apple, Samsung Galaxy S4xài hệ điều hành Android của hãng Samsung, Nokia Lumia 930 xài hệ điều hànhWindows Phone của Microsoft,… Và để tăng số lượng người sử dụngsmartphone, download ứng dụng từ AppStore thì các hãng thiết bị di động nổitiế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ậptrình trên thiết bị di động (TBDĐ) ra đời để các nhà lập trình viên tạo ra đượcnhiề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ậptrì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ủalậ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ọingười trên thế giới qua số lượng người download và sử dụng ứng dụng củamì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ụngtrê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
Trang 5nền tảng (native app) Mặc dù có nhiều phương pháp để phát triển một ứng dụngcho di động nhưng chúng đều có một điểm chung đó là chạy trên mã gốc củamộ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ạytrê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ứcchuyê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ềntả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 đượcquá 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ả khimộ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à ápdụ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à tinhgọ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ềuphương pháp khác nhau như Scrum, Kanban, XP…và các lập trình viên cầnchọ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í đánhgiá về dự án Các bộ công cụ được cung cấp để có thể phát triển theo hướngagile 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ácphươ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ậptrì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à địnhhình xu hướng cho thị trường Tại Việt Nam, các lập trình viên không chỉ thamkhảo xu hướng chung của thế giới, mà còn đào sâu tìm hiểu người dùng trongnước
Trang 6Việt Nam hiện đang là một vùng đất màu mỡ với dân số trẻ và tốc độ pháttriển công nghệ nhanh, do vậy rất có tiềm năng phát triển đối với ngành ứngdụ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áttriể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áctố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 baogồ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ìnhviê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ấthiện quá nhiều Ứng dụng Việt hoàn toàn đủ sức vươn ra thế giới Số lượngsmartphone 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ềuchuyê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 trongngành lập trình ứng dụng di động cao hơn hẳn nhu cầu chung của ngành côngnghệ thông tin Không chỉ các công ty phần mềm Việt Nam mà công ty nướcngoà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àinước Rất nhiều công ty ứng dụng di động đang mọc lên, trong số đó rất nhiềudoanh 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ủamì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ơinà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 ramộ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ộtngà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 typhầ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ácphần mềm, các ứng dụng, xây dựng website, games cho thị trường Hiện nay,
Trang 7phá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àngtì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 tysả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ớicá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 ítchuyên gia Công nghệ thông tin trong chúng ta đang nỗ lực cho ra đời và ngàymộ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 tycung 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ảiphá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ựcmớ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áttriển mạnh mẽ của Công nghệ thông tin tại Việt Nam, chúng ta đang ngày cànglà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 tycung 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ủaInternet 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 tronglĩ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ênnhâ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
Trang 8- 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 PlayStore, 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, ứngdụng về văn bản, nghe nhạc, chụp ảnh đang trở thành một trong những ứngdụ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ênnền tảng hệ điều hành Android, cho phép người ta chụp và chỉnh sửa nhữnghiệ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 ảnhcho đ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
Trang 9hiểu và cố gắng tạo nên được ứng dụng Camera ở mức cơ bản và đơn giản, rồisau này phát triển dần lên Đề tài “ Xây dựng ứng dụng Camera và hình ảnhtrê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ếtLinux là một hệ điều hành mã nguồn mở cho phép người tùy ý quản lý và tạonên những ứng dụng trên nó Android là hệ điều hành mở mã nguồn chính duynhấ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 đó đượcGoogle mua lại) và gần đây nó trở thành một trong những phần mềm đứng đầucủa liên minh OHA (Open Handset Alliance - với khoảng 78 thành viên baogồ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 độngkhá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áttriể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 trungvà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-creamsandwich Android còn hỗ trợ một kho ứng dụng Android Market, với hơn294.730 ứng dụng tính tới tháng 5/2011
Trang 101.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ếntrì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ểnthị, v.v Ngoài ra, nhân Linux xử lý tất cả các vấn đề về Mạng và một loạtcác trình điều khiển thiết bị giao tiếp với phần cứng ngoại vi
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
Trang 11Binder (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 đượcthự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ộtkho 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ácthư 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àycung cấp một thành phần quan trọng được gọi là Dalvik Virtual Machine - mộtloạ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 chophép tất cả các ứng dụng Android chạy trong tiến trình riêng của nó AndroidRuntime 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 chocá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ườidù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
Trang 12Location 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áotin nhắn, email )
Resource Manager: Quản lý tài nguyên tĩnh của các ứng dụng bao gồmhì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ácchươ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ườidù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ùngmột thời điểm có thể có nhiều chương trình được chạy, tuy nhiên mỗi chươngtrình chỉ có một thực thể riêng được chạy (instance) Điều này giúp hạn chế tàinguyê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 ứngdụng đó có một hạn chế đó là nó không được phép sử dụng quá 5-10% côngsuấ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ênAndroid được thiết kế để quản lý bộ nhớ (RAM) để giảm tối đa tiêu thụ điệnnă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ử
Trang 13dụ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ênnà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ồinó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áchkhô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 đượcmộ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ôngcầ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ấunà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ốimạ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ềuhà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, Windowphone để 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
Trang 14đó là nó được phân phối tự do, với kho ứng dụng Android Market với hơn380.000 ứng dụng trong khi IOS chữa tới hơn 500.000 ứng dụng và ít ứngdụ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ạytrên tablet Android đem lại hình ảnh tốt hơn các ứng dụng iPhone chạy trêniPad 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 quaquá trình phê duyệt trước khi hoạt động trên các thiết bị chạy bằng IOS hayWindows phone Đề tài các ứng dụng chưa được phê duyệt, ngườidù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ớnnhất với Google Maps Navigation, tích hợp Voice Command hoàn toàn miễnphí Android được phát triển bởi Google nên dịch vụ tìm kiếm của nó gắn liềnvớ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ànhì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ạibản phim khác như Swype Slide it, Swiftkey, hoặc Sopen Hơn nữa, khi kếtnối với máy tính, Android sẽ kết nối như một ổ đĩa USB Flash và cho phépbạ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ớnnhư: 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ằmphục vụ cho việc lưu trữ các ứng dụng ở gói android database.sqlite Packageandroid.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:
Trang 15ImageJ là một chương trình xử lý hình ảnh Java phạm vi công cộng lấycả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ấtnhiều plug-in tổ chức thành một cấu trúc menu mạch lạc Fiji so với ImageJnhư Ubuntu so với Linux
* Common Imaging:
Apache hình ảnh, trước đây được biết đến như Apache Sanselan là mộtthư 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íchnhanh 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ặcchuyể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àusắc hình ảnh, áp dụng hiệu ứng đặc biệt khác nhau, hoặc vẽ văn bản đường, đagiá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ếtmột cách độc lập và được thiết kế để giải quyết nhiều những thiếu sót củaphầ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:
Trang 16OpenCV đượ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à Javagiao diện và hỗ trợ Windows, Linux, Mac OS, iOS và Android OpenCV đượcthiế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ụngthời gian thực viết trongtối ưu hóa C / C++, thư viện có thể tận dụng xử lý đalõ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 chongô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 APIliê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, tuynhiê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ểnAndroid 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ớ
Trang 17Đ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ụngSAX như là môi trường Java mà không cần tới những thay đổi đặc biệt cầnthiế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.
Trang 18Chọ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.
Trang 20N 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
Trang 21- Chọn Download android studio
- Chọn lựa chọn như hình