您的位置:首页 > 移动开发 > Android开发

Android 获取照相机图片或本地图片

2013-09-29 14:32 316 查看
网上找了一些代码,我再小米手机上测试,发现还是有的不是很好用,所以找了资料,把代码贴出来分享一下。

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();
}

}


我的代码是写在Fragment里面的。so... 你们懂的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: