1.调用系统的照相机程序
Intent intent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
 startActivityForResult(intent,TAKE_PHOTO_WITH_DATA);

2.在onActivityResult中处理返回的data
final Bitmap photo = data.getParcelableExtra("data");
如果不需要做剪切处理就可以直接使用图片了,比如输出到ImageView上
imageView.setImageBitmap(photo);
如果需要做剪切处理,就继续向下执行

3.做剪切处理
    

Intent intent = newIntent("com.Android.camera.action.CROP");
        intent.setType("image
    private Button btnTake = null;
    private ImageView lblImage = null;
    
    private static final int PHOTO_PICKED_WITH_DATA = 3021;
    private static final int CAMERA_WITH_DATA = 3023;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btnTake = (Button)findViewById(R.id.btnTake);
        lblImage = (ImageView)findViewById(R.id.lblImage);
        btnTake.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(intent, CAMERA_WITH_DATA);
            }
        });
        
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode,Intent data) {
        // TODO Auto-generated method stub
        if(resultCode!=RESULT_OK)
            return;
        switch(requestCode){
        case CAMERA_WITH_DATA:
            final Bitmap photo = data.getParcelableExtra("data");
            if(photo!=null){
                doCropPhoto(photo);
            }
        case PHOTO_PICKED_WITH_DATA:
            Bitmap photo1 = data.getParcelableExtra("data");
            if(photo1!=null){
                lblImage.setImageBitmap(photo1);
            }
            
        }
    }
    
    protected void doCropPhoto(Bitmap data){
        Intent intent = getCropImageIntent(data);
        startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);
    }
    
    public static Intent getCropImageIntent(Bitmap data) {
        Intent intent = newIntent("com.android.camera.action.CROP");
        intent.setType("image/*");
        intent.putExtra("data", data);
        intent.putExtra("crop", "true");
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        intent.putExtra("outputX", 128);
        intent.putExtra("outputY", 128);
        intent.putExtra("return-data", true);
        return intent;
    }
 }



完整代码:

package com.chc.android;

 import android.app.Activity;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.os.Bundle;
 import android.provider.MediaStore;
 import android.view.View;
 import android.widget.Button;
 import android.widget.ImageView;

 public class tapgetcut extends Activity {
 private Button btnTake = null;
 private ImageView lblImage = null;

 private static final int PHOTO_PICKED_WITH_DATA = 3021;
 private static final int CAMERA_WITH_DATA = 3023;

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
    
     btnTake = (Button)findViewById(R.id.btn01);
     lblImage = (ImageView)findViewById(R.id.iv01);
     btnTake.setOnClickListener(new View.OnClickListener() {
        
         @Override
         public void onClick(View v) {
             // TODO Auto-generated method stub
             Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
             startActivityForResult(intent, CAMERA_WITH_DATA);
         }
     });
    
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     // TODO Auto-generated method stub
     if(resultCode!=RESULT_OK)
         return;
     switch(requestCode){
     case CAMERA_WITH_DATA:
         final Bitmap photo = data.getParcelableExtra("data");
         if(photo!=null){
             doCropPhoto(photo);
         }
     case PHOTO_PICKED_WITH_DATA:
         Bitmap photo1 = data.getParcelableExtra("data");
         if(photo1!=null){
             lblImage.setImageBitmap(photo1);
         }
        
     }
 }

 protected void doCropPhoto(Bitmap data){
     Intent intent = getCropImageIntent(data);
     startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);
 }

 public static Intent getCropImageIntent(Bitmap data) {
     Intent intent = new Intent("com.android.camera.action.CROP");
     intent.setType("image/*");
     intent.putExtra("data", data);
     intent.putExtra("crop", "true");
     intent.putExtra("aspectX", 1);
     intent.putExtra("aspectY", 1);
     intent.putExtra("outputX", 128);
     intent.putExtra("outputY", 128);
     intent.putExtra("return-data", true);
     return intent;
 }
 }



xml:



 

android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >

     android:id ="@+id/test01"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="@string/hello"
     />
   android:id="@+id/btn01"
       android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="确定"
     />

     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     >