如何添加新功能以重新加载相机图片



1.这些代码用于调用相机并裁剪图片,图像保存在externalStorageDirectory中

2.但问题是:当我退出这个应用程序并再次运行它时,它无法加载图像。

主要活动.java

     public class MainActivity extends Activity {
        public static final int TAKE_PHOTO = 1;
        public static final int CROP_PHOTO = 2;
        private Button takePhoto;
        private ImageView picture;
        private Uri imageUri;
        private Bitmap bitmap;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            takePhoto = (Button) findViewById(R.id.take_photo);
            picture = (ImageView) findViewById(R.id.picture);

            /*
             *need a feature to reload to picture~pls help*
             *****I find that imageUri is alwasys null,why is that?*****
             */
               if(imageUri !=null){  
               try {
              bitmap=BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
                picture.setImageBitmap(bitmap);
    }catch(FileNotFoundException e){
        e.printStackTrace();
    }
}

            takePhoto.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    File outputimage = new File(Environment.getExternalStorageDirectory(),"output_image.jpg");
                    try {
                        if(outputimage.exists())
                        {
                            outputimage.delete();
                        }
                        outputimage.createNewFile();
                    }catch(IOException e){
                        e.printStackTrace();
                    }
                    imageUri = Uri.fromFile(outputimage);
                    Intent intent = new Intent ("android.media.action.IMAGE_CAPTURE");
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
                    startActivityForResult(intent, TAKE_PHOTO);
                }
            });
        }
            @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                // TODO Auto-generated method stub
                super.onActivityResult(requestCode, resultCode, data);
                switch (requestCode){
                case TAKE_PHOTO:
                    if(resultCode == RESULT_OK){
                        Intent intent =new Intent ("com.android.camera.action.CROP");
                        intent.setDataAndType(imageUri, "image/*");
                        intent.putExtra("scale", true);
                        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
                        startActivityForResult(intent, CROP_PHOTO);
                    }
                case CROP_PHOTO:
                    if(resultCode == RESULT_OK){
                        try {
                             bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
                            picture.setImageBitmap(bitmap);
                        }catch(FileNotFoundException e){
                            e.printStackTrace();
                        }
                    }
                        break;
                default:
                        break;
                }
            }
    }

当活动被销毁并再次运行时,"imageUri"将被重新初始化。因此,为了加载图片,我应该重新打开文件并将其设置为ImageView

最新更新