Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
1,11 MB
Nội dung
CHƯƠNG I : LÝ DO CHỌN ĐỀ TÀI. 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 smarkphone. 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 dá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 CHƯƠNG II :TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID. II.1 Giới thiệu về hệ điều hà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à1.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 dộ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 như IOS (Apple), BlackBerry OS, Windows Mobile (Microsoft), Symbian (Nokia), Samsung (Bada), WebOS (Palm) Tính đế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, Donut, Esclair, Froyo, Gingerbread, Honeycomd, 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. 2 II.2 Kiến trúc 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: Hình 1: Cấu trúc hệ điều hành Android II.2.1 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 phím. 3 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. II.2.2 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 II.2.3 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 Linux 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 VM 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). II.2.4 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 song 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. 4 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à GoogleMaps. 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 đó. Package Manager: II.2.5 Applications Bạn sẽ viết ứng dụng và các ứng dụng mà bạn viết đượ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, Calender, 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 5 II.2.6 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. 6 II.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 Adroid 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 Adroid chạy trên taplet 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 Adroid đượ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 va Microsoft đều áp dụng chiến lược “waller 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 phím mặc định người dùng có thể lựa chọn cài đặt các loại bàn phím khác như Swype, Slide it, Swift key, hoặc 8open. 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. 7 II.4 Thư viện mã nguồn mở về camera và hình ảnh. II.4.1 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, Mozzila, 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. II.4.2 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 NIH 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. Một số tính năng cơ bản của ImageJ được liệt kê dưới đây: Sr.No Features & Description 1 Runs Everywhere ImageJ is written in Java, which allows it to run on Linux, Mac OS X and Windows, in both 32-bit and 64-bit modes. 2 Open Source ImageJ and its Java source code are freely available and in the public domain. No license is required. 3 Toolkit Use ImageJ as a image processing toolkit (class library) to develop applets, servlets or applications. 4 Data Types 8-bit grayscale or indexed colour, 16-bit unsigned integer, 32-bit floating- point and RGB colour. 5 File Formats Open and save GIF, JPEG, BMP, PNG, PGM, FITS and ASCII. Open DICOM. Open TIFFs, GIFs, JPEGs, DICOMs and raw data using a URL. 6 Selections 8 Create rectangular, elliptical or irregular area selections. Create line and point selections. 7 Image Enhancement Supports smoothing, sharpening, edge detection, median filtering and thresholding on both 8-bit grayscale and RGB colour images. 8 Colour Processing Split a 32-bit colour image into RGB or HSV components. Merge 8-bit components into a colour image. II.4.3 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. Ngoài các tính năng cơ bản ImageJ, một số tính năng tiên tiến của Fiji được liệt kê dưới đây: Sr.No Features & Description 1 Registering 3D images This involves Elastic Alignment and Montage,Feature Extraction,Image Stabilizer e.t.c. 2 Segmenting images It offers more then 35 types of segmentation. 3 Useful keyboard short cuts Fuji has a lot of keyboard short cuts. 4 Scripting Allow scripting with Macros, in JavaScript, in JRuby, in Jython, in Clojure. in Beanshell. 5 Developing Plug-ins Use the Script Editor to start developing plug-ins and then run the plug- ins. 6 ImageJ Tricks 9 ImageJ is easy to use, but sometimes you wish for some function that is actually implemented, yet you do not know how to trigger. II.4.4 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, hồ sơ ICC, vv) và dữ liệu meta. Một số tính năng cơ bản của ImageJ được liệt kê dưới đây: r.No Features & Description 1 Java Apache Commons Imaging is written in 100% pure Java. It will run on any JVM, and any platform, without modification. 2 Image Formats It reads and writes a wide variety of image formats, and supports some variations and encodings missed by all or most other libraries. 3 MetaData support It supports reading and writing a variety of meta data in a structured way, including EXIF meta data. 4 Network Friendly It is network-friendly. Commons Imaging will only read the data it needs, and caches what is read so that it isn't too heavy on the network. 5 Easy to use It is designed to be very easy to use. It has a simple, clean interface. Most operations are a single Imaging method call. 6 Transparent Commons Imaging aims to be transparent. There are no hidden buffers to dispose, no native memory to free, no background threads. 7 Open Source It is Free Software/Open Source. It is available under the Apache Software License. 10 [...]... Enterty Programer Hình 2: Biểu đồ use case Trạng thái ứng dụng khi được sử dụng: Ở trạng thái Sleep tức là chưa được người sử dụng truy cập vào ứng dụng Người dùng sẽ click vào ứng dụng AMA, giao diện splash sẽ hiện thị lên cùng nhạc nền, sau đó Menu sẽ hiện thị lên danh sách các ứng dụng được viết riêng trong đó có ứng dụng Camera Người dùng chỉ việc nhấn vào đó và ứng dụng sẽ hoạt động như camera đã có... thiết bị di động chạy Android, nhưng vẫn có thể đáp ứng được một số trường hợp tài liệu XML không quá lớn 17 CHƯƠNG III: PHÂN TÍCH VÀ THIÊT KẾ ỨNG DỤNG III.1 Phân tích thiết kế hệ thống III.1.1 Mục tiêu xây dựng Xây dựng phần mềm Camera và hình ảnh Cho phép các máy chạy hệ điều hành android chạy ứng dụng này III.1.2 Phân tích Chức năng của sản phẩm đó là chụp ảnh và lưu dữ hình ảnh. Yêu cầu là chỉ dùng... chạy hệ điều hành Android Người dùng sẽ sử dụng phần mềm để chụp ảnh, đơn giản chỉ việc cài đặt phần mềm vào máy điện thoại Hay nói cách khác là người dùng giao tiếp hình ảnh bên ngoài thông qua camera Giải pháp đưa ra là xây dựng một phần mềm đơn giản, giao diện dễ sử dụng và không quá phức tạp Ta có thể hiểu đơn giản mối quan hệ giữa người dùng và ứng dụng, và người lập trình và ứng dụng qua biểu đồ... 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... tạo ra một Camera, ta có thể thêm các phần mềm vào list này và chỉ việc kích vào đó để chạy.project tên là AMA Cấu trúc của ứng dụng khá đơn giản cũng là cấu trúc của AMA Bao gồm Background splash, Menu và list ứng dụng 19 Splash (Background + Music) AMA Menu (List Application) Hình 4: Cấu trúc tổng thể Tạo một giao diện Splash cũng tương tự như tạo giao diện của ứng dụng Camera Ta cũng sử dụng tài liệu... ImageButton, Button trên giao diện chính của ứng dụng Ta cũng có thể đặt background tùy ý thích cho ứng dụng đó bằng cách tương tự như của splash Rồi sau đó tạo một lớp Camera. java tham chiếu tới activity_photo.xml Sau khi xong 3 bước trên ta tiến hành thêm ứng dụng vào ListMenu thông qua class Menu.java Và lớp này sẽ đặt trong tài liệu AndroidManifest.xml cùng với class Splash.java và Camera. java Các... 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 trong tối ưu hóa C / C ++, thư viện có thể tận dụng xử lý đa lõi Một số tính năng cơ bản của... đã tiến hành tìm hiểu và phân tích về hệ điều hành Adroid bao gồm: khái niệm, cấu trúc của hệ điều hành Android, sự khác biệt giữa Android và các hệ điều hành cho di dộng khác Thứ hai đó là tìm hiều về các lớp giao diện và các thư viện mã nguồn mở để phục vụ cho việc thiết kế Thứ ba là quá trình phân tích thiết kế ứng dụng camera trên hệ điều hành Android và chạy thử thành công trên máy di động Nokia,HTC... như camera đã có sẵn trong máy Thoát ứng dụng sẽ trở về trạng thái ban đầu Ta biểu diễn trạng thái đó qua lược đồ như sau: 18 Sleep AMA Splash Background Menu Camera Over Hình 3: Biểu đồ trạng thái Xét về tính khả dụng thì hoàn toàn khả dụng, sẽ tốt hơn nên nếu phát triển thêm Nhưng vì đây là một ứng dụng xây dựng một cách cơ bản, đơn giản nên chỉ ở mức thử nghiệm và tìm hiều là chính III.1.3 Thiết kế... PHÁT TRIỂN Do nhu cầu người sử dụng muốn sở hữu những bức hình đẹp, vậy nên việc phát triển và thêm các tính năng mới cho ứng dụng này là điều tất yếu Trong tương lai khi các hệ máy cũng phát triển mạnh mẽ thì buộc ứng dụng cũng phải theo kịp điều đó .Ứng dụng Camera sẽ được tích hợp thêm các tính năng khác như: chỉnh sửa màu, nhận dạng khuôn mặt, chỉnh sửa kích thước ảnh 26 CHƯƠNG VI: TÀI LIỆU THAM . 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à. 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. . với kho ứng dụng Adroid 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