티스토리 뷰


아래와같이 작성하면 외부저장소에 있는 이미지파일에 대한 정보를 일괄적으로 얻을 수 있다.

import android.database.Cursor;
import android.provider.MediaStore;

////

        String[] proj = {MediaStore.Images.Media._ID,  

       MediaStore.Images.Media.DATA, 
       MediaStore.Images.Media.DISPLAY_NAME, 
       MediaStore.Images.Media.SIZE
       }; 

       ArrayList<String> thumbsIDs = new ArrayList<String>();
       ArrayList<String> thumbsDatas = new ArrayList<String>();
      
       Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj, null, null, null); 

       if (imageCursor != null && imageCursor.moveToFirst()){
       
       
        String thumbsID;
        String thumbsImageID;
        String thumbsData; 
        String imgSize; 

        int thumbsIDCol = imageCursor.getColumnIndex(MediaStore.Images.Media._ID); 
        int thumbsDataCol = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA); 
        int thumbsImageIDCol = imageCursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME); 
        int thumbsSizeCol = imageCursor.getColumnIndex(MediaStore.Images.Media.SIZE); 
       
        do { 
         thumbsID = imageCursor.getString(thumbsIDCol); 
         thumbsData = imageCursor.getString(thumbsDataCol); 
         thumbsImageID = imageCursor.getString(thumbsImageIDCol);
         imgSize = imageCursor.getString(thumbsSizeCol);
        
         if (thumbsImageID != null){ 
          thumbsIDs.add(thumbsID); 
          thumbsDatas.add(thumbsData);
         }

         Log.d("test", "thumbsID : "+thumbsID);
         Log.d("test", "thumbsData : "+thumbsData);
         Log.d("test", "thumbsImageID : "+thumbsImageID);
         Log.d("test", "imgSize : "+imgSize);
        
        }while (imageCursor.moveToNext()); 
        imageCursor.close();
       
       }
    }



아래와 같은 Uri를 위 코드중 굵은부분에 배치 시키면 미디어종류(이미지,비디오,오디오,앨범,썸네일)에따라 불러오는 리스트를 달리 할 수 있다.(커서로 받아오는것도 바꾸어야겠지ㅎ)

MediaStore.Images.Media.INTERNAL_CONTENT_URI
MediaStore.Images.Media.EXTERNAL_CONTENT_URI
MediaStore.Audio.Media.INTERNAL_CONTENT_URI
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
MediaStore.Video.Media.INTERNAL_CONTENT_URI
MediaStore.Video.Media.EXTERNAL_CONTENT_URI
MediaStore.Audio.Albums.INTERNAL_CONTENT_URI
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI
MediaStore.Video.Thumbnails.INTERNAL_CONTENT_URI
MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI

다만 INTERNAL 의 경우에는 SD카드처럼 자유로이 사용이 힘든점이있다.


밑에 정보들도 참고하자.
 //겔러리 정보저장
File file=new File(getContext().getFilesDir().getAbsolutePath()+"/"+fileName);
ContentValues values=new ContentValues();
values.put(MediaStore.Images.Media.TITLE,fileName);
values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg");
values.put("_data",file.getAbsolutePath());
ContentResolver contentResolver=getContext().getContentResolver();
contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);

//겔러리 정보검색
ContentResolver cr=getContentResolver();
Cursor c=cr.query(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null,null,null,null);
c.moveToFirst();  
for (int i=0;i<c.getCount();i++) {  
    for (String column:c.getColumnNames()) {
        android.util.Log.e("",column+"="+
            c.getString(c.getColumnIndexOrThrow(column)));
    }
    c.moveToNext();
}


'Development' 카테고리의 다른 글

[Java] 배열정렬 (파일명과 날짜)  (0) 2011.11.28
[Java] List 와 배열 변환  (0) 2011.11.15
[Android] 내부저장 메모리 이용  (0) 2011.11.04
[Android] 파일 입출력  (0) 2011.11.04
[Android] ViewFlipper  (0) 2011.10.31
댓글