// 쿼리 수행 , 외부 메모리
mVideoCursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, projection, null,null, MediaStore.Images.Media.DATE_ADDED + " desc ");
startManagingCursor(mVideoCursor);
if (mVideoCursor != null && mVideoCursor.getCount() > 0) {
// 컬럼 인덱스 (썸네일 ID , 이미지 데이타)
int videoIDCol = mVideoCursor.getColumnIndex(MediaStore.Video.Media._ID);
int videoName = mVideoCursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME);
int videoSize = mVideoCursor.getColumnIndex(MediaStore.Video.Media.SIZE);
int videoTitle = mVideoCursor.getColumnIndex(MediaStore.Video.Media.TITLE);
int videoDataCol = mVideoCursor.getColumnIndex(MediaStore.Video.Media.DATA);
int videoDuration= mVideoCursor.getColumnIndex(MediaStore.Video.Media.DURATION);
int videoDate = mVideoCursor.getColumnIndex(MediaStore.Video.Media.DATE_ADDED);
int videoResolution= mVideoCursor.getColumnIndex(MediaStore.Video.Media.RESOLUTION);
while (mVideoCursor.moveToNext()) {
ThumbVideoInfo thumbInfo = new ThumbVideoInfo();
thumbInfo.setmVideoId(mVideoCursor.getString(videoIDCol));
thumbInfo.setmVideoData(mVideoCursor.getString(videoDataCol));
thumbInfo.setmVideoName(mVideoCursor.getString(videoName));
thumbInfo.setCheckedState(false);
mThumbVideoInfoList.add(thumbInfo);
returnValue++;
}
}
mVideoCursor.close();
// 실제 경로 찾기
private String getPath(Uri uri)
{
String[] projection = { MediaStore.Images.Media.DATA };
cursor = managedQuery(uri, projection, null, null, null);
startManagingCursor(cursor);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String result = cursor.getString(column_index);
return result;
}
@Override
protected void onStop() {
if(mVideoCursor != null && mVideoCursor.isClosed()){
mVideoCursor.close();
}
if(cursor != null && cursor.isClosed()){
cursor.close();
}
super.onStop();
}
동영상과 관련된 프로젝트 만들고 잇습니다. 하지만 CURSOR 구조에 대한 부분이 부족하여 해결을 하지 못하게 정체상태에 빠지게 되었습니다. 구글링을 검색해보니 , Cursor close 가 안됬다 , cursor 를 다시 호출한다는 말이 나왔습니다.
소스가 다 안올라가 위 코드는 cursor 가 쓰이는 부분만 잘라서 올렸습니다.