안녕하세요.
카메라 프리뷰까지 성공을 하고 챕쳐후 인텐트로 byte[]로 넘기려고 하는데
도통 알 수 없는 오류가 발생하여 질문을 올립니다.
public class Photography extends Activity {
private CameraView cameraView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout framelayout = new FrameLayout(getApplicationContext());
cameraView = new CameraView(getApplicationContext());
framelayout.addView(cameraView);
........
framelayout.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
cameraView.mCamera.takePicture(null, null, jpegCollback);
return false;
}
});
}
PictureCallback jpegCollback = new PictureCallback(){
@Override
public void onPictureTaken(byte[] data, Camera camera) {
cameraView.mCamera.stopPreview();
cameraView.mCamera.release(); // 카메라 자원 반환(필수)
cameraView.mCamera = null; // 객체 소멸
Intent intent = getIntent();
intent.putExtra("BITMAP_BYTE", data);
setResult(RESULT_OK, intent);
finish();
}
};
}
소스는 위와 같습니다.
화면을 터치하면 챕처화면을 byte배열로 받아서 인텐트로 넘기려고 하는데
카메라자원 반환(프리뷰화면이 안보이고 검은화면으로 보여짐)까지는 잘 되는데
인텐트로 넘어가질 못합니다.
무슨 이유때문 일까요?

give & take




오전내 검색을 한 결과 오류 원인은 byte[]에 있었습니다.
byte[]이 너무 커서 오류가 발생한 것 같습니다.
저장할대 사진의 품질을 조절하면 byte[]를 줄일수 있을것 같은데
그보단 저장후 uri를 불러 사용을 하는 것이 정신건강에 좋을 듯 합니다.