获取系统照相机的图片并加入剪切功能

获取系统相机的图片并加入剪切功能
package com.example.imagedemo001;

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

/**
 * 
 * 功能:调用Android系统的的照相功能,获取图片信息 <br />
 * 日期:2012-12-26<br />
 * 版本:ver 1.0<br />
 * 
 * @author fighter
 * @since
 */
public class Main extends Activity {
	/** 调用系统相机 */
	private final int TAKE_PICTURE = 1001;
	/* 将图片切割 */
	private final int FORMAT_PICTURE = 1003;

	private Button btnTake;
	private ImageView imgView;

	private OnClickListener btnClickListener;

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

		this.initWidget();
		this.initParam();
		this.initBtnListener();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (TAKE_PICTURE == requestCode && RESULT_OK == resultCode
				&& null != data) {
			Bitmap bitmap = data.getParcelableExtra("data");
			if(null != bitmap){
				doCorpImage(bitmap);
			}
		}else if(FORMAT_PICTURE == requestCode && RESULT_OK == resultCode
				&& null != data){
			Bitmap bitmap = data.getParcelableExtra("data");
			if(null != bitmap){
				this.imgView.setImageBitmap(bitmap);
			}
		}
		super.onActivityResult(requestCode, resultCode, data);
	}

	private void initWidget() {
		this.btnTake = (Button) findViewById(R.id.btnTake);
		this.imgView = (ImageView) findViewById(R.id.imgView);
	}

	private void initParam() {
		this.btnClickListener = new BtnOnClickLisenerImpl();
	}

	private void initBtnListener() {
		this.btnTake.setOnClickListener(btnClickListener);
	}

	private void doCorpImage(Bitmap bm){
		Intent intent = getCropImageIntent(bm);
		startActivityForResult(intent, FORMAT_PICTURE);
	}
	
	/*
	 * 格式后的参数...
	 * */
	private Intent getCropImageIntent(Bitmap bm) {
		Intent intent = new Intent("com.android.camera.action.CROP");
		intent.setType("image/*");
		intent.putExtra("data", bm);
		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;
	}

	class BtnOnClickLisenerImpl implements OnClickListener {

		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.btnTake:
				takePicture((Button) v);
				break;

			default:
				break;
			}
		}

		private void takePicture(Button btn) {
			Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
			startActivityForResult(intent, TAKE_PICTURE);
		}

	}
}