전체 글

전체 글

    특정 App 실행여부 확인

    프로세서 중에서 FOREGROUND로 실행되는 프로세서 이름을 읽어서 package이름과 같은 것을 찾아서 처리 String strPackage = ""; ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List proceses = am.getRunningAppProcesses(); //프로세서 전체를 반복 for(RunningAppProcessInfo process : proceses) { if(process.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { strPackage = process.processName; //package이름과 동일..

    커널 유저영역 데이터 전달

    1. 프로세스가 수행되는 모드 1) 사용자 모드 - 커널 모드로 진입하기 위해서는 시스템 콜 함수 호출 - 사용자 메모리 공간 * 사용자 모드에서 프로세스가 사용하는 메모리 공간 * 각 프로세스마다 서로다른 물리적 메모리 공간을 가리킴 2) 커널 모드(수퍼바이저 모드) - 커널 메모리 공간 * 커널메모리 공간에서 프로세스가 사용하는 메모리 공간 * 모든 프로세스가 동일한 물리적 공간을 가리킴 2. 사용자 메모리와 커널메모리 사이에 데이터 전송 함수들 1) #include 포함 - int verify_area(int type, const void _user *addr, unsigned long size); * 사용자 메모리 공간의 유효성 검사 - int copy_to_user(void _user *to, ..

    Eclipse 에서 NDK .so 자동 컴파일

    http://neodreamer.tistory.com/365

    JNI - GetStringUTFChars

    JNI는 C와 자바 간의 문자열을 처리할 수 있는 다양한 함수 지원한다. 이중 GetStringUTFChars() JNI함수는 JNIEnv * 를 통해 호출 가능하다. GetStringUTFChars 형식 - const jbyte* GetStringUTFChars(JNIEnv *env, jstring string, jboolean *iscopy) 이 함수는 자바 String 객체를 UTF-8문자열(C 문자열) 형태로 변환 후 포인터를 반환한다. 입력 인자 JNIEnv *env - JNI Interface Pointer string - 자바 스트링 객체 isCopy - String 객체가 가리키는 문자열이 UTF-8문자열 형태로 메모리에 복사되고 해당 포인터가 반환되면 *isCopy 는 JNI_TRUE로 ..

    jni lib를 static block에서 로드하는 이유

    java에서 c/c++ 코드를 사용하기 위해 jni를 사용하게 되는데 이때 java 코드에서 라이브러리 로드시에 static { System.loadLibrary("라이브러리 이름");} 으로 많이 사용하게 되는데, 그 이유는 만약 라이브러리가 로드되지 않는 상태에서 함수 호출시 오류가 발생할 수 있다. 함수 호출 시점보다 먼저 C 라이브러리 로드하기 위해 static block사용하게 일반적이다.

    jni so파일 링크

    gcc -shared -fPIC -o libhellojni.so hellojni.c -I/usr/lib/jvm/java-6-openjdk-amd64/include/ -I/usr/lib/jvm/java-6-openjdk-amd64/include/linux/ gcc -shared -fPIC -o "so파일명" "c파일명" -I/usr/lib/jvm/java-6-openjdk-amd64/include/ -I/usr/lib/jvm/java-6-openjdk-amd64/include/linux/