之前写过一个拍照+回传的功能,觉得不错,记下来。
/**
* 拍照
*
*/
private void goPicture() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//开始拍照
//设置路径
strImgPath = Environment.getExternalStorageDirectory().toString() + "/YDSW_PIC/";
userNumber = etUserNubmer.getText().toString().trim();
if (null != userNumber && !TextUtils.isEmpty(userNumber)) {
//给照片命名
fileName = getPhotoFileName() + ".jpg";
} else {
ViewUtils.showToast("请选择用户", getApplicationContext());
return;
}
//创建新文件
File out = createNewFile(strImgPath, fileName);
// 该照片的绝对路径
strImgPath = strImgPath + fileName;
//根据uri保存照片
Uri uri = Uri.fromFile(out);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
//保存照片的质量
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
startActivityForResult(intent, CAMERA_RESULT);//启动相机拍照
}
private File createNewFile(String strImgPath, String fileName) {
File out = new File(strImgPath);
if (!out.exists()) {
out.mkdirs();
}
File file = new File(strImgPath, fileName);
return file;
}
private String getPhotoFileName() {
//用户编号为图片的名字
//先取用户编号,取不到的情况下不拍照
String userNumber = baseUserNo;
return userNumber;
}
然后通过onActivityResult()这个方法的回调来执行后续的赋值操作
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == 1) {
//压缩图片
Bitmap compress = BitmapCompressor.decodeSampledBitmapFromFile(strImgPath, 600, 450);
//保存图片
BitmapCompressor.saveBitmapFile(waterMark, strImgPath);
//给iv赋值
imageViewOcrView.setImageBitmap(waterMark);
}
}