Хранение изображения с камеры в определенной папке путем создания в Android

imgFavorite.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
            open();
         }
      });
   }
   public void open(){
      Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

      startActivityForResult(intent, 0);
   }

   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      // TODO Auto-generated method stub
      super.onActivityResult(requestCode, resultCode, data);
      Bitmap bp = (Bitmap) data.getExtras().get("data");

      imgFavorite.setImageBitmap(bp);
     Uri selectedImageUri = data.getData();
   String selectedImagePath = getRealPathFromURI(selectedImageUri);// this is the location /storage/emulated/0/DCIM/100ANDRO 
});

когда нажата кнопка imgFavorite, она открывает камеру по умолчанию после съемки изображения, которое она сохраняет в расположении по умолчанию, называемом /storage/emulated/0/DCIM/100ANDRO, Но я должен сохранить захваченное изображение в определенной папке, создав в коде Android. Я пробовал много примеров, но это не работает. Может кто-нибудь сказать мне фрагмент для моего кода, чтобы создать папку и сохранить захваченное изображение.

3 ответа

//camera stuff  
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());

//folder stuff   
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
imagesFolder.mkdirs();

File imageFile = new File(imagesFolder, "SC_" + timeStamp + ".png");
Uri uriSavedImage = Uri.fromFile(imageFile);

imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivityForResult(imageIntent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

Попробуйте этот код.

imgFavorite.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {
        open();
     }
      });
   }
public void open(){
      Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(getOutputMediaFile()));//
    startActivityForResult(intent, REQUEST_CODE);
   }

private File getOutputMediaFile() {
    // make a new file directory inside the "sdcard" folder
    File mediaStorageDir = new File(
            Environment.getExternalStorageDirectory(), "/myApp");

    // if this "Camera folder does not exist
    if (!mediaStorageDir.exists()) {
        // if you cannot make this folder return
        if (!mediaStorageDir.mkdirs()) {
            return null;
        }
    }

    // take the current timeStamp
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
            .format(new Date(System.currentTimeMillis()));
    File mediaFile;
    // and make a media file:
    mediaFile = new File(mediaStorageDir.getPath() + File.separator
            + "IMG_" + timeStamp + ".jpg");
    currentFilePath = mediaFile.getAbsolutePath();
    return mediaFile;
}

Открывая камеру, вы можете указать путь для сохранения изображения, которое щелкает ваша камера. Посмотри на

imgFavorite.setOnClickListener(new OnClickListener()  {
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub

                            String imagePath = "filename" + ".jpg";
                            File root = new File(Environment.getExternalStorageDirectory() + File.separator + "Directory_Name" + File.separator+ "" + Constants.ORN);
                            root.mkdirs();
                            if (!root.exists()) {
                                root.mkdir();
                            }

                            File file = new File(Environment.getExternalStorageDirectory() + File.separator + "Directory_Name" + File.separator + "" + Constants.ORN, imagePath);
                            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                            Uri outputFileUri = Uri.fromFile(file);
                            mImageCaptureUri = outputFileUri;
                            intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
                            startActivityForResult(intent, REQUEST_CODE);

                    }
                });

Надеюсь, это работает для вас.

Другие вопросы по тегам