-
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도 똑같은 방법을 적용 할 수 있다. 컬럼명만 바꾸면된다.
'안드로이드 > 학습&강좌' 카테고리의 다른 글
인텐트로 클래스 데이터 넘기기 (1) 2011.12.17 내 App 리스트 보기 & Mp3 파일 Album_Art 연결하기 (3) 2011.11.23 WebView 로딩시 프로그래스바 표시 (2) 2011.08.31 CoverFlow Version2 (Matrix 를 이용) (0) 2011.08.25 Custom ExpandableListView 만들기 (43) 2011.08.23 NDK-Build 하기 ( NDK 시작 ) (0) 2011.08.09 EditText Styling 하기(코너 라인드 처리) (6) 2011.08.06 DB SQLite (update) (4) 2011.08.02 DB SQLite (insert/select) (1) 2011.08.02 세로 프로그래스바(Vertical SeekBar) (45) 2011.07.30 댓글