默认相机在Android中拍摄照片

问题描述:

如何使用默认相机在android中拍照?默认相机在Android中拍摄照片

+0

可能重复的[Android摄像头的意图。(http://*.com/questions/2729267/android-camera-intent) – Aleadam 2011-05-10 05:27:00

Uri imageUri; 
final int TAKE_PICTURE = 115; 

public void capturePhoto(View view) { 
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    File photoFile = new File(Environment.getExternalStorageDirectory(), "Photo.png"); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, 
      Uri.fromFile(photoFile)); 
    imageUri = Uri.fromFile(photoFile); 
    startActivityForResult(intent, TAKE_PICTURE); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     case TAKE_PICTURE: 
      if (resultCode == Activity.RESULT_OK) { 
       Uri selectedImageUri = imageUri; 
       //Do what ever you want 
     } 
    } 
} 
+0

感谢科坦其有益的给我 – 2011-05-10 05:26:43

+1

太感谢你了,我已经一直在摸索着像一个小时试图让相机对象和预览方法工作,当这一切都是我从一开始就想要的。 – 2011-05-23 19:33:40

+0

嗨阿贝汉,你的代码将显示所有第三方相机应用程序以及默认相机应用程序。如果某个人只想显示默认相机而不显示任何第三方相机应用程序的选择器,如** Line Camera **和** Paper Camera **? – 2013-09-27 12:16:29

它是用来打开摄像头的目的是

buttonCapturePhoto.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(intent, CAPTURE_IMAGE); 
     } 
    }); 

,让你拍摄后的图像的代码是

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Uri uriImage; 
    InputStream inputStream = null; 
    if ((requestCode == SELECT_IMAGE || requestCode == CAPTURE_IMAGE) && resultCode == Activity.RESULT_OK) { 
     uriImage = data.getData(); 
     try { 
      inputStream = getContentResolver().openInputStream(uriImage); 
      Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, options); 
      imageView.setImageBitmap(bitmap); 
     } catch (NullPointerException e) { 
      e.printStackTrace(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
     imageView.setAdjustViewBounds(true); 
    } 
} 

这是一个简单的例子。总之,这会将图像作为一个小的位图返回。如果要检索全尺寸的图像,会稍微复杂一些。

ImageView takePhotoView = (ImageView) findViewById(R.id.iwTakePicture); 
Bitmap imageBitmap = null; 
takePhotoView.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub    
       dispatchTakePictureIntent(0); 
      } 
     }); 

    private void dispatchTakePictureIntent(int actionCode) { 
      Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
      startActivityForResult(takePictureIntent, actionCode);  
     } 

    private void handleSmallCameraPhoto(Intent intent) { 
     Bundle extras = intent.getExtras(); 
     this.imageBitmap = (Bitmap) extras.get("data"); 
     takePhotoView.setImageBitmap(imageBitmap); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if(resultCode == RESULT_OK) 
      handleSmallCameraPhoto(data); 
    }