gongzhiyao0 2013-04-11
用下面的方法获得的直接就是大图片:
/**
* 拍照并把照片保存到SD卡filePath路径下
*
* @author Bottle
*
* @Date 2013-4-10 上午10:35:58
*/
public class TakePhoto extends Activity {
private Context mContext;
private String filePath;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = TakePhoto.this;
String state = Environment.getExternalStorageState(); // 判断是否存在sd卡
if (state.equals(Environment.MEDIA_MOUNTED)) { // 直接调用系统的照相机
Intent intent = new Intent("Android.media.action.IMAGE_CAPTURE");
filePath = getFileName();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(filePath)));
startActivityForResult(intent, 0);
} else {
showToast("请检查手机是否有SD卡");
}
}
/**
* 生成文件路径和文件名
*
* @return
*/
private String getFileName() {
String saveDir = Environment.getExternalStorageDirectory() + "/myPic";
File dir = new File(saveDir);
if (!dir.exists()) {
dir.mkdir(); // 创建文件夹
}
//用日期作为文件名,确保唯一性
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
String fileName = saveDir + "/" + formatter.format(date) + ".PNG";
return fileName;
}
//拍摄完成后执行
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//返回值==-1表示拍摄成功
if (resultCode == -1) {
showToast("图片保存到" + filePath);
} else {
showToast("拍摄图片失败");
}
this.finish();
}
/**
* 显示Toast
*
* @param content
*/
protected void showToast(String showText) {
Toast.makeText(mContext, showText, Toast.LENGTH_SHORT).show();
}
}
Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像。Problem: 拍好照片,点击裁剪,弹Toast“无法加载此图片”。Solution: 在裁剪的class里加两行代码