content: package com.rsen.github.androidutilcode;
  
  import android.app.Activity;
  import android.content.ContentResolver;
  import android.content.Intent;
  import android.database.Cursor;
  import android.graphics.Bitmap;
  import android.net.Uri;
  import android.os.Bundle;
  import android.provider.MediaStore;
  
  import java.io.File;
  import java.io.IOException;
  
  /**
   * <pre>
   *     author: Blankj
   *     blog  : http://blankj.com
   *     time  : 2016/9/19
   *     desc  : 相机相关工具类
   * </pre>
   */
  public class CameraUtils {
  
  //    private CameraUtils() {
  //        throw new UnsupportedOperationException("u can't instantiate me...");
  //    }
  //
  //    /**
  //     * 获取打开照程序界面的Intent
  //     */
  //    public static Intent getOpenCameraIntent() {
  //        return new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  //    }
  //
  //    /**
  //     * 获取跳转至相册选择界面的Intent
  //     */
  //    public static Intent getImagePickerIntent() {
  //        Intent intent = new Intent(Intent.ACTION_PICK, null);
  //        return intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
  //    }
  //
  //    /**
  //     * 获取[跳转至相册选择界面,并跳转至裁剪界面，默认可缩放裁剪区域]的Intent
  //     */
  //    public static Intent getImagePickerIntent(int outputX, int outputY, Uri fromFileURI,
  //                                              Uri saveFileURI) {
  //        return getImagePickerIntent(1, 1, outputX, outputY, true, fromFileURI, saveFileURI);
  //    }
  //
  //    /**
  //     * 获取[跳转至相册选择界面,并跳转至裁剪界面，默认可缩放裁剪区域]的Intent
  //     */
  //    public static Intent getImagePickerIntent(int aspectX, int aspectY, int outputX, int outputY, Uri fromFileURI,
  //                                              Uri saveFileURI) {
  //        return getImagePickerIntent(aspectX, aspectY, outputX, outputY, true, fromFileURI, saveFileURI);
  //    }
  //
  //    /**
  //     * 获取[跳转至相册选择界面,并跳转至裁剪界面，可以指定是否缩放裁剪区域]的Intent
  //     *
  //     * @param aspectX     裁剪框尺寸比例X
  //     * @param aspectY     裁剪框尺寸比例Y
  //     * @param outputX     输出尺寸宽度
  //     * @param outputY     输出尺寸高度
  //     * @param canScale    是否可缩放
  //     * @param fromFileURI 文件来源路径URI
  //     * @param saveFileURI 输出文件路径URI
  //     */
  //    public static Intent getImagePickerIntent(int aspectX, int aspectY, int outputX, int outputY, boolean canScale,
  //                                              Uri fromFileURI, Uri saveFileURI) {
  //        Intent intent = new Intent(Intent.ACTION_PICK);
  //        intent.setDataAndType(fromFileURI, "image/*");
  //        intent.putExtra("crop", "true");
  //        intent.putExtra("aspectX", aspectX <= 0 ? 1 : aspectX);
  //        intent.putExtra("aspectY", aspectY <= 0 ? 1 : aspectY);
  //        intent.putExtra("outputX", outputX);
  //        intent.putExtra("outputY", outputY);
  //        intent.putExtra("scale", canScale);
  //        // 图片剪裁不足黑边解决
  //        intent.putExtra("scaleUpIfNeeded", true);
  //        intent.putExtra("return-data", false);
  //        intent.putExtra(MediaStore.EXTRA_OUTPUT, saveFileURI);
  //        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
  //        // 去除人脸识别
  //        return intent.putExtra("noFaceDetection", true);
  //    }
  //
  //    /**
  //     * 获取[跳转至相册选择界面,并跳转至裁剪界面，默认可缩放裁剪区域]的Intent
  //     */
  //    public static Intent getCameraIntent(Uri saveFileURI) {
  //        Intent mIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  //        return mIntent.putExtra(MediaStore.EXTRA_OUTPUT, saveFileURI);
  //    }
  //
  //    /**
  //     * 获取[跳转至裁剪界面,默认可缩放]的Intent
  //     */
  //    public static Intent getCropImageIntent(int outputX, int outputY, Uri fromFileURI,
  //                                            Uri saveFileURI) {
  //        return getCropImageIntent(1, 1, outputX, outputY, true, fromFileURI, saveFileURI);
  //    }
  //
  //    /**
  //     * 获取[跳转至裁剪界面,默认可缩放]的Intent
  //     */
  //    public static Intent getCropImageIntent(int aspectX, int aspectY, int outputX, int outputY, Uri fromFileURI,
  //                                            Uri saveFileURI) {
  //        return getCropImageIntent(aspectX, aspectY, outputX, outputY, true, fromFileURI, saveFileURI);
  //    }
  //
  //
  //    /**
  //     * 获取[跳转至裁剪界面]的Intent
  //     */
  //    public static Intent getCropImageIntent(int aspectX, int aspectY, int outputX, int outputY, boolean canScale,
  //                                            Uri fromFileURI, Uri saveFileURI) {
  //        Intent intent = new Intent("com.android.camera.action.CROP");
  //        intent.setDataAndType(fromFileURI, "image/*");
  //        intent.putExtra("crop", "true");
  //        // X方向上的比例
  //        intent.putExtra("aspectX", aspectX <= 0 ? 1 : aspectX);
  //        // Y方向上的比例
  //        intent.putExtra("aspectY", aspectY <= 0 ? 1 : aspectY);
  //        intent.putExtra("outputX", outputX);
  //        intent.putExtra("outputY", outputY);
  //        intent.putExtra("scale", canScale);
  //        // 图片剪裁不足黑边解决
  //        intent.putExtra("scaleUpIfNeeded", true);
  //        intent.putExtra("return-data", false);
  //        // 需要将读取的文件路径和裁剪写入的路径区分，否则会造成文件0byte
  //        intent.putExtra(MediaStore.EXTRA_OUTPUT, saveFileURI);
  //        // true-->返回数据类型可以设置为Bitmap，但是不能传输太大，截大图用URI，小图用Bitmap或者全部使用URI
  //        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
  //        // 取消人脸识别功能
  //        intent.putExtra("noFaceDetection", true);
  //        return intent;
  //    }
  //
  //    /**
  //     * 获得选中相册的图片
  //     *
  //     * @param context 上下文
  //     * @param data    onActivityResult返回的Intent
  //     * @return bitmap
  //     */
  //    public static Bitmap getChoosedImage(Activity context, Intent data) {
  //        if (data == null) return null;
  //        Bitmap bm = null;
  //        ContentResolver cr = context.getContentResolver();
  //        Uri originalUri = data.getData();
  //        try {
  //            bm = MediaStore.Images.Media.getBitmap(cr, originalUri);
  //        } catch (IOException e) {
  //            e.printStackTrace();
  //        }
  //        return bm;
  //    }
  //
  //    /**
  //     * 获得选中相册的图片路径
  //     *
  //     * @param context 上下文
  //     * @param data    onActivityResult返回的Intent
  //     * @return
  //     */
  //    public static String getChoosedImagePath(Activity context, Intent data) {
  //        if (data == null) return null;
  //        String path = "";
  //        ContentResolver resolver = context.getContentResolver();
  //        Uri originalUri = data.getData();
  //        if (null == originalUri) return null;
  //        String[] projection = {MediaStore.Images.Media.DATA};
  //        Cursor cursor = resolver.query(originalUri, projection, null, null, null);
  //        if (null != cursor) {
  //            try {
  //                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  //                cursor.moveToFirst();
  //                path = cursor.getString(column_index);
  //            } catch (IllegalArgumentException e) {
  //                e.printStackTrace();
  //            } finally {
  //                try {
  //                    if (!cursor.isClosed()) {
  //                        cursor.close();
  //                    }
  //                } catch (Exception e) {
  //                    e.printStackTrace();
  //                }
  //            }
  //        }
  //        return StringUtils.isEmpty(path) ? originalUri.getPath() : null;
  //    }
  //
  //    /**
  //     * 获取拍照之后的照片文件（JPG格式）
  //     *
  //     * @param data     onActivityResult回调返回的数据
  //     * @param filePath 文件路径
  //     * @return 文件
  //     */
  //    public static File getTakePictureFile(Intent data, String filePath) {
  //        if (data == null) return null;
  //        Bundle extras = data.getExtras();
  //        if (extras == null) return null;
  //        Bitmap photo = extras.getParcelable("data");
  //        File file = new File(filePath);
  //        if (ImageUtils.save(photo, file, Bitmap.CompressFormat.JPEG)) return file;
  //        return null;
  //    }
  }
  