안드로이드에서 어플에서 화면 캡쳐를 하려면 rooting를 해야한다는 글을 보고 rooting을 해보았습니다.

결과, drocao2 같은 화면 캡쳐 프로그램이 정상 작동을 하는것을 확인했습니다.

그래서 저도 화면 캡쳐를 하는 어플을 만들었습니다.
 
NDK를 사용하여 dev/graphics/fb0에 접근하는식입니다. 소스는 아래와 같구요 

그런데 open 하는 부분에서 ERRNO가 13이 리턴이 됩니다. 찾아보니 퍼미션 문제인것 같은데, 이유를 잘 모르겠습니다.

혹시 아시는 분계신가요?? 
jint Java_com_frame_FrameBufferTest_getFrameBuffer (JNIEnv * env, jobject thiz, jbyteArray jByte)
{
        int WIDTH = 320;
        int HEIGHT = 480;
        int BYTE_PER_PIXEL = 2;
        int SCREEN_NUM = 2;
        
        const int READ_BYTE = WIDTH * HEIGHT * BYTE_PER_PIXEL * SCREEN_NUM;
        
        // open fb0
        int fp = open("/dev/graphics/fb0", O_RDONLY);
        
        if (fp < 0)
        {
                return errno;
        }
        
        // get pointer
        unsigned short * pFrame = NULL;
        
        pFrame = mmap(0, READ_BYTE, PROT_READ, MAP_SHARED, fp, 0);
        
        if (pFrame == MAP_FAILED)
        {
                close(fp);
                return errno;
        }
        
        // set buffer
        (* env)->SetByteArrayRegion(env, jByte, 0, READ_BYTE, (jbyte *)pFrame);
        
        munmap(pFrame, READ_BYTE);
        close(fp);
        
        return 0;
}