1

Hello friends I am using the following code in my my project.

PERMISSIONS:

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

XML FILE:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="Camera Test" />
    <ImageView android:id="@+id/camera_image"
        android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>

Code(Java File):

public class ImageInfo extends Activity {
        private static final int CAMERA_PIC_REQUEST = 1111;
    private ImageView mImage;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mImage = (ImageView) findViewById(R.id.camera_image);
        //1
        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, CAMERA_PIC_REQUEST);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultCode != RESULT_CANCELED)   {
            if(requestCode == CAMERA_PIC_REQUEST){
                //2
                System.out.println("Request"+requestCode+"result"+resultCode);
                Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
                //  mImage.setImageBitmap(thumbnail);
                //3
                ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
                //4
                File file = new File(Environment.getExternalStorageDirectory()+"/saved_images/image.jpeg");
                try {
                    file.createNewFile();
                    FileOutputStream fo = new FileOutputStream(file);
                    //5
                    fo.write(bytes.toByteArray());
                    fo.close();
                    Intent intent=new Intent( this,Info.class);
                    startActivity(intent);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        }
    }
}

I am successfully able to operate the camera and take images butan extra copy of image is being created in the DCIM directory (deafult directory) of android by name_date.jpg Please help in deleting all these files. Thanks & regards.....

dilaraates
  • 135
  • 1
  • 1
  • 16
onkar
  • 85
  • 10

3 Answers3

3

This is the complete solution of your problem of deleting the file from dcim folder.

just copy and paste this method. And call it whenever necessary.
private void deleteLatest() {
        // TODO Auto-generated method stub
        File f = new File(Environment.getExternalStorageDirectory() + "/DCIM/Camera" );

        //Log.i("Log", "file name in delete folder :  "+f.toString());
        File [] files = f.listFiles();

        //Log.i("Log", "List of files is: " +files.toString());
        Arrays.sort( files, new Comparator<Object>()
                {
            public int compare(Object o1, Object o2) {

                if (((File)o1).lastModified() > ((File)o2).lastModified()) {
                    //         Log.i("Log", "Going -1");
                    return -1;
                } else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
                    //     Log.i("Log", "Going +1");
                    return 1;
                } else {
                    //     Log.i("Log", "Going 0");
                    return 0;
                }
            }

                });

        //Log.i("Log", "Count of the FILES AFTER DELETING ::"+files[0].length());
        files[0].delete();

    }
Narendra Pal
  • 6,474
  • 13
  • 49
  • 85
  • Thanks mate... this is working wonderful.. I suppose it wont affect files that are stored in Environment.getExternalStorageDirectory() + "/DCIM/Camera" directory... – onkar Aug 09 '12 at 07:35
0

As in the thread @vipsy linked, you can specify the file path URI with

File fileDir = new File(Environment.getExternalStorageDirectory() +
    "/saved_images");
fileDir.mkdirs();

File file = new File(fileDir, "image.jpg");

Uri outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

This way the camera will save the image to the specified path instead of the DCIM folder. You don't have to manually copy it, nor do you have to delete anything.

EDIT: You have to create the folder on the sdcard beforehand, maybe that's the poblem. Otherwise, this should work.

Adam Monos
  • 4,287
  • 1
  • 23
  • 25
0
   File fileOrDirectory= new File(Environment.getExternalStorageDirectory() +
    "/saved_images");

here fileOrDirectory is a path where you are saving images captured by camera .
you can call this method passing file directory when u need;



 void DeleteRecursive(File fileOrDirectory) {
        if (fileOrDirectory.isDirectory())
            for (File child : fileOrDirectory.listFiles())
                DeleteRecursive(child);

        fileOrDirectory.delete();
    }
Mohammod Hossain
  • 4,134
  • 2
  • 26
  • 37