안드로이드 개발 질문/답변
(글 수 45,052)
매일 눈팅만 하다가 처음으로 궁금한글을 올립니다.
안드로이드 APP에서 동영상이 실행할때, 실행중인 화면의 픽셀값(히스토그램을 위해)을 얻으려고 합니다.
이를 얻기 위해 framebuffer에 접근하여 frame 마다 픽셀값을 얻으려고 계획하고 개발중인데요,
안드로이드에서 framebuffer(/dev/graphics/fb0)을 접근할수가 없습니다.
jni를 이용하여 open() 함수로 ReadOnly 로 로드하려고 하는데, 퍼미션 에러가 발생합니다.
관련 내용을 검색해보니, 대부분 퍼미션 때문에 안된다고 하던데, 혹시 성공하셨거나,
저와 다른 방법으로 영상의 픽셀 값을 획득을 성공하신분이 있다면, 조언 부탁드립니다.
2011.01.18 09:41:58
지지난 주까지는 아주 잘 됐습니다.
사용 디바이스는 갤럭시탭이었고, 루팅이나 NDK 까지는 필요 없었습니다.
걍 /dev/graphics/fb0 에서 1024 * 600 * 4 바이트를 읽어오면 되었었습니다.
그런데, 지난 주에 KIES에서 펍업 알림이 뜨길래, 덜컥 DL24 버전으로 펌업을 하고부터는
permission 오류가 나서 프레임버퍼를 읽지를 못하더군요.
나중에 퍼미션을 보니 android.permission.READ_FRAME_BUFFER
라는 것이 있더군요. 뒤늦게 추가해보았으나 아무 소용 없었습니다.
삼성이 펌업 하면서 아예 이 권한을 사용 못하게 막았는지,
App install 할 때 사용자에게 권한 확인 요청하는 화면에조차 이 권한은
보여지지도 않습니다.
만약 삼성폰이 아니라 다른 안드로이드 폰 사용중이시라면
READ_FRAME_BUFFER 퍼미션 주고 함 해보세요.
NDK도 필요 없고, 펌업 전에는
InputStream is = new FileInputStream("/dev/graphics/fb0");
이 정도 코드로도 읽혔습니다.
2011.01.18 16:22:56
헤드샷님.. 그럼 android.permission.READ_FRAME_BUFFER 라는 퍼미션은 아무 의미도 없는 간가요? -_-; 그렇담 정말 낭패인데요;;
2011.01.18 20:52:17
sdk 에 있는 permission을 모두 application에서 쓸수 있는것은 아닙니다
system level의 permission도 있습니다. preload app에서만 쓸수 있는 권한입니다.