2012-08-09 127 views
1

朋友您好,我在我的項目中使用了以下代碼。刪除SD卡中的圖像副本

權限:

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

XML文件:

<?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> 

代碼(Java文件):

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(); 
       } 

      } 
     } 
    } 
} 

我能夠成功地操作相機和拍攝圖像布坦額外副本正在通過name_date.jpg在DCIM的DCIM目錄(deafult目錄)中創建圖像 請幫助刪除所有這些文件。 感謝&問候.....

+0

檢查這個問題, http://stackoverflow.com/questions/6390163/deleting-a-gallery-image-after-camera-intent-photo-taken – vipsy 2012-08-09 07:09:38

+0

@onkar。你有解決方案嗎? – 2012-08-09 07:18:17

+0

@nick隊友試圖很難理解,但無法得到它... – onkar 2012-08-09 07:19:45

回答

2

這是從dcim文件夾中刪除文件的問題的完整解決方案。

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(); 

    } 
+0

感謝隊友......這工作很好..我想它不會影響存儲在Environment.getExternalStorageDirectory()+「/ DCIM中的文件/ Camera「目錄... – onkar 2012-08-09 07:35:07

+1

@onkar。很高興爲您效勞。 – 2012-08-09 07:45:58

0

作爲連接線程@vipsy,你可以指定

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); 

這樣的文件路徑URI相機將圖像保存到指定的路徑,而不是DCIM文件夾。 您不必手動複製它,也不需要刪除任何東西。

編輯:你必須事先創建在SD卡的文件夾,也許這就是poblem。否則,這應該工作。

+0

確定隊友會給這個代碼試一試 – onkar 2012-08-09 07:21:44

+0

沒有隊友這個代碼不工作..仍然是同一個問題:( – onkar 2012-08-09 07:28:09

+0

你把它放在哪裏?你必須 – 2012-08-09 07:29:16

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(); 
    }