如何从android中的sdcard获取指定视频?

时间:2012-03-12 04:17:07

标签: android listview gridview

我可以将所有视频从SD卡显示到ListView,但是如何只显示sdcard中指定的视频到android中的Listview。有人可以帮忙吗?

- 我正在列表视图中显示所有视频。 - 显示特定的视频文件。

这是我的代码。

         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);
   System.out.println("========gte Count of video List============== :" + videolist);
   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(VideoStoredInSDCard.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.Thumbnails.DATA));
      Log.i("ThumbPath: ",thumbPath);

  }
     thumbImage.setImageURI(Uri.parse(thumbPath));
  System.out.println("============Thumbnail============== :" + videoThumbnailCursor);
     return listItemRow;

    }

}

}

1 个答案:

答案 0 :(得分:0)

我正在使用其他方式从sdcard获取文件的名称。 我正在使用文件概念来执行此操作,如How to display files on the SD card in a ListView?