2011-12-19 40 views
4

我在 http://developer.android.com/guide/topics/media/camera.html 使用說明書,但我有一個問題。此代碼保存圖像兩次。第一張照片保存在/ sdcard/DCIM/Camera中,第二張照片保存在/ sdcard/PicturesMyCameraApp中。我如何刪除第一次保存到/ sdcard/DCIM /相機。 感謝您的幫助Double save image

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
     case R.id.imageButton1: 
      Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      i.putExtra(MediaStore.EXTRA_OUTPUT, getOutputMediaFileUri()); 
      startActivityForResult(i, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 
     break; 
    } 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu){ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mainmenu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item){ 
    switch (item.getItemId()) { 
     case R.id.item1: 
      /*Intent intent = new Intent(ZodiacActivity.this, AboutActivity.class); 
      startActivity(intent);*/ 
     break; 
     case R.id.item2: 
      this.moveTaskToBack(true); 
     break; 
    } 
    return true; 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode==CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) { 
     if (resultCode==RESULT_OK) { 
      Toast.makeText(this, "Uloženo do: " + getOutputMediaFileUri().toString(), Toast.LENGTH_LONG).show(); 
     } 
     else { 
      return; 
     } 
    } 
} 

public Uri getOutputMediaFileUri(){ 
     return Uri.fromFile(getOutputMediaFile()); 
} 

public File getOutputMediaFile(){ 
    // To be safe, you should check that the SDCard is mounted 
    // using Environment.getExternalStorageState() before doing this. 

    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyCameraApp"); 
    // This location works best if you want the created images to be shared 
    // between applications and persist after your app has been uninstalled. 

    // Create the storage directory if it does not exist 
    if (! mediaStorageDir.exists()){ 
     if (! mediaStorageDir.mkdirs()){ 
      Log.d("MyCameraApp", "failed to create directory"); 
      return null; 
     } 
    } 

    // Create a media file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    File mediaFile; 
    mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg"); 

    return mediaFile; 
} 

回答

0

你可以簡單地刪除該文件:

String pathToFile = "/sdcard/DCIM/Camera/imagename.jpg"; 
boolean success = new File(pathToFile).delete(); 

if(success){ 
// deleting file succeeded 
}else{ 
// it didn't succeed 
} 

編輯

獲取/ SD卡/ DCIM /相機最新拍攝的照片:

File[] images = new File("/sdcard/DCIM/Camera").listFiles(); 
File latestSavedImage = images[0]; 
for(int i=1; i<images.length; ++i){ 
if(images[i].lastModified() > latestSavedImage.lastModified()){ 
    latestSavedImage = image; 
} 
} 

請注意,代碼沒有經過測試!

+1

問題是每兩張圖片都有不同的名稱時間戳。第一張圖片保存到/ sdcard/PicturesMyCameraApp和第二張/ sdcard/DCIM /相機並具有不同的名稱...例如,第一張圖片的名稱爲165337(格式爲hhmmss),第二張圖片的格式爲165343等等。 – 2011-12-19 15:56:39

+2

@ user1106177我認爲那裏有一個基本問題。如果你想創建一個CUSTOM相機應用程序,這是啓動第三方相機應用程序的錯誤方法。而第三方應用最可能做的是將創建的圖片保存到/ DCIM /相機。如何創建一個'真正'的自定義相機,請看這裏:http://developer.android.com/reference/android/hardware/Camera.html因爲第三方應用程序正在保存圖片,你不能說它的名字是什麼,如你所說。你唯一能做的就是迭代/ DCIM/Camera中的所有圖像,找到最新時間戳的圖像,並刪除這個圖像。 – poitroae 2011-12-19 15:58:48