JNI사용시 배열을 받을때
GetByteArrayElements 을 사용한다.
JNIEnv * (jni 환경에 대한 포인터) 가 파라메터인데 자바 가상머신 내에 있는 현재 스레드에 대한 핸들이다.
JNIEnv 유형은 모든 JNI 함수 포인터를 저장하는 구조에 대한 포인터를 설정합니다.
그것은 다음과 같이 정의됩니다.
typedef const struct JNINativeInterface *JNIEnv;
JNI function 으로는
GetObjectArrayElement
jobject GetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index); 설명 : Object(자바 개체) 배열 요소를 반환합니다.
이 명명된 스키마는 배열로부터 요소를 받거나 요소를 더하거나 요소를 변경할 수 있도록 확장합니다. 새로운 byte 배열을 가져오려면 GetByteArrayElements 를 호출합니다. 또는 배열에 요소를 추가하거나 변경하기위해 Set<type>ArrayElements 를 호출합니다. GetByteArrayElements 함수는 전체배열에 영향을 줍니다. 배열의 부분에 작용하기 위해서는 GetByteArrayRegion 를 대신 사용합니다. 그냥 배열요소만 변경하기위해서는 Set<type>ArrayRegion 함수를 사용합니다. |
자바 메서드 호출로 배열이 반환된다;; (*env)-> ReleaseByteArrayElements(env, jb, 마지막인자에 들어갈 수 있는 값으로 0 : C코드내에서 배열을 업데이트 하는데 이는 자바 언어복사본에 반영된다. JNI_COMMIT : 자바바 언어 복사본은 업데이트 되지만 로컬 jbyteArray는 해제되지 않는다. JNI_ABORT : 변화된것은 다시 복사되지 않지만 jbyteArray 는 해제됩니다. 배열이 JNI_TRUE모드를 포함하면 값은 사용되어집니다. (무슨말이야) |
참고 : Oracle , 번역기-_-;
'Android' 카테고리의 다른 글
[JNI] Android와의 JavaCV : Mat 구조체 넘김 (0) | 2012.07.10 |
---|---|
[JNI] JNI 형식 및 데이터 구조 (0) | 2012.07.03 |
Android OpenCV 샘플코드 (3) | 2012.07.02 |
Eclipse에서 JavaCV 설치/사용 (4) | 2012.06.10 |
카메라 뷰와 촬영 예제 (3) | 2012.06.07 |