如何显示存储在SD卡中特定文件夹中的所有视频缩略图

时间:2014-06-27 13:26:33

标签: android thumbnails sd-card

我正在从MediaStore获取这样的位图

    public class VideoStoredInSDCard extends Activity
  {
 private Cursor videoCursor;
 private int videoColumnIndex;
 ListView videolist;
  int count;
 String thumbPath;

   String[] thumbColumns = {          MediaStore.Video.Thumbnails.DATA,MediaStore.Video.Thumbnails.VIDEO_ID };
   /** Called when the activity is first created. */
   @Override
  public void onCreate(Bundle savedInstanceState)
 {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 initialization();
 }

private void initialization()
{
 System.gc();
   String[] videoProjection = { MediaStore.Video.Media._ID,MediaStore.Video.Media.DATA,
   MediaStore.Video.Media.DISPLAY_NAME,MediaStore.Video.Media.SIZE };
  videoCursor =  managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,videoProjection,          null,    null, null);
  count = videoCursor.getCount();
 videolist = (ListView) findViewById(R.id.PhoneVideoList);

 videolist.setAdapter(new VideoListAdapter(this.getApplicationContext()));
 videolist.setOnItemClickListener(videogridlistener);
 }

  private OnItemClickListener videogridlistener = new OnItemClickListener() {
 public void onItemClick(AdapterView parent, View v, int position,long id)
  {
  System.gc();
 videoColumnIndex = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
 videoCursor.moveToPosition(position);
 String filename = videoCursor.getString(videoColumnIndex);
 Log.i("FileName: ", filename);
 //Intent intent = new Intent(VideoActivity.this, ViewVideo.class);
 //intent.putExtra("videofilename", filename);
 //startActivity(intent);
 }};

 public class VideoListAdapter extends BaseAdapter
 {
 private Context vContext;
int layoutResourceId;

public VideoListAdapter(Context c)
{
vContext = c;
}

  public int getCount()
 {
 return videoCursor.getCount();
 }

 public Object getItem(int position)
 {
 return position;
 }

public long getItemId(int position)
{
return position;
}

public View getView(int position, View convertView, ViewGroup parent)
{
 View listItemRow = null;
 listItemRow = LayoutInflater.from(vContext).inflate(R.layout.listitem, parent, false);

  TextView txtTitle = (TextView)listItemRow.findViewById(R.id.txtTitle);
  TextView txtSize = (TextView)listItemRow.findViewById(R.id.txtSize);
  ImageView thumbImage = (ImageView)listItemRow.findViewById(R.id.imgIcon);

 videoColumnIndex =         videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
 videoCursor.moveToPosition(position);
 txtTitle.setText(videoCursor.getString(videoColumnIndex));

 videoColumnIndex = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
 videoCursor.moveToPosition(position);
 txtSize.setText(" Size(KB):" + videoCursor.getString(videoColumnIndex));

  int videoId =   videoCursor.getInt(videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID));
   Cursor videoThumbnailCursor =    managedQuery(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,
   thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID+ "=" + videoId, null, null);

if (videoThumbnailCursor.moveToFirst())
 {
 thumbPath =     videoThumbnailCursor.getString(videoThumbnailCursor.getColumnIndex(MediaStore.Video.Thumbna     ils.DATA));
 Log.i("ThumbPath: ",thumbPath);

 }
thumbImage.setImageURI(Uri.parse(thumbPath));

 return listItemRow;

 }

 }

  }

如何从SD卡中的特定文件夹获取缩略图。我正在使用本教程http://gypsynight.wordpress.com/2012/02/17/how-to-show-all-video-file-stored-in-your-sd-card-in-a-listview/

1 个答案:

答案 0 :(得分:0)

可以通过这种方式轻松完成:

int videoId = videoCursor.getInt(videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID));

ContentResolver cr = getContentResolver();
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(cr, videoId, MediaStore.Video.Thumbnails.MICRO_KIND, options);
thumbImage.setImageBitmap(curThumb);