android 系统相机返回图片(为原图)

权限

 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.CAMERA"></uses-permission>

跳转到照相机

    private void  intent_Carmer(){
        String state = Environment.getExternalStorageState();
//        获取SD卡状态
        if (state.equals(Environment.MEDIA_MOUNTED)) {
//            如果SD卡存在且可读、可写
            File file = new File(path);
//             这里新建文件夹。path为图片保存路径
            if (!file.exists()) {
//                如果文件不存在
                file.mkdir();
//                新建文件
            }
        }
        String fileName = getPhotoFileName() + ".jpg";
//        图片名,这里是时间
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//        MediaStore.ACTION_IMAGE_CAPTURE为跳转到相机
        path_carmer =path + fileName;
//        path_carmer为字符串全局变量》》》》图片最终路径
           Uri uri     = Uri.fromFile(new File(path_carmer));
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
//        匹配自己设置的图片保存地址
        startActivityForResult(intent,TAKE_PHOTO);
//        开始跳转

    }

getPhotoFileName()返回图片名(这里名字为时间)

 private String getPhotoFileName() {
        Date date = new Date(System.currentTimeMillis());
        //System.currentTimeMillis()——————》时间
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");

        return "IMG_" + dateFormat.format(date);
    }

path_carmer 全局字符串变量

private String path_carmer;//照相机图片最终存储路径

path 图片保存路径(这里相册会出现DCIM文件夹)

    private String path = Environment.getExternalStorageDirectory()
         + File.separator + Environment.DIRECTORY_DCIM + File.separator;

TAKE_PHOTO为请求标识

private static final int TAKE_PHOTO=1222;

完成上述步骤后,面对的就是相机点确定后imageView显示图片

  case TAKE_PHOTO:
                    FileInputStream fis = null;
                    try {
                        fis=new FileInputStream(path_carmer);
                        Bitmap bitmap=BitmapFactory.decodeStream(fis);
                        img.setImageBitmap(bitmap);
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    }finally {
                        try {
                            fis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

显示图片须在OnActivityResult()方法中,这个方法是重写的,有三个参数

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //requestCode请求标识;resultCode结果标识;data数据
        super.onActivityResult(requestCode, resultCode, data);
        }

case是用我用switch判断requestCode。

注意点:

这里显示图片我是用自己设置的地址,所以data数据是为空

文件操作要捕获异常

如果手机为ANDROID 6.0以上要动态加载权限

猜你喜欢

转载自blog.csdn.net/fruit_fruit/article/details/78702463