2012-03-12 49 views
4

我能够显示从SD卡到ListView的所有视频,但如何显示只有指定的视频从SD卡到android.list列表中的android.can任何人请帮助吗?如何从android中的SD卡获取指定的视频?

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

    } 

} 

}

+0

此代码不适用于我。上面的代码不会给我从SD卡的视频文件列表。我不知道为什么,但上面的代码是写但不工作。它给我的NullPointerException通过获取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(); – 2012-05-11 06:36:25

+0

你有没有得到任何解决方法?我面临同样的问题。 – 2012-07-11 11:10:56

回答