简体   繁体   中英

I know how to make a button open the camera, but I don't how to change the location of the photos that are taken, how can I do this?

I have a button for my camera, but I can't figure out how to make the pictures taken get stored somewhere else. Can you help? My code that I've already got for this button:

  <Button style="@style/ButtonsAtHome" android:onClick="cameraButton" 
  android:textColor="#4CAF50" android:text="CAMERA" />

Java:

public void cameraButton(View view) {
    Intent openCamera = new 
Intent("android.media.action.IMAGE_CAPTURE");
    startActivity(openCamera);
    getWindow().setBackgroundDrawable(null);
}

This button opens the camera, but it saves in a default directory, but I don't want it to save there, how can I change the directory, or make the image show up after I take it, so I can edit it. (My app is a photo-editor)

You can use below code to take picture and then store in your app directory:

Open the camera

public void openCamera(View view){
        Intent openCamera = new
                Intent("android.media.action.IMAGE_CAPTURE");
        startActivityForResult(openCamera,1);
        getWindow().setBackgroundDrawable(null);

    }

Get the result in onActivityResult() // modify it according to your own need

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case 1:
                Bitmap photo = (Bitmap) data.getExtras().get("data");
                createDirectoryAndSaveFile(photo,"fileName");
        }
    }

Save image in specified folder

private void saveImageToFolder(Bitmap image, String fileName) {

        File directoryName = new File(Environment.getExternalStorageDirectory() + "/MyAppDirectory");

        if (!directoryName.exists()) {
            directoryName.mkdir();
        }

        File file = new File(new File("/sdcard/MyAppDirectory/"), fileName + ".JPEG");
        if (file.exists()) {
            file.delete();
        }
        try {
            FileOutputStream out = new FileOutputStream(file);
            imageToSave.compress(Bitmap.CompressFormat.JPEG, 100, out);
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Add necessary permission :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM