ACTION_GET_CONTENT
允许用户选择特殊种类的数据,并返回(特殊种类的数据:照一张相片或录一段音)
从相册选择图片并剪切
public Intent takeAlbum(Uri imageUri, int x, int y) {
// 调用选择相册裁剪功能
// Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);//部分机型不支持
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
double w = x;
double h = y;
intent.putExtra("aspectX", (int) Math.rint((w / h))); // 设置长和宽的比例
// intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", x); // 设置输出的长
intent.putExtra("outputY", y); // 设置输出的宽
intent.putExtra("scale", true);
intent.putExtra("scaleUpIfNeeded", true);
intent.putExtra("return-data", false);
// 设置是否在给定的Uri 中获取图片
// ture: 在给定的URL中获取图片 false: 相反
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); // 设置输出格式
return intent;
}
拍照并裁剪
public Intent cropBytakeP(Uri uri, int outputX, int outputY) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
double w = outputX;
double h = outputY;
intent.putExtra("crop", "true");
intent.putExtra("aspectX", (int) Math.rint((w / h))); // 设置长和宽的比例
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", outputX); // 设置输出的长
intent.putExtra("outputY", outputY); // 设置输出的宽
intent.putExtra("scale", true);
intent.putExtra("scaleUpIfNeeded", true);
intent.putExtra("return-data", false);
//intent.putExtra("return-data", true);则可以得到返回的Bitmap数据
// 设置是否在给定的Uri 中获取图片
// ture: 在给定的URL中获取图片 false: 相反
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());// 设置输出格式
return intent;
};
通用方法
startActivityForResult(intent, PHOTO_PICKED);
回调方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String action = data.getAction();
final Bundle extras = data.getExtras();
Bitmap bitmap = extras.getParcelable("data");
}