我们在开发中经常遇到一些功能需要调取系统相机拍照获取图片,或者有的时候直接打开图库获取图片,那我们怎么获取呢,今天分享下,
第一步,打开相机
public static final int CAMERA = 1025;// 拍照的请求码
public static final int ALBUM = 1026;// 选择图片的请求码
/*
* 设置从相机获取图片,返回图片路径
*/
public static String getImgFromCamra(Context context) {
String state = Environment.getExternalStorageState();
File mFolder;
String mImgName;
// 先检测是不是有内存卡。
if (state.equals(Environment.MEDIA_MOUNTED)) {
mFolder = new File(Environment.getExternalStorageDirectory(),
"bCache");
// 判断手机中有没有这个文件夹,没有就新建。
if (!mFolder.exists()) {
mFolder.mkdirs();
}
// 自定义图片名字,这里是以毫秒数作为图片名。
mImgName = System.currentTimeMillis() + ".jpg";
Uri uri = Uri.fromFile(new File(mFolder, mImgName));
// 调用系统拍照功能。打开箱机
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
context.startActivityForResult(intent, CAMERA);
return mFolder + File.separator + mImgName;
} else {
Toast.makeText(context, "未检测到SD卡", Toast.LENGTH_SHORT).show();
return null;
}
}
第二步,打开相册
/*
* 设置从本地相册获取图片
*/
public static void getImgFromAlbum(Context context) {
// 调用本地图库。
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
context.startActivityForResult(intent, ALBUM);
}
以上两步我们就是打开系统的相机和相册,打开之后拍照成功,或者选中文件之后怎么接收呢,请看以下:
第三步 调用,获取回调地址
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_photograph_phone:// 从手机选择
UtilView.getImgFromAlbum(PhotoGraph.this);
break;
case R.id.bt_photograph_paizhao:// 拍照
photoLocalPath = UtilView.getImgFromCamra(PhotoGraph.this);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case CAMERA:// 拍照
if (resultCode == RESULT_OK ) {
// 已经获取到图片路径了
//photoLocalPath即为路径 已经获取到
}
break;
case ALBUM:// 图库选择
if (resultCode == RESULT_OK && data != null) {
// 获取本地相册图片。
Uri uri = data.getData();
}
break;
}
}
注:以上是但图片,多图片选择请点击下方
1.多图片选择 请点击使用Album框架
2.多图片选择 请点击使用PictureSelector框架框架
以上就是我们的使用方法,使用起来还是很简单的,小伙伴们如有不明白的地方,或者是写的不好的地方,欢迎留言