在app开发过程中,调用系统的相机和相册进行图片的选择上传是一个基本且普遍的需求,下面就简单介绍下我的实际开发中是如何实现这一需求的。
1.调用系统的相机和相册
/**
* 调用系统相机
*/
private void openCamra() {
if (!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
return;
}
// 指定图片加载路径
File file = new File(Constant.CAMERA_TEMP_PATH);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
Uri uri = Uri.fromFile(file);
Intent intent1 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent1.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent1, Constant.OPEN_CAMER);
}
/**
* 调用系统相册
*/
private void openGallery() {
// 手机相册
Intent choosePicture = new Intent(Intent.ACTION_PICK);
choosePicture.setType("image/*");
startActivityForResult(choosePicture,
Constant.OPEN_ALBUM);
}
调用系统相册比较简单,指定intent的参数即可,建议requestCode放在一个定义好的常量类中。在调用系统相机的时候,首先是判断sd卡是否存在,然后创建一个File文件,然后转换成Url对象传给相机,这样做的好处是指定了相机拍摄的文件路径,返回的时候的可以很方便对该文件进行一系列的处理(压缩,上传等),如果不指定文件路径,返回的图片是一张默认的缩略图,达不到上传的精度。
2.处理返回的图片
主