마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

카메라로 찍은 사진 저장

0 추천
File path = getFilesDir();
File file = new File(path, "test_picture.bmp");
Uri uri = Uri.fromFile(file);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, 0);
 
 
제가 이전에는 위에처럼 파일 패스를 얻어서 intent에 건내주면 intent 카메라가 알아서 저 경로로 파일을 저장해주었습니다.
이걸  intent를 쓰지않고 직접 카메라 클래스를 써려고합니다.
 
 
Bitmap bitmap=BitmapFactory.decodeByteArray(data, 0, data.length);
File path = getFilesDir();
File file = new File(path, "test_picture.bmp");
Uri uri = Uri.fromFile(file);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
 

sendBroadcast에 경로는 전달해주었는데 이미지가 저장이 안됩니다.  사이즈가 0이 나오네요.

저 경로에 저 "test_picture.bmp" 파일명 그대로 intent 불러서 쓰던것처럼 하려면 뭘 더 해줘야하나요?

String imageSaveUri=MediaStore.Image.Media.insertImage(getContentResolver(), bitmap, "", "");
Uri uri=Uri.parse(imageSaveUri);
 
이걸 중간에 저거 대신 해준다는데 이렇게하면 파일명 지정을 못하고 경로가 intent 쓰던 때랑 달라집니다.
조언 부탁드립니다.
익명사용자 님이 2014년 4월 14일 질문
인텐트로 저장할 경로는 넘어갔지만(uri)
저장할 영상은 넘어가지 않았네요 (bitmap)
인자가 2개인데 영상데이터는 어디로 넘겨줘야하나요?   계속 찾아보니sendBroadcast는 새로운 이미지가 생성되었다는걸 알리는거고 이미지 저장은 저 경로로 따로 해줘야하는 것 같은데 맞나요?
해결했습니다.  이렇게 하는게 맞네요.
저도 카메라에서 직접 캡쳐는 못해봤습니다만
일반적으로 Intent로 대용량이 전송되지 않는 것으로 알고 있습니다.
( 약 1mb정도로 추정되네요)
그래서 캡쳐한 클래스에서 파일로 저장하시고 경로만 넘기시는 것이 좋다고 생각됩니다.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...