이번에는 안드로이드 NDK개발환경 구축에 관해서 간단하게(스크린샷 없이) 포스팅 할건데요, 제 얕은 지식으로 이해한 바를 최대한 써보겠습니다. ㅜㅜ
개발환경 구축에 필요한 툴과 라이브러리는 다음과 같습니다.
JDK
JDK_7_51 - (http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u51-oth-JPR)
환경변수 설정
이클립스
케플러 - (http://www.eclipse.org/downloads/packages/release/Kepler/SR2)
안드로이드 ADT설치 (help - install new software)
안드로이드
SDK - adt-bundle-windows-x86_64-20140321
안드로이드용 OpenCV
OpenCV-2.4.9-android-sdk
안드로이드 NDK
android-ndk-r10c-windows-x86_64
다운로드, 설치 방법과 경로 설정 등은 다른 블로그에 많이 나와있으니 생략하겠습니다.
모두 설치하셨다면, 프로젝트를 만들어야 할텐데요. 맨땅에다가 만들지 않고 예제를 수정하는 방법으로 만드려고 합니다.
OpenCV 예제 중 OpenCV Tutorial 2 - Mixed Processing 이라는 예제가 있을텐데요, 이 안에서는 CameraBridgeViewBase로 카메라를 다루지만 AutoFocus기능을 사용하기 까다롭더라구요 (Camera객체를 만들어서 start시키려고 하면 CameraBridgeViewBase와 충돌하는 듯 합니다). 하지만 NDK개발이 가능합니다.
그리고 OpenCV Tutorial 3 - Camera Control 이라는 예제는 CameraBridgeViewBase를 상속받은 JavaCameraView를 사용해서 카메라를 다루는데, 이 클래스 안에 mCamera가 Camera 객체이기 때문에 AutoFocus기능을 사용하기 수월합니다. 하지만 NDK개발 구축이 안되어있습니다.
이 두 예제를 합칠건데요, 일단 그냥 Tutorial 2 의 패키지를 지워버리고 Tutorial 3의 패키지를 가져오는 식으로 하셔도 됩니다.
다만 두 프로젝트간에 다른건 조정 해줘야합니다. Menifest파일의 패키지와 액티비티 이름, 옮긴 후 액티비티의 onCreate에서 레이아웃 이름 등등은 알아서 조절하시길 바랍니다.
이렇게 해서 만들어진 프로젝트는 JavaCameraView의 mCamera를 이용한 AutoFocus가 가능하고, JavaCameraView의 onCameraFrame에서 OpenCV영상처리도 가능하며 onCameraFrame에서 native 함수를 호출함으로써 NDK 영상처리 개발도 가능합니다.
Tip : native 함수는 Java_com_abc_core_MainActivity_func() 처럼 생겼는데 맨 처음 Java는 고정이고 다음은 com.abc.core.MainActivity라는 액티비티의 func()함수로 사용하겠다는 의미입니다. 즉 위처럼 선언된 네이티브 함수는 com.abc.core.MainActivity 액티비티에 public native void func(); 이렇게 선언되어있어야 합니다. 오타가 나거나 경로가 틀리면 native 함수를 찾을 수 없다고 출력되며 앱이 종료됩니다.
'Android' 카테고리의 다른 글
안드로이드 폰에서 유튜브 동영상 리스트 검색 및 재생하기 (7) | 2015.02.08 |
---|---|
ZXing을 이용해 안드로이드 폰에서 바코드, QR코드 인식하기 (3) | 2015.01.27 |
안드로이드-아두이노 시리얼 통신[안드로이드 편] (0) | 2013.07.18 |
안드로이드 행렬연산 소스 (0) | 2013.04.01 |