Tải bản đầy đủ (.docx) (43 trang)

Báo cáo lập trình trên thiết bị di động

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 (1.32 MB, 43 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC TÂN TRÀOKHOA KHOA HỌC CƠ BẢN</b>

<b>BỘ MƠN TIN HỌC</b>

<b>BÀI TẬP LỚN </b>

<b>Mơn học: Lập trình trên thiết bị di động </b>

<b>Đề tài: Thiết kế, xây dựng App mở Camera và chụp ảnh trên hệđiều hành Android</b>

Nhóm thực hiện:

Giáo viên hướng dẫn:

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

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b><small>CHƯƠNG II. THIẾT KẾ, XÂY DỰNG APP MỞ CAMERA VÀ...14</small></b>

<b><small>CHỤP ẢNH TRÊN HỆ ĐIỀU HÀNH ANDROID...14</small></b>

<b><small>2.1. Cài đặt mơi trường lập trình Android...14</small></b>

<b><small>2.2. Thiết kế giao diện App mở camera và chụp ảnh trên hệ điều hành Android...31</small></b>

<b><small>2.3. Xây dựng các chức năng...33</small></b>

<b><small>CHƯƠNG III. DEMO APP MỞ CAMERA VÀ CHỤP ẢNH...36</small></b>

<b><small>TRÊN HỆ ĐIỀU HÀNH ANDROID...36</small></b>

<b><small>3.1. Chạy chức năng mở Camera...36</small></b>

<b><small>3.2. Chạy chức năng chụp, xem trước...37</small></b>

<b><small>3.3. Chạy chức năng lưu ảnh...37</small></b>

<b><small>CHƯƠNG IV. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN...38</small></b>

<b><small>4.1. Kết luận...38</small></b>

<b><small>4.2. Hướng phát triển...38</small></b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

3 CSS <sup> Viết tắt của cụm từ Cascading Style Sheets là một ngôn ngữ </sup> đượ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 <sub>định vị toàn cầu do Mỹ phát triển và vận hành</sub><sup>Viết tắt của cụm từ “Global Positioning System”- là hệ thống </sup>

9 3G <sub>nghệ truyền thông thế hệ thứ ba</sub><sup>Viết tắt của third-generation technology) - là công </sup>

10 OHA <sup> Viết tắt của Open Handset Allianc – là Liên minh thiết bị </sup><sub>cầm tay mở</sub>

11 CDMA <sup> Code Division Multiple Access nghĩa là Đa truy nhập (đa </sup><sub>người dùng) phân chia theo mã</sub>

12 CPU <sup> Viết tắt của chữ Central Processing Unit - là bộ xử lý trung </sup><sub>tâm</sub>

13 RSS <sup> Viết tắt của Really Simple Syndication - là đồng bộ hóa đơn </sup><sub>giản.</sub>

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ớ

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>CHƯƠNG I. MỞ ĐẦU1.1. Tính cấp thiết</b>

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

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

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 ln 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.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

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, ni 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 ngồ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à ngồ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 chun 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,

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

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 hồn tồ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 chun gia Cơng nghệ thơng tin trong chúng ta đang nỗ lực cho ra đời và ngày một hồ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

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="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 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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

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.

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

<i><b>1.2.1. Khái niệm lập trình Android</b></i>

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.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<i><b>1.2.2. Kiến trúc cơ bản của hệ điều hành Android</b></i>

Kiến trúc hệ điều hành Android được chia làm 4 phần như hình dưới:

<b>* Linux kernel:</b>

Ở 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... Ngồ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 q trình thu và phát sóng wifi.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

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.

<b>* Libraries:</b>

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).

<b>* Application Framework:</b>

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.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

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 đó.

<b>* Applications:</b>

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 q 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 ln 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ử

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

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.

<i><b>1.2.3. So sánh hệ điều hành Android với các hệ điều hành khác</b></i>

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 ln đứ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

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

đó 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 hồn tồ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, ngồ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. Ngồ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.

<i><b>1.2.4. Thư viện mã nguồn mở về camera và hình ảnh</b></i>

<b>* SQLite:</b>

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.

<b>* ImageJ:</b>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

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.

<b>* Fiji:</b>

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.

<b>* Common Imaging:</b>

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.

<b>* Image Magick:</b>

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.

<b>* Endrov:</b>

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.

<b> * LeadTools: </b>

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.

<b>* OpenCV:</b>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

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.

<i><b>1.2.5. Các lớp giao diện XML trong Android</b></i>

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.

<b>* Rss:</b>

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.

<b>* Sax:</b>

Trong mơi trường Java có thể thường xun 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ớ.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="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ụ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.

<b>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</b>

<b>2.1. Cài đặt mơi trường lập trình Android</b>

Để có bắt đầu lập trình ứng dụng Android, cần cài đặt 3 ứng dụng sau:

<i><b>2.1.1. Java JDK</b></i>

<b>Bước 1: Truy cập trang download JDK và chọn JDK download.</b>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<i>Chọn JDK download</i>

<b>Bước 2: Chọn phiên bản JDK phù hợp với hệ điều hành sử dụng </b>

<i>Chọn phiên bản JDK phù hợp với hệ điều hành sử dụng (Windows)</i>

<b>Bước 3: Bạn tick vào I reviewed and accept the Oracle TechnologyNetwork License Agreement for Oracle Java SE rồi nhấn Download.</b>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<i>Nhấn chọn Next</i>

<b>Bước 6: Tiếp theo bạn có thể lựa chọn nơi lưu thư mục, nếu khôngsẽ mặc định lưu ở ổ đĩa C. Sau đó bạn nhấn Next để tiếp tục</b>

<i>Tiếp tục Nhấn Next</i>

<b>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.</b>

<i><b>2.1.2. Android Studio</b></i>

* Download Android Studio

- Truy cập trang

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

- Chọn Download android studio

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

</div>

×