android:通过选择相册或者拍照获取照片

public final static int CONSULT_DOC_PICTURE = 1000;
public final static int CONSULT_DOC_CAMERA = 1001;

private int SELECT_PICTURE = 0;
private int SELECT_CAMERA = 1;
private ImageView iv;
private Bitmap bmp;
private Uri outputFileUri;

private OnClickListener cameraClickListener = new OnClickListener() {  

        @Override  
        public void onClick(View v) {  
            // TODO Auto-generated method stub  
            CharSequence[] items = { "相册", "相机" };  
            new AlertDialog.Builder(getActivity()).setTitle("选择图片来源").setItems(items, new DialogInterface.OnClickListener() {  
                public void onClick(DialogInterface dialog, int which) {  
                    if (which == SELECT_PICTURE) {  
                        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);  
                        intent.addCategory(Intent.CATEGORY_OPENABLE);  
                        intent.setType("image/*");  
                        startActivityForResult(Intent.createChooser(intent, "选择图片"), CONSULT_DOC_PICTURE);  
                    } else {  

                        File file = new File(Environment.getExternalStorageDirectory(), "textphoto.jpg");  
                        outputFileUri = Uri.fromFile(file);  

                        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
                        intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);  
                        startActivityForResult(intent, CONSULT_DOC_CAMERA);  
                    }  
                }  
            }).create().show();  

        }  
    };  
public void onActivityResult(int requestCode, int resultCode, Intent data) {  
        super.onActivityResult(requestCode, resultCode, data);  

        if (requestCode == ConsultDoctor.CONSULT_DOC_PICTURE) {  

            if(data == null){  
                return;  
            }  

            Uri uri = data.getData();  
            String[] proj = { MediaStore.Images.Media.DATA };  
            Cursor cursor = getActivity().managedQuery(uri, proj, // Which  
                                                                    // columns  
                                                                    // to return  
                    null, // WHERE clause; which rows to return (all rows)  
                    null, // WHERE clause selection arguments (none)  
                    null); // Order-by clause (ascending by name)  

            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);  
            cursor.moveToFirst();  

            String path = cursor.getString(column_index);  

            if (bmp != null)// 如果不释放的话,不断取图片,将会内存不够  
                bmp.recycle();  

            bmp = BitmapFactory.decodeFile(path);  

            iv.setImageBitmap(bmp);  

        } else if (requestCode == ConsultDoctor.CONSULT_DOC_CAMERA) {  
            bmp = BitmapFactory.decodeFile(outputFileUri.getPath());  
            iv.setImageBitmap(bmp);  
        } else {  
            Toast.makeText(getActivity(), "请重新选择图片", Toast.LENGTH_SHORT).show();  
        }  

    }   

这里有点要注意的是File file = new File(Environment.getExternalStorageDirectory(),"textphoto.jpg"); 中“textphoto.jpg”与前面的逗号间不能有空格,copy代码时一定要注意。
iv是指ImageView控件的对象。

该文章转自:http://www.2cto.com/kf/201309/247483.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值