接上文使用照相机获取图片,这里与上文布局一致,还是一个Button一个ImageView
点这里查看——调用系统相机获取图像
由于调用系统相机和系统相册都要使用Intent并传递requstCode,为了区分,所以使用常量来代表
private static int RESULT_ADD_PIC_FROM_CAMERA =1;
private static int RESULT_ADD_PIC_FROM_ALBUM =2;
将Button的内容用函数来表示,方便调用:
public void add_pic_from_album(){
add_pic_for_album=(Button)findViewById(R.id.add_picture_from_album);
image_album=(ImageView)findViewById(R.id.image_album);
add_pic_for_album.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent_album=new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent_album.setType("image/*");
startActivityForResult(intent_album,RESULT_ADD_PIC_FROM_ALBUM);
}
});
}
之后,修改onActivityResult中的内容
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//----------------------------拍照请求----------------------------------
if (requestCode==RESULT_ADD_PIC_FROM_CAMERA && resultCode==RESULT_OK) {
try{
//建议使用设置bitmap而不用setImageUri
Bitmap bitmap=MediaStore.Images.Media.getBitmap(ContentActivity.this.getContentResolver(),Uri.fromFile(image_camera_file));
image_camera.setImageBitmap(bitmap);
image_camera.setVisibility(View.VISIBLE);
}
//记得要用异常捕获
catch (Exception e)
{
Log.v("ContentActivity","Expection"+Log.getStackTraceString(e));
return;
}
}
//-------------------------相册选择请求----------------------------------
else if (requestCode==RESULT_ADD_PIC_FROM_ALBUM && resultCode==RESULT_OK) {
try{
Uri imageuri=data.getData();
Bitmap bitmap= BitmapFactory.decodeStream(getContentResolver().openInputStream(imageuri));
image_album.setImageBitmap(bitmap);
image_album.setVisibility(View.VISIBLE);
}
catch (Exception e)
{
Log.v("ContentActivity","Expection"+Log.getStackTraceString(e));
return;
}
}
}