2011-08-18 6 views
1

나는 다음과 같은 의도를 사용하고 저장됩니다 이미지가 두 번

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri); 

은 기본적으로 내가 카메라를 호출하고 지정된 URI로 촬영 한 이미지를 저장 ACTION_IMAGE_CAPTURE 의도를 사용하고 있습니다.

동시에 작동하지만 이미지는 기본 이름으로 저장됩니다.

이렇게 한번 그림을 찍으면 uri와 기본 경로 및 이름에 두 번 저장됩니다.

특정 URI에만 저장되는지 확인하려면 어떻게해야합니까? 사전에

감사합니다, Perumal

+0

'putExtra' 그나마 얻을를 기본 경로와 이름의 이미지! –

+0

하지만 내 의도는 사진 이이 응용 프로그램을 사용하여 촬영 때마다, 사진을 교체해야합니다. 그게 이유야. 끝낼 수 있습니까? – perumal316

답변

1

당신은 ID 또는 갤러리 마지막 이미지의 절대 경로를 취할 수 있습니다. 삭제하십시오.

그것은 그런 식으로 수행 할 수 있습니다

/** 
* Gets the last image id from the media store 
* @return 
*/ 
private int getLastImageId(){ 
    final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA }; 
    final String imageOrderBy = MediaStore.Images.Media._ID+" DESC"; 
    Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy); 
    if(imageCursor.moveToFirst()){ 
     int id = imageCursor.getInt(imageCursor.getColumnIndex(MediaStore.Images.Media._ID)); 
     String fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA)); 
     Log.d(TAG, "getLastImageId::id " + id); 
     Log.d(TAG, "getLastImageId::path " + fullPath); 
     imageCursor.close(); 
     return id; 
    }else{ 
     return 0; 
    } 
} 

그리고 파일 제거 :이 코드는 게시물에 기반

private void removeImage(int id) { 
    ContentResolver cr = getContentResolver(); 
    cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media._ID + "=?", new String[]{ Long.toString(id) }); 
} 

: Deleting a gallery image after camera intent photo taken

+0

그 답을 고맙게 생각합니다. 이것이 일반적인 문제인 경우 알 수 있습니까? –

+0

@ChrisConway 최선의 방법인지 확실하지 않습니다. 하지만 기본 카메라 인 텐트를 사용하면 이미지는 항상 갤러리에 저장됩니다. 또 다른 솔루션은이 의도를 사용하지 않는, 당신은 자신의 카메라 SurfaceView를 만들 수 있습니다. – Derzu

+0

예, @SherifelKhatib이 말했듯이 기본 디렉토리에 저장하십시오. –