PhotoCameraDialog dialog = new PhotoCameraDialog(this);
dialog.setClick(new PhotoCameraDialog.CameraOrPhoto() {
@Override
public void clickCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_TYPE);
}
@Override
public void clickPhoto() {
Intent intent2 = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent2, PHOTO_TYPE);
}
});
dialog.show();
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("凉城相册requestCode", requestCode + "");
if (requestCode == PHOTO_TYPE) {
if (data != null) {
if (resultCode == RESULT_OK) {
// 得到图片的全路径
Uri uri = data.getData();
// startCropActivity(uri);
startPhotoZoom(uri);
}
}
}
if(requestCode == CAMERA_TYPE){
if(data != null){
if(resultCode == RESULT_OK){
Bundle extras = data.getExtras();
Bitmap bitmap = (Bitmap) extras.get("data");
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null,null));
startPhotoZoom(uri);
}
}
}
if (requestCode == 3) {
advertImg.setImageURI(Uri.fromFile(file2));
initImg();
}
}
private File file2;
//裁剪并压缩图片
public void startPhotoZoom(Uri uri) {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
file2 = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), System.currentTimeMillis() + ".jpg");
}
Intent intent = new Intent("com.android.camera.action.CROP"); // 裁剪图片意图
intent.setDataAndType(uri, "image/*");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 393);//裁剪框 X 比值
intent.putExtra("aspectY", 698);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file2));
intent.putExtra("return-data", false); //是否在Intent中返回数据
intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString());// 图片格式
intent.putExtra("noFaceDetection", true);// 取消人脸识别
startActivityForResult(intent, 3);
}