본문 바로가기

안드로이드 JNI4

[안드로이드][JNI] JNI 활용하여 C언어로 흑백이미지 만들기 안녕하세요 푸민입니다. JNI 에서는 기본 변수 타입은 크게 바뀌는 것이 없이 사용할수 있습니다. 하지만 배열을 사용하려면 꽤 많은 변경이 되어야 합니다. 1. 반환 타입 및 파라미터 타입을 설장한다. jintArray Java_com_example_renderscripttest_MainActivity_colorGrayArray(JNIEnv* env, jobject thiz, jintArray pixels){...} 위와 같이 jintArray 라는 타입의 Array 를 반환타입과 파라미터 타입으로 설정합니다. 2. 작업후 반환할 변수를 생성한다. int r, g, b, graypixel, n, i;jintArray gray;jint pixel; n = env->GetArrayLength(pixels);.. 2015. 10. 29.
[안드로이드][JNI] 로그찍어보기 안녕하세요 푸민입니다.안드로이드 내부의 C 파일에서도 로그를 찍어볼수 있습니다. 1. 먼저 android/log.h 를 포함시킨다. #include #include 2. 로그를 찍고자하는 위치에서 __android_log_print() 메소르를 호출한다. jint Java_com_example_pluscalc_peedTest_nativecalc ( JNIEnv* env, jobject obj){__android_log_print(ANDROID_LOG_INFO, "test", "nativecalc Call");int count = 3;int i = 0 ;for(i = 0 ; i < 100000000; i++){count = count * 2 / 3 + 5 - 1;}return count;} __androi.. 2015. 10. 28.
[안드로이드][JNI] JNI 개발 순서 절차! 안녕하세요 푸민입니다.안드로이드 NDK 환경설정을 한 저번 포스팅에 이어 이번에는 JNI 개발 순서를 한번 알아보겠습니다. 1. so 파일 명칭과 메소드 명칭을 정하고 클래스를 작성한다.당연한 얘기지만 해당 명칭을 정하고 자바로 먼저 적용할 것을 만들어 두면 보기가 편해요! 그러면 한번 안드로이드 자바와 JNI 속도를 간단하게 테스트해볼 클래스를 생성해보겠습니다. public class SpeedTest {static{System.loadLibrary("speedtest");} long start_time;long end_time;int ret; public void test(){start_time = System.currentTimeMillis();ret = java_calc();end_time = S.. 2015. 10. 27.
[안드로이드][JNI] C언어를 활용하는 JNI! 환경구성 안녕하세요 푸민입니다. 안드로이드에서는 기본적으로 자바라는 언어를 사용합니다! 자바는 다양한 플랫폼에서 굉장히 많이 활용되고 있는 언어인데요. 많은 장점과 또 단점도 있습니다. 단점 중 가장 큰 이슈는 아마도 속도지 않을까싶네요. C언어의 경우 미리 소스를 컴파일하여 메모리에 올리게 되지만, 자바의 경우 JVM을 거친후 메모리에 올려지기 때문입니다. 그래서 아무리 코드를 잘짜도 자바가 C언어의 속도를 따라잡기란 쉽지 않습니다. 물론 요즘은 워낙 하드웨어의 성능이 뛰어나기 때문에 사용자들은 큰 차이를 못느낍니다. 자 안드로이드에서도 이미지 처리나 리소스를 많이 잡는 것을 안드로이드 내부에 있는 C언어로 개발할 수 있습니다. 바로 NDK 입니다. Native Development Kit 입니다. 여기서 Na.. 2015. 10. 26.