之前用到的,现在也贴出来吧,供以后自己使用,大家有用到直接那就就好
首先定义两个常量:
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
private static final int PICK_IMAGE_ACTIVITY_REQUEST_CODE = 200;
// 拍照
public void takePicture() {
String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File outDir = new File(Environment.getExternalStorageDirectory()+"/下户宝/Image/");
if (!outDir.exists()) {
outDir.mkdirs();
}
File outFile = new File(outDir, System.currentTimeMillis() + ".jpg");
picFileFullName = outFile.getAbsolutePath();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(outFile));
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
} else {
Log.e(tag, "请确认已经插入SD卡");
}
}
重写onActivityResult方法,在方法里去判断结果,
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Log.e(tag, "获取图片成功,path=" + picFileFullName);
toast("获取图片成功,path=" + picFileFullName);
setImageView(picFileFullName);
} else if (resultCode == RESULT_CANCELED) {
// 用户取消了图像捕获
} else {
// 图像捕获失败,提示用户
Log.e(tag, "拍照失败");
}
} else if (requestCode == PICK_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
if (uri != null) {
String realPath = getRealPathFromURI(uri);
Log.e(tag, "获取图片成功,path=" + realPath);
toast("获取图片成功,path=" + realPath);
setImageView(realPath);
} else {
Log.e(tag, "从相册获取图片失败");
}
}
}
}