Như tôi đã đề cập trong phần kiến trúc Android. Khi viết chương trình ứng dụng cho Android ta phải sử dụng ngôn ngữ Java. Trong bài toán phát hiện khuôn mặt sử dụng thuật toán của Viola – Jones trong OpenCV thì vấn đề khó khăn là để Java có thể gọi được các thư viện của OpenCV viết bằng ngôn ngữ C và C++ thì cần phải thành thạo ngôn ngữ lập trình JNI. Do thời gian hạn chế nên khóa luận này tôi chỉ đưa ra hướng giải quyết sử dụng JNI để viết chương trình phát hiện khuôn mặt sử dụng OpenCV trên Android. Quy trình xây dựng và thực thi ứng dụng sẽ giống với quy trình tạo và demo ứng dụng “Hello World” dùng Android NDK mà tôi đã trình bày ở phần trên. Chúng ta đã porting được OpenCV vào Android rồi, vấn đề chỉ là tìm hiểu về lập trình JNI để tiếp tục phát triển ứng dụng. Đây cũng là hướng phát triển đề tài trong tương lai.
KẾT LUẬN
Khóa luận này đưa ra được tổng quan về hệ điều hành Android. Đây là nền tảng để cho những ai mới bắt đầu lập trình với Android. Khóa luận đã đạt được những mục tiêu cần tìm hiểu để xây dựng chương trình ứng dụng Android.
Trong khóa luận tôi đã trình bày về kiến trúc Android trong đó có demo một chương trình ứng dụng phát hiện khuôn mặt sử dụng framework API của Android trong tầng Applications framework. Từ đó giúp phát triển thêm các ứng dụng khác sử dụng framework API để xây dựng. Trước khi xây dựng chương trình ứng dụng thì tôi trình bày về các thành phần tạo nên một ứng dụng cho Android ;quá trình một ứng dụng được thực thi như thế nào; các thành phần trong một dự án Android ; sự khác biệt giữa máy ảo Java và máy ảo Dalvik và trình bày về cách porting thư viện OpenCV và thuật toán phát hiện khuôn mặt của Viola – Jones được sử dụng trong OpenCV.
Môi trường cần để xây dựng và thực thi các ứng dụng cho Android đó là các ngôn ngữ lập trình Java, JNI, C/C++. Ngoài ra Android dựa trên nền tảng Linux nên môi trường tốt để viết các ứng dụng là Linux hoặc Ubuntu. Tuy nhiên cũng có thể viết trên Windows nhưng phải dùng đến swing để dùng các lệnh của Linux. Dùng Ubuntu sẽ ít gặp rắc rối về lỗi và virus.
Khóa luận cũng đã trình bày về Android SDK, Android NDK là các công cụ hỗ trợ mạnh cho phát triển các ứng dụng Android. Tôi cũng đưa ra được các quy trình làm một dự án phần mềm với các công cụ này. Một ví dụ đơn giản để từ đó hiểu được quy trình làm một dự án và chương trình được thực thi như thế nào trên Android. Từ đó sau này có thể phát triển thêm nhiều ứng dụng hấp dẫn khác cho Android.
Tóm lại để có thể xây dựng và phát triển các ứng dụng Android thì cần phải có kiến thức về Android được trình bày trong khóa luận và biết lập trình Java, JNI, C/C++ và nắm chắc kiến thức về Linux với lập trình shell và các tập lệnh của Linux.
TÀI LIỆU THAM KHẢO
TÀI LIỆU TIẾNG ANH:
[1] AndroidTM A Programmer’s Guide, J.F. DiMarzio, Pulisher: McGraw-Hill Proesional, 2008.
[2] Harvey M. Deitel, Paul J.Deitel, Java How to Program (4th Edition), Publisher: Prentice Hall PRT Upper Saddle River, NJ, USA, 2001.
[3] James Steele Nelson To, The Android Developer’s Cookbook Building Applications with the Android SDK, Publisher: Add ison-Wes ley, 2010.
[4] Marko Gargenta, Learning Android, Publisher: O’Reilly Media, 1 edition, 2010. [5] Robin Hewitt, Seeing with OpenCV, Servo magazine, January 2007, Inc.
[6] Rainer Lienhart and Jochen Maydt, “An extended set of Haar- like features for Rapid Object Detection”, Intel Labs, Intel Corporation, Santa Clara, CA 95052, USA.
[7] Sheng Liang, The JavaTM Native Interface, Programmer’s Guide and Specification, Publisher: Prentice Hall PRT, 1st edition, 1999.
[8] Viola–Jones, “Rapid Object Detection using a Boosted Cascade of Simple Features”, Accepted conference on Computer Vision and pattern recognition 2001. [9] Viola–Jones, “Robust Real-time Object Detection”, Second international workshop on statistical and computational theories of vision – modeling, learning, computing, and sampling, Vancouver, Canada, July 13, 2001.
[10] W. Frank Ableson, Charilie Collins, Robi Sen, Unlocking Android, Publisher: Manning Publications, 2009.