Android 调用系统打开相机,打开相册获取图片路径

我们在开发中经常遇到一些功能需要调取系统相机拍照获取图片,或者有的时候直接打开图库获取图片,那我们怎么获取呢,今天分享下,

第一步,打开相机

	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;
		}
	}

以上就是我们的使用方法,使用起来还是很简单的,小伙伴们如有不明白的地方,或者是写的不好的地方,欢迎留言

猜你喜欢

转载自blog.csdn.net/qq_28643195/article/details/108019324