2011-10-21 4 views
4

앱에서 화면 캡처를 가져 와서 SD 카드에 저장하고 갤러리에서 사용할 수 있도록하는 몇 가지 코드가 있습니다. 문제는 갤러리에서 사진을 찾을 때 카메라 사진과 함께 저장한다는 것입니다. 차라리 다운로드 폴더 아래에 저장하거나 특정 스크린 샷을 사용자가 액세스 할 수있는 앱 특정 폴더 (PicSay는 이와 같은 작업을 수행함)를 만듭니다. 현재 카메라 갤러리에 저장하려면 다음을 사용하고 있습니다.갤러리 폴더 지정

MediaStore.Images.Media.insertImage(getContentResolver(), imagePath, fileName, desc); 

카메라 이외의 다른 위치로 저장하려면 어떻게해야합니까?

답변

2

당신은 일반 자바 API의 외부 저장 디렉토리에 원하는 장소로 이미지 파일을 저장하는 데 사용할 수있는 .. (힌트 - FileOutputStream 사용)

해결해야 할 유일한 문제는 Andriod에게 새로운 콘텐츠를 추가 했으므로 Andriod에게 콘텐츠 데이터베이스를 업데이트한다는 것입니다. 갤러리가 사용자에게 이미지를 표시하는 데 사용할 수있는 갤러리입니다.

ContentValue을 새로 작성하여 ContentResolver에 삽입하면됩니다. API를 사용하여 ContentResolver에 대한 핸들을 얻을 수 있습니다. ContentValue에는 이미지 이름, 절대 경로, 생성 날짜, 파일 크기 등과 같은 관련 정보가 들어 있습니다. Android 문서를 검토하여 나와 관련이없는 값을 선택하십시오.

ContentValues values = new ContentValues(7); 

values.put(Images.Media.TITLE, title); 
values.put(Images.Media.DISPLAY_NAME, fileName); 
values.put(Images.Media.DATE_TAKEN, currTime); 
values.put(Images.Media.MIME_TYPE, "image/jpeg"); 
values.put(Images.Media.ORIENTATION, 0); 
values.put(Images.Media.DATA, filePath); 
values.put(Images.Media.SIZE, jpegData.length); 

contentResolver.insert(STORAGE_URI, values); 

그리고 짜잔,이 배치되는 이미지 :

+1

가 감사를 표시합니다 갤러리. 마지막 줄을 contentResolver.insert (Images.Media.EXTERNAL_CONTENT_URI, 값)로 변경해야했습니다. 하지만 위대한 다른 작품. – Woodsy

+0

실제로 나는 원래 코드가 작동한다는 것을 알았지 만 SD 카드에 저장하고 있던 파일로 갤러리를 업데이트하기 전에 하루 정도 안드로이드를 사용했습니다. 너의 길은 그들을 즉시 등록한다. 다시 한번 감사드립니다. – Woodsy

+0

내 나쁜, 급하게 내 프로젝트에서 코드를 복사합니다. STORAGE_URI가 외부 디렉토리를 가리 킵니다. – bluefalcon