내가 SDCARD에 저장된 사용자의 동영상에 대한 정보를 검색하기 위해 노력하고있어, 나는이 방법했습니다 :미디어 스토어 MediaStore는 나에게 동영상 파일의 크기, 해상도, 시간 및 날짜를 제공하지 않습니다
protected void addVideo() {
cursor = cr.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
mediaColumns, null, null, null);
if (cursor.moveToFirst()) {
int i = 1;
do {
VideoItem newVVI = new VideoItem();
int id = cursor.getInt(cursor
.getColumnIndex(MediaStore.Video.Media._ID));
newVVI.idthumb = cursor.getString(cursor
.getColumnIndex(MediaStore.Video.Thumbnails._ID));
Cursor thumbCursor = cr.query(
MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,
thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID
+ "=" + id, null, null);
if (thumbCursor.moveToFirst()) {
newVVI.thumbPath = thumbCursor.getString(thumbCursor
.getColumnIndex(MediaStore.Video.Thumbnails.DATA));
}
newVVI.filePath = cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
newVVI.title = cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
try {
newVVI.date = cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATE_TAKEN));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
newVVI.date = "0";
}
try {
newVVI.duration = cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
newVVI.duration = "0";
}
try {
newVVI.size = cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
newVVI.size = "0";
}
try {
newVVI.resolution = cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.RESOLUTION));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
newVVI.resolution = "0";
}
newVVI.mimeType = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE));
newVVI.id = Integer.toString(i);
ITEMS.add(newVVI);
ITEM_MAP.put(newVVI.id, newVVI);
i++;
} while (cursor.moveToNext());
cursor.close();
} else {
Log.d("TEST", ": else);
}
}
문제를 MediaStore.Video.Media.DATE, MediaStore.Video.Media.DURATION, MediaStore.Video.Media.SIZE 및 MediaStore.Video.Media.RESOLUTION에 대해서는 항상 "0"이됩니다. 왜냐하면 이러한 것들은 항상 IllegalArgumentException을 잡았 기 때문입니다.
왜?