android调用系统相机,系统图库,系统剪裁图片

1、常量定义

    public static String SDPATH = Environment.getExternalStorageDirectory()
            + "/Pictures/";
    private final int TAKE_PICTURE = 0x01;
    private final int ALBUM = 0x02;
    private final int PHOTO_REQUEST_CUT = 0x03;
    private File tempFile;

2、接收数据

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        switch (requestCode ) {
        case TAKE_PICTURE://拍照
            startPhotoZoom(Uri.fromFile(tempFile));
            break;
        case ALBUM://图库
            if (null == data) {
                break;
            }
            Uri selectImage = data.getData();
            startPhotoZoom(selectImage);
            break;
        case PHOTO_REQUEST_CUT:
            if (null == data) {
                break;
            }
            setResult(RESULT_OK, data);
            //传给下一步,可通过Bitmap bm = (Bitmap) data.getExtras().get("data");获得裁剪后的bitmap对象
            this.finish();
            break;
        default:
            break;
        }

    }else {
        this.finish();//取消
    }
}

2、调用系统相机

//打开系统相机
private void OpenCamera(){
    tempFile = new File(SDPATH +getPhotoFileName());
    Intent openCameraIntent = new Intent(
                    MediaStore.ACTION_IMAGE_CAPTURE);
    openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                      Uri.fromFile(tempFile));//将拍照保存本地
    startActivityForResult(openCameraIntent, TAKE_PICTURE);
}

3、调用系统图库

//打开系统图库方法
private void openAlbum(){
    Intent openAlbumIntent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(openAlbumIntent, ALBUM);
}

4、调用系统裁剪图片的方法

//开始裁剪
    private void startPhotoZoom(Uri uri) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        // crop为true是设置在开启的intent中设置显示的view可以剪裁
        intent.putExtra("crop", "true");
        // aspectX aspectY 是宽高的比例
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        // outputX,outputY 是剪裁图片的宽高
        intent.putExtra("outputX", 300);
        intent.putExtra("outputY", 300);
        intent.putExtra("return-data", true);
        intent.putExtra("noFaceDetection", true);
        startActivityForResult(intent, PHOTO_REQUEST_CUT);
    }

5、生成拍照文件名的方法

// 使用系统当前日期加以调整作为照片的名称
    private String getPhotoFileName() {
        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat dateFormat = new SimpleDateFormat(
                "'IMG'_yyyyMMddHHmmss");
        return dateFormat.format(date) + ".jpg";
    }

5、创建一个文件的方法

private void createNewFile(File file){
        if (!file.exists()) {
            file.getParentFile().mkdirs();
            try {
                file.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }   
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值