【问题标题】:How to get specified video from sdcard in android?如何从android中的sdcard获取指定的视频?
【发布时间】:2012-03-12 04:17:07
【问题描述】:

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

-我在 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;

    }

}

}

【问题讨论】:

  • 此代码对我不起作用。上面的代码没有给我来自 sdcard 的视频文件列表。我不知道为什么,但上面的代码是写的,但不工作。它给了我 NullPointerException over get 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();
  • 你有什么解决方法吗?我面临同样的问题。

标签: android listview gridview


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2013-04-03
    • 2013-07-20
    • 2013-01-31
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多