Android2014. 11. 28. 16:10

이번에는 안드로이드 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 함수를 찾을 수 없다고 출력되며 앱이 종료됩니다.





Posted by 너를위한노래