歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 如何掃描出Android系統媒體庫中視頻文件

如何掃描出Android系統媒體庫中視頻文件

日期:2017/3/1 10:15:30   编辑:Linux編程

Android系統啟動時會去掃描系統文件,並將系統支持的視頻文件(mp4,3gp,wmv)掃描到媒體庫(MediaStore)中,下面代碼演示如何獲得這些文件的信息:

  1. public static List<VideoInfo> sysVideoList = null;// 視頻信息集合
  2. sysVideoList = new ArrayList<VideoInfo>();
  3. setVideoList();
  4. private void setVideoList() {
  5. // MediaStore.Video.Thumbnails.DATA:視頻縮略圖的文件路徑
  6. String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA,
  7. MediaStore.Video.Thumbnails.VIDEO_ID };
  8. // MediaStore.Video.Media.DATA:視頻文件路徑;
  9. // MediaStore.Video.Media.DISPLAY_NAME : 視頻文件名,如 testVideo.mp4
  10. // MediaStore.Video.Media.TITLE: 視頻標題 : testVideo
  11. String[] mediaColumns = { MediaStore.Video.Media._ID,
  12. MediaStore.Video.Media.DATA, MediaStore.Video.Media.TITLE,
  13. MediaStore.Video.Media.MIME_TYPE,
  14. MediaStore.Video.Media.DISPLAY_NAME };
  15. cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
  16. mediaColumns, null, null, null);
  17. if(cursor==null){
  18. Toast.makeText(SystemVideoChooseActivity.this, "沒有找到可播放視頻文件", 1).show();
  19. return;
  20. }
  21. if (cursor.moveToFirst()) {
  22. do {
  23. VideoInfo info = new VideoInfo();
  24. int id = cursor.getInt(cursor
  25. .getColumnIndex(MediaStore.Video.Media._ID));
  26. Cursor thumbCursor = managedQuery(
  27. MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,
  28. thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID
  29. + "=" + id, null, null);
  30. if (thumbCursor.moveToFirst()) {
  31. info.setThumbPath(thumbCursor.getString(thumbCursor
  32. .getColumnIndex(MediaStore.Video.Thumbnails.DATA)));
  33. }
  34. info.setPath(cursor.getString(cursor
  35. .getColumnIndexOrThrow(MediaStore.Video.Media.DATA)));
  36. info.setTitle(cursor.getString(cursor
  37. .getColumnIndexOrThrow(MediaStore.Video.Media.TITLE)));
  38. info.setDisplayName(cursor.getString(cursor
  39. .getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME)));
  40. LogUtil.log(TAG, "DisplayName:"+info.getDisplayName());
  41. info.setMimeType(cursor
  42. .getString(cursor
  43. .getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE)));
  44. sysVideoList.add(info);
  45. } while (cursor.moveToNext());
  46. }
  47. }

有一點需要注意的是:系統的媒體庫並不會在我們添加視頻文件後自動更新,我們如何去手動掃描媒體庫,或者重啟系統才能從媒體庫中得到更新的視頻文件:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"

+ Environment.getExternalStorageDirectory())));

Copyright © Linux教程網 All Rights Reserved