1月 242017
 

之前工作时遇到的问题,趁着春节工作压力不大,总结一下。
声明:本文部分代码取自Android开发之获取相册照片和获取拍照照片 并做了修改
1、从相册或是文件管理器获取
在android中从本地获取图片(不管是相册或是文件系统),调用如下Intent即可:

	public static void getImageFromAlbum(Activity activty, int requestCode) {
		Intent intent = new Intent(Intent.ACTION_PICK);
		intent.setType("image/*");// 相片类型
		activty.startActivityForResult(intent, requestCode);
	}

调用该Intent后,将显示相册、文件系统图标,用户选择后将返回,我们在onActivityReSult中可以获取用户选中图片的Uri

	public void onActivityResult(int requestCode, int resultCode, Intent data){
		if(Activity.RESULT_OK == resultCode){
			if( ALBUM_IMAGE_REQ_CODE == requestCode){
				//do something to the album image
				Uri imageUri = data.getData();
			}
		}
	}

2、调用系统拍照功能获取照片
同样需要以Intent的方式实现,下面的getImageFromCamera方法在调用Intent时如果不设置MediaStore.EXTRA_OUTPUT,那么在onActivityResult中通过Intent获取的图片只是一个缩略图,并不是清晰图片,要想拿到清晰照片必须将其先保存到SD卡上,通过设置MediaStore.EXTRA_OUTPUT、传入一个SD卡路径的Uri对象即可。

        //storageUri必须是一个SD卡地址,以便保存清晰照片
	protected void getImageFromCamera(Activity activity, int requestCode, Uri storageUri) {
		String state = Environment.getExternalStorageState();
		if (state.equals(Environment.MEDIA_MOUNTED)) {
			Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
			getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT, storageUri);
			activity.startActivityForResult(getImageByCamera, requestCode);
		} else {
			Toast.makeText(activity.getApplicationContext(), "请确认已经插入SD卡", Toast.LENGTH_LONG).show();
		}
	}
        //辅助方法,用于生成一个SD卡路径的Uri对象
	private static Uri getImageStorageUri(String sdSaveDir, String imageName){
		Uri uri = null;
		String sdState = Environment.getExternalStorageState();
		if(sdState.equals(Environment.MEDIA_MOUNTED)){
			String imagePath = Environment.getExternalStorageDirectory().getPath()+"/"+sdSaveDir;
			File file = new File(imagePath);
			if(!file.exists()){
				file.mkdir();
			}
			imagePath = imagePath + "/"+imageName;
			uri = Uri.fromFile(new File(imagePath));
		} else {
			//TODO throw exception or do something
		}
		return uri;
	}

参考资料:
Android开发之获取相册照片和获取拍照照片
Android开发之获取相册照片和获取拍照照片二
Android从相册获取图片
Android从相册中获取图片以及路径
Android Camera开发系列(上)——Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片


 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)