2012-07-04 98 views
3

我有一個活動在其中我有一個按鈕和圖像視圖。當我點擊按鈕時,它應該加載相機並將圖像保存在圖像視圖中。任何人都可以爲此提供代碼。如何捕捉圖像並保存在我的活動圖像視圖中?

在此先感謝!

+0

什麼你試過嗎? –

+2

Stackoverflow不是您的個人編程任務組。先嚐試使用Google。 – Aelexe

+0

把你的代碼放在這裏..你在你的代碼中做了什麼? –

回答

0

下面是一個完整的例子,做你想同樣的事情:

Capture Image from Camera and Display in Activity

+0

使用該代碼,我可以加載相機並拍照,但無法在圖像視圖中查看.... !!! –

+0

所提到的線程中的代碼工作得很好,只有缺少的東西是檢查'onActivityResult(...)'如果'resultCode'等於'RESULT_OK'並且只處理數據,當它是true時。 –

+0

我很抱歉,但仍然沒有得到它! –

0

嘗試爲:

STEP 1:啓動相機,可拍攝的圖像:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(cameraIntent, 2); 

步驟2:onActivityResult得到Im從數據

年齡
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == CAMERA_REQUEST) { 
      Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      ImageView imageView=(ImageView) findViewbyId(R.id.imgv); 
      imageView.setImageBitmap(photo); 
     } 

編輯:和第二個解決方案:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg"))); 
startActivityForResult(intent, 2); 




@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == NONE) 
      return; 
     if (requestCode == 2) { 
      File picture = new File(Environment.getExternalStorageDirectory() + "/temp.jpg"); 
      ImageView imgView=(ImageView)findViewById(R.id.imgView); 
      Uri imgUri=Uri.fromFile(picture); 
      imageView.setImageURI(imgUri); 
     } 
    } 
+0

我試過這段代碼,但無法查看圖像中的圖像查看! –

+0

看到我的編輯答案,並嘗試第二個解決方案,確保你有在Manifast.xml中的內部存儲權限 –

3

見下面的代碼..它可以幫助你。

把這兩個線路在您按一下按鈕..

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
startActivityForResult(intent, 0); 

在你的代碼創建此方法..

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == 0 && resultCode == RESULT_OK) { 
      if (data != null) { 

       photo = (Bitmap) data.getExtras().get("data"); 

       add_image.setImageBitmap(photo); /* this is image view where you want to set image*/ 

       Log.d("camera ---- > ", "" + data.getExtras().get("data")); 


      } 
     } 
    } 

.............. .................................................. ...........................

下面的代碼給你LastImageID由相機拍攝。這只是額外的代碼,你想要洞圖像,然後它的使用完全給你。

.............................................. ..........................................

private String getLastImageId() { 
     final String[] imageColumns = { MediaStore.Images.Media._ID, 
       MediaStore.Images.Media.DATA }; 
     final String imageOrderBy = MediaStore.Images.Media._ID + " DESC"; 
     Cursor imageCursor = managedQuery(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, 
       null, null, imageOrderBy); 
     if (imageCursor.moveToFirst()) { 
      int id = imageCursor.getInt(imageCursor 
        .getColumnIndex(MediaStore.Images.Media._ID)); 
      String fullPath = imageCursor.getString(imageCursor 
        .getColumnIndex(MediaStore.Images.Media.DATA)); 

      imageCursor.close(); 
      return fullPath; 
     } else { 
      return "no path"; 
     } 
    } 
0

你可以創建一個方法來捕捉圖像,並把它在你的按鈕的onClickListener,就像這樣:

public void takePicture(View view){ 

    try{ 
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
    } catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

,然後覆蓋onActivityResult方法是這樣的:

 @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    case CAMERA_PIC_REQUEST: 

    String path=null; 
      try{ 
       Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
       thumbnail = Bitmap.createScaledBitmap(thumbnail,yourDesiredImageWidth, yourDesiredImageHeight, true); 
       ImageView imageView = (ImageView) findViewById(R.id.yourImageView); 
       image.setImageBitmap(thumbnail); 
       break; 
      }catch(Exception ee){ 
       ee.printStackTrace(); 
      } 
     } 
    } 
0

您的活動代碼

public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 

    Button btnTakePhoto; 
    ImageView imgTakenPhoto; 
    private static final int CAM_REQUREST = 1313; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btnTakePhoto = (Button) findViewById(R.id.button1); 
     imgTakenPhoto = (ImageView) findViewById(R.id.imageView1); 

     btnTakePhoto.setOnClickListener(new btnTakePhotoClicker()); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 

      if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) { 

        if (data != null) { 
       Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
       imgTakenPhoto.setImageBitmap(thumbnail); 
        } 
      } 
    } 

    class btnTakePhotoClicker implements Button.OnClickListener 
    { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
     } 
    } 
} 

佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Press the button, capture photo and enjoy!!" 
     android:id="@+id/textview1"/> 

    <Button 
     android:text="Take Photo!" 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textview1"> 
    </Button> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent" 
     android:src="@drawable/icon" 
     android:scaleType="centerCrop" 
     android:layout_below="@+id/button1"> 
    </ImageView> 
</RelativeLayout> 
0

CemraImageActivity.java

public class CemraImageActivity extends Activity implements OnClickListener{ 
    private int CAMERA_REQUEST; 
    private ImageView imageView; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     this.imageView = (ImageView)this.findViewById(R.id.image_capture); 
     imageView.setOnClickListener(this);   

    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if(resultCode != 0) 
     { 
      if (requestCode == CAMERA_REQUEST) 
      { 
       Bitmap photo = (Bitmap) data.getExtras().get("data"); 
       imageView.setImageBitmap(photo);   
      } 
     } 
    } 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(cameraIntent, CAMERA_REQUEST); 
    } 
} 

爲主。xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="334dp" 
     android:layout_height="wrap_content" 
     android:text="Click this image for take a photo" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <ImageView 
     android:id="@+id/image_capture" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.06" 
     android:src="@drawable/ic_launcher" /> 

</LinearLayout> 
0

非常簡單的方法來獲得一個單擊按鈕,並在imageview中設置存儲圖像。

'公共類MainActivity擴展活動{

private static final int CAMERA_PIC_REQUEST = 22; 

Uri cameraUri; 

Button BtnSelectImage; 
private ImageView ImgPhoto; 
private String Camerapath ; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ImgPhoto = (ImageView) findViewById(R.id.imageView1); 

    BtnSelectImage = (Button) findViewById(R.id.button1); 
    BtnSelectImage.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // TODO Auto-generated method stub 
      try { 
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
        startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
      } catch (Exception e) { 
       Toast.makeText(getApplicationContext(), "Couldn't load photo", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 

} 


@Override 
public void onActivityResult(final int requestCode, int resultCode, Intent data) { 
    try { 
     switch (requestCode) { 
     case CAMERA_PIC_REQUEST: 
      if (resultCode == RESULT_OK) { 
       try { 
         Bitmap photo = (Bitmap) data.getExtras().get("data"); 

         ImgPhoto.setImageBitmap(photo);  

       } catch (Exception e) { 
        Toast.makeText(this, "Couldn't load photo", Toast.LENGTH_LONG).show(); 
       } 
      } 
      break; 
      default: 
      break; 
     } 
    } catch (Exception e) { 
    } 
} 

}`

設置此清單。

<uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" android:required="false"></uses-feature>

0

拳頭您在清單需要做到這一點 在mainactivity.java後做

public class MainActivity extends Activity { 
    Button button; 
    ImageView photo; 
    static final int Cam_Request = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     button = (Button)findViewById(R.id.btnPhoto); 
     photo = (ImageView)findViewById(R.id.ivPhoto); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       File file = getFile(); 
       camera_intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 
       startActivityForResult(camera_intent, Cam_Request); 


      } 
     }); 
    } 
    private File getFile() 
    { 
     File folder = new File("sdcard/camera_app"); 

     if(!folder.exists()) 
     { 
      folder.mkdir(); 
     } 

     File image = new File(folder,"image.jpg"); 
     return image; 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     String path = "sdcard/camera_app/image.jpg"; 
     photo.setImageDrawable(Drawable.createFromPath(path)); 
    } 
} 
+0

在清單中它將工作100%,如果工作和你請接受答案,如果不告訴我什麼是壞的 –