Android - Taking photos and saving them with a custom name to a custom destination via Intent

前端 未结 3 862
日久生厌
日久生厌 2020-11-28 10:41

I have a program that opens the camera via Intent to take a photo. That much part works fine already. However, I want it to save to a certain folder with a certain file name

相关标签:
3条回答
  • 2020-11-28 11:25

    this may help u

    File file=new File(Environment.getExternalStorageDirectory(),"file name");
    
    button.setOnClickListener(new OnClickListener() {
    
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            opencam();
        }
    });
    
    protected void opencam() {
        Intent in = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);    
        in.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(file));
        startActivityForResult(in,1);
    }
    
    0 讨论(0)
  • 2020-11-28 11:37

    Here's the code that made it work:

    //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 image = new File(imagesFolder, "QR_" + timeStamp + ".png");
    Uri uriSavedImage = Uri.fromFile(image);
    
    imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
    startActivityForResult(imageIntent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
    

    It opens the camera and takes exactly one shot (it goes back to the main activity after the user saves the image that was taken. It saves the image to the specified folder.

    0 讨论(0)
  • 2020-11-28 11:38

    You can get your photo in your folder but for that you will have to pass the filename with the intent using below code

    Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    File out = Environment.getExternalStorageDirectory();
    out = new File(out, imagename);
    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));
    startActivityForResult(i, CAMERA_RESULT);
    

    The out file contains the full path and the file name.

    Now handle the onActivityResult() method and check the status of the result if the result is RESULT_OK then use the file name which you have supplied with the intent to access the photo.

    You can refer How to get camera result as a uri in data folder? for more options.

    Edit

    You are getting data.getData() to null because it will be null if you pass the file url with the intent. Indeed you have already file path which you are passing with the Intent so why you are trying to fetch it from the bundle in onActivityResult() ?

    0 讨论(0)
提交回复
热议问题