ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • EXTERNAL_CONTENT_URI 를 이용한 Media File 목록 불러오기
    안드로이드/학습&강좌 2011. 8. 17. 09:57

    이전에 강의한 자료 중에

    http://ememomo.tistory.com/52

    와 같이 MediaStore를 이용해본 적이 있다.

    이번에도 똑같으나 이번에는 UI를 적용 시켜 본 것이다.

    시중에 나와있는 플레이어들 같은 경우 대부분 List 형식의 UI를 취한다. 삼성의 내장 어플의 경우는

    Grid방식도 지원한다.

    일단은 비슷하게 List UI를 만들어 보았으니 화면 부터 보자.


    이런식으로 만들었다.

    좌측이 이미지

    중간에 상단부터가 등록시간, 미디어 제목, 미디어 경로

    우측이 크기를 나타낸 것이고,

    컬럼이름으로 보면

        MediaStore.Video.VideoColumns.ALBUM,
        MediaStore.Video.Media._ID,
        MediaStore.Video.Media.TITLE,
        MediaStore.Video.Media.DATA,
        MediaStore.Video.Media.DISPLAY_NAME,
        MediaStore.Video.Media.SIZE,
        MediaStore.Video.Media.DATE_ADDED

    여기서 SIZE 와, DATE_ADDED는 변환을 해줘야 한다 

    현재 DATE_ADDED 는 변환을 안해두 상태라 저렇게 긴 숫자로 표현되는거을 알 수 있다.

    컬럼에 대한 자세한 내용은

    developer 사이트에서 확인하자 .

    http://developer.android.com/reference/android/provider/MediaStore.MediaColumns.html

    간단하게 쿼리만 설명 하겠다.

    private ArrayList<VodListItem> getList(){
      ArrayList<VodListItem> arr_ListItems = new ArrayList<VodListItem>();
      String[] proj = {
        MediaStore.Video.VideoColumns.ALBUM,
        MediaStore.Video.Media._ID,
        MediaStore.Video.Media.TITLE,
        MediaStore.Video.Media.DATA,
        MediaStore.Video.Media.DISPLAY_NAME,
        MediaStore.Video.Media.SIZE,
        MediaStore.Video.Media.DATE_ADDED};
      videocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
        proj, null, null, null);
      
      if(videocursor.moveToFirst()){
       int n_album = videocursor.getColumnIndex(MediaStore.Video.VideoColumns.ALBUM);
       int n_id = videocursor.getColumnIndex(MediaStore.Video.Media._ID);
       int n_title = videocursor.getColumnIndex(MediaStore.Video.Media.TITLE);
       int n_data  = videocursor.getColumnIndex(MediaStore.Video.Media.DATA);
       int n_displayname = videocursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME);
       int n_size    = videocursor.getColumnIndex(MediaStore.Video.Media.SIZE);
       int n_regdttm   = videocursor.getColumnIndex(MediaStore.Video.Media.DATE_ADDED);
       
       do{
        VodListItem item;
        String vod_album  = videocursor.getString(n_album);
        String vod_id   = videocursor.getString(n_id);
        String vod_title  = videocursor.getString(n_title);
        String vod_data  = videocursor.getString(n_data);
        String vod_size  = videocursor.getString(n_size);
        String vod_regdttm  = videocursor.getString(n_regdttm);
        Trace.d("REGDTTM : " +  vod_regdttm);
        item = new VodListItem(vod_album, vod_id, vod_title,
          vod_data,
          vod_size,
          vod_regdttm);
        arr_ListItems.add(item);
       }while(videocursor.moveToNext());
      }
      
      videocursor.close();
      return arr_ListItems;
     }

    감이 오는가. 이전 DB 강좌를 본 사람이라면 이쿼리에 대한 부연 설명을 필요 없을 것이다.

    자료를 가져왔으니 화면에 뿌리는건 하기 나름이다~

    이런 방식을 취하면 Media 뿐만 아니라 Audio도 똑같은 방법을 적용 할 수 있다. 컬럼명만 바꾸면된다.


    댓글

COPYRIGHT 2010 EpoNg. ALL RIGHTS RESERVED.