Android 相册 和 相机取照 并裁减

来源:互联网 发布:淘宝隐形降权查哪里看 编辑:程序博客网 时间:2024/04/30 14:02
代码如下 , 宏自定义, 保持和 回调方法里边的一致便可  有问题可留言  
 private void showSelectAlert() {        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());        builder.setTitle("请选择");        String str[] = {"相册", "相机"};        builder.setItems(str, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterfacem, int i) {                switch (i) {                    case PHOTO:                        showPhotoSelect();                        break;                    case CAMERA:                        showCameraSeclect();                        break;                }            }        });        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterfacem, int i) {            }        });        builder.show();    }    /*    *    * 采集头像方法    * */    private void showPhotoSelect() {        Intent intentFromGallery = new Intent();        intentFromGallery.setAction(Intent.ACTION_PICK);//Pick an item from the data        intentFromGallery.setType("image/*");//从所有图片中进行选择        startActivityForResult(intentFromGallery, CODE_GALLERY_REQUEST);    }    private void showCameraSeclect() {        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "demo.jpg")));        startActivityForResult(intent, CODE_CAMERA_REQUEST);    }    @Override    public void onActivityResult(int requestCode, int resultCode, Intent data) {        if (resultCode != getActivity().RESULT_OK)            return;        switch (requestCode) {            case CODE_GALLERY_REQUEST: {                Uri uri = data.getData();                cropRawPhotoCamera(uri);            }            break;            case CODE_CAMERA_REQUEST:                File picture = new File(Environment.getExternalStorageDirectory() + "/demo.jpg");                cropRawPhotoCamera(Uri.fromFile(picture));                break;            case CODE_RESULT_REQUEST:                Bundle extras = data.getExtras();                if (extras != null) {                    Bitmap photo = extras.getParcelable("data");                    if (photo == null) {                        String filePath = extras.getString("filePath");                        if (!StringUtils.isEmpty(filePath))                            photo = Constant.decodeSampledBitmapFromFile(filePath, 200, 200);                    }                    ByteArrayOutputStream stream = new ByteArrayOutputStream();                    if (photo != null) {                        photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);                    }                    setImageToHeadView(photo);                }                break;        }    }    /**     * 裁剪原始的图片     */    public void cropRawPhotoCamera(Uri uri) {        Intent intent = new Intent("com.android.camera.action.CROP");        intent.setDataAndType(uri, "image/*");        intent.putExtra("crop", "true");        intent.putExtra("aspectX", 1);        intent.putExtra("aspectY", 1);        intent.putExtra("outputX", 200);  //注意两个数值不要过大, 否则可能导致内存问题        intent.putExtra("outputY", 200);        intent.putExtra("return-data", true);        startActivityForResult(intent, CODE_RESULT_REQUEST);    }

0 0
原创粉丝点击