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

안드로이드 사진전송 질문드립니다.

0 추천

카메라로 찍고 웹서버로 전송하는 방식을 만들어 내려는데.

 

1. 기본카메라앱을 사용하는 방식.

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
startActivityForResult(intent, PICK_FROM_CAMERA);
 
이하생략
 
2. 카메라액티비티를 만들어내는 방식
 
// JPEG 이미지를 생성 후 호출
private Camera.PictureCallback mPicutureListener =
new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Log.i(TAG, "Picture Taken");
if (data != null) {
Log.i(TAG, "JPEG Picture Taken");
FMScameraActivity.this.data=data; 
Bitmap bitmap =
BitmapFactory.decodeByteArray(data,0,data.length,null);
mImage.setImageBitmap(bitmap);
 
이하생략
 
이둘중한개를 이용하려고 하는데 어떤식이 좋은지도 궁금하고.
 
찍은것을 바로

new doFileUpTask().execute("http://localhost:8080/UploadImg");

이런식으로 전송을 할려고 하는데.

파일을 찍음과 동시에(이미지를 앨범 저장안하고) 전송을 할려고 하니

찍은 데이터를 byte[] buffer 에 저장시키고. 전송.

Outofmemory 에러가 뜨는것같네요.

 

뭔가 접근 방식이 잘못 된거 같기도 하고. 이런식으로 개발 하려면 어떤 소스를 참조해야할지요.

안된다면 사진을 찍고. 앨범에 저장한후에. 앨범에서 pick 한것을 URI 로 접근해서

inputStream 으로 읽어 들이면서 outputstream 으로 버퍼에쓰며 write 하는 방식이 맞는건가요??

AND chobo (4,690 포인트) 님이 2014년 1월 7일 질문

1개의 답변

0 추천
 
채택된 답변
액션 인텐트를 이용하면 액션을 구현하고 있는 다양한 사진앱중에서 사용자가 선택할 수도 있고,

보통 기본적으로 구현되어 있는 각종 촬영 옵션 조정이나 필터 기능, 안면인식 등을 활용할 수 있는 반면,

직접 액티비티 구성을 하게 되면 저 각각의 기능등을 모두 구현해줘야 하기 때문에

꼭 필요한  커스텀 기능이나 목적이 있는게 아니면 전자가 편리합니다.

사진 전송은 앨범에 저장하지 않더라도 전송 전까진 임시 파일로 저장해두고

실제 네트워크 전송시점에 말씀하신 방법대로 파일스트림에서 읽어와서 전송하는 방식이

메모리 문제를 해결하고, 각종 전송 실패상황등에 대처하는데 적합합니다.
b22n (22,940 포인트) 님이 2014년 1월 7일 답변
AND chobo님이 2014년 1월 7일 채택됨
답변 감사합니다 많은 도움이 되었습니다
참고소스가 있다면 부탁드릴게요 :)
...