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

카메라로 찍은 사진을 이미지뷰에 보여주려고 하는데 잘 안되네요.

0 추천
package com.example.sns;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

@SuppressLint("InlinedApi") public class insert extends Activity {
 
 public static final int REQUEST_CODE_CAMERA = 0;
 public static final int REQUEST_CODE_CROP = 1;
 
 ImageView imgView;
 Uri u;
 
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.insert);
        
        Button insertButton = (Button)findViewById(R.id.mirt);
        Button cancel = (Button)findViewById(R.id.cancel);
        Button cameraButton = (Button)findViewById(R.id.insertcamera);
        imgView=(ImageView)findViewById(R.id.insertImage);
        
        final EditText et = (EditText) findViewById(R.id.irttext);
        
        
        
        
        
        cameraButton.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
          Intent intent = new Intent();
          intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
          intent.putExtra("crop", "true");
          File f = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
          u = Uri.fromFile(new File(Environment.DIRECTORY_PICTURES,"myFile.jpg"));
    intent.putExtra(MediaStore.EXTRA_OUTPUT, u);
          startActivityForResult(intent, REQUEST_CODE_CAMERA);
         }
        });
        
        insertButton.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
          
          Intent resultIntent = new Intent();
          resultIntent.putExtra("name", et.getText().toString());
          setResult(1, resultIntent);
          finish();
         }
        });
        
        cancel.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
          finish();
         }
        });
        
  
 }
    
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
     if(resultCode==RESULT_OK){
      if(requestCode==REQUEST_CODE_CAMERA){
       InputStream is = null;
       try{
        is = this.getContentResolver().openInputStream(u);
       }catch(FileNotFoundException e){
        e.printStackTrace();
       }
       Bitmap bmp = BitmapFactory.decodeStream(is);
       imgView.setImageBitmap(bmp);
       Log.i("Inside","REQUEST_CODE_CAMERA");
      }
     }
    }
    
    
}

여기저기서 코드 찾아가면서 짜깁기했는데요.

인텐트로 카메라 불러와서 사진찍고 이미지뷰에 보여주려고 하는데 하루종일 이코드로 했다가 저코드로 했다가 해도 안되네요... ㅠ

이건 사진 찍고 나니 '로드하지 못했습니다.' 토스트가 뜨네요..

도움이 필요합니다.

머리가 (370 포인트) 님이 2014년 5월 5일 질문

1개의 답변

0 추천
manifest에 write 퍼미션은 확인해보셨나요?
쎄미 (162,410 포인트) 님이 2014년 5월 6일 답변
예.
<uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
이렇게 두 개 넣어줬습죠.
File f = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
u = Uri.fromFile(new File(f,"myFile.jpg"));
intent.putExtra(MediaStore.EXTRA_OUTPUT, u);
오옷. 되네요. 왜 저러는 거죠?
File에 dir경로를 바로 스트링 값을 넣어주는 생성자도 있던데...
Environment.DIRECTORY_PICTURES값이 스트링이니 될 줄 알았는데...
만들어진 경로를 찍어보세요
...