我们再做项目的时候,很多地方,都遇到过需要打开手机相册进行拍照,然后将照片上传到服务器。那么下面我就把我项目中打开相机拍照的功能和大家分享一下。

方法一:

1:打开相机

/**

* 调用相机拍照

*/

private void openCamera() {

/**拍照申请权限**/

if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, Constant.APPLYFOR_CAMERA_JURISDICTION);

} else {

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

/** 启动相机*/

startActivityForResult(intent, Constant.REQUEST_THUMBNAIL);

}

}

2:在onActivityResult 方法中,获取到data。

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

switch (requestCode) {

case Constant.REQUEST_THUMBNAIL:

/**

* 通过这种方法取出的拍摄会默认压缩,因为如果相机的像素比较高拍摄出来的图会比较高清,

* 如果图太大会造成内存溢出(OOM),因此此种方法会默认给图片尽心压缩

*/

String takePhotoPath = Utils.getTakePhotoPath(data);

break;

}

}

3:获取到真实路径

/***

* 获取拍照后的路径

* @param data

* @return

*/

public static String getTakePhotoPath(Intent data) {

Bitmap photo = null;

Uri uri = data.getData();

if (uri != null) {

photo = BitmapFactory.decodeFile(uri.getPath());

}

if (photo == null) {

Bundle bundle = data.getExtras()