显示specfic文件夹中的视频缩略图与Android的列表视图 [英] Display specfic folder videos in a listview with Thumbnails android
问题描述
我试图从SD卡的文件夹XYZ列表视图来显示视频文件,我已经成功地显示,但问题是,它显示存储在SD卡的所有视频文件,甚至开出夹的abc其实我想只存储视频文件在文件夹XYZ来显示。由于有4天,我正在Google上搜寻,但没有找到任何解决方案。我的code是显示所有的视频和完美的工作:
私人光标videocursor;
私人诠释video_column_index;
ListView的videolist;
诠释计数;
的String [] thumbColumns = NULL;
文件videoFiles;
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main); init_phone_video_grid();
@燮pressWarnings(德precation)
私人无效init_phone_video_grid(){
System.gc()的;
的String [] = PROJ {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,PROJ,
NULL,NULL,NULL);
数= videocursor.getCount();
videolist =(ListView控件)findViewById(R.id.list);
videolist.setAdapter(新VideoAdapter(getApplicationContext()));
videolist.setOnItemClickListener(videogridlistener);
} 私人OnItemClickListener videogridlistener =新OnItemClickListener(){
公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,
长ID){
System.gc()的;
video_column_index = videocursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
videocursor.moveToPosition(位置);
字符串文件名= videocursor.getString(video_column_index);
意向意图=新意图(MainActivity.this,ViewVideo.class);
intent.putExtra(videofilename,文件名);
startActivity(意向);
}
};
公共类VideoAdapter延伸BaseAdapter {
私人语境vContext; 公共VideoAdapter(上下文C){
vContext = C;
} 公众诠释的getCount(){
返回计数;
} 公共对象的getItem(INT位置){
返回的位置;
} 众长getItemId(INT位置){
返回的位置;
} 公共查看getView(INT位置,查看convertView,父母的ViewGroup){
System.gc()的;
ViewHolder持有人;
字符串ID = NULL;
convertView = NULL;
如果(convertView == NULL){
convertView = LayoutInflater.from(vContext).inflate(R.layout.listitem,父母,假);
持有人=新ViewHolder();
holder.txtTitle =(TextView中)convertView.findViewById(R.id.txtTitle);
holder.txtSize =(TextView中)convertView.findViewById(R.id.txtSize);
holder.thumbImage =(ImageView的)convertView.findViewById(R.id.imgIcon); video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
videocursor.moveToPosition(位置);
ID = videocursor.getString(video_column_index);
video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
videocursor.moveToPosition(位置);
// ID + =大小(KB):+ // videocursor.getString(video_column_index);
holder.txtTitle.setText(ID);
holder.txtSize.setText(大小(KB):+ videocursor.getString(video_column_index)); 的String [] = PROJ {MediaStore.Video.Media._ID,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.DATA};
@燮pressWarnings(德precation) 光标光标= managedQuery(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI,PROJ,
MediaStore.Video.Media.DISPLAY_NAME +=?,
新的String [] {ID},NULL);
cursor.moveToFirst(); 长IDS = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media._ID)); ContentResolver的crThumb = getContentResolver();
BitmapFactory.Options选项=新BitmapFactory.Options();
options.inSampleSize = 1;
位图curThumb = MediaStore.Video.Thumbnails.getThumbnail(
crThumb,IDS,MediaStore.Video.Thumbnails.MICRO_KIND,
选项);
holder.thumbImage.setImageBitmap(curThumb);
curThumb = NULL; }
返回convertView;
}
} 静态类ViewHolder { TextView的txtTitle;
TextView的txtSize;
ImageView的thumbImage;
}
试试这个
公共静态最后的String [] = VIDEO_PROJECTION {MediaStore.Video.Media._ID,MediaStore.Video.Media.TITLE,
MediaStore.Video.Media.DATA};公共静态最终乌里VIDEO_SOURCE_URI = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
使用内容解析查询数据
CursorLoader cursorLoader =新CursorLoader(getActivity(),VIDEO_SOURCE_URI,VIDEO_PROJECTION,MediaStore.Video.Media.DATA +怎么样?,新的String [] {%FOLDER_NAME%} ,
MediaStore.Video.Media.DATA +COLLATE NOCASE ASC;);
据猎犬从FOLDER_NAME的所有视频文件。因为可以有一个或多个文件夹与名称所以最好是提供绝对路径。
I am trying to display video files in listview from folder 'xyz' on sdcard, i have successfully displayed but problem is that it displays all video files stored on sdcard even out of folder 'abc' actually i want only video files stored in folder 'xyz' to be displayed. I am googling since 4 days but didn't find any solution for that. My code is that is showing all videos and working perfectly :
private Cursor videocursor;
private int video_column_index;
ListView videolist;
int count;
String[] thumbColumns = null ;
File videoFiles;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init_phone_video_grid();
@SuppressWarnings("deprecation")
private void init_phone_video_grid() {
System.gc();
String[] proj = { 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,proj,
null, null,null);
count = videocursor.getCount();
videolist = (ListView) findViewById(R.id.list);
videolist.setAdapter(new VideoAdapter(getApplicationContext()));
videolist.setOnItemClickListener(videogridlistener);
}
private OnItemClickListener videogridlistener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
System.gc();
video_column_index = videocursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
videocursor.moveToPosition(position);
String filename = videocursor.getString(video_column_index);
Intent intent = new Intent(MainActivity.this, ViewVideo.class);
intent.putExtra("videofilename", filename);
startActivity(intent);
}
};
public class VideoAdapter extends BaseAdapter {
private Context vContext;
public VideoAdapter(Context c) {
vContext = c;
}
public int getCount() {
return count;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
System.gc();
ViewHolder holder;
String id = null;
convertView = null;
if (convertView == null) {
convertView = LayoutInflater.from(vContext).inflate(R.layout.listitem, parent, false);
holder = new ViewHolder();
holder.txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);
holder.txtSize = (TextView) convertView.findViewById(R.id.txtSize);
holder.thumbImage = (ImageView) convertView.findViewById(R.id.imgIcon);
video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
videocursor.moveToPosition(position);
id = videocursor.getString(video_column_index);
video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
videocursor.moveToPosition(position);
// id += " Size(KB):" + // videocursor.getString(video_column_index);
holder.txtTitle.setText(id);
holder.txtSize.setText(" Size(KB):" + videocursor.getString(video_column_index));
String[] proj = { MediaStore.Video.Media._ID,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.DATA };
@SuppressWarnings("deprecation")
Cursor cursor = managedQuery(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, proj,
MediaStore.Video.Media.DISPLAY_NAME + "=?",
new String[] { id }, null);
cursor.moveToFirst();
long ids = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media._ID));
ContentResolver crThumb = getContentResolver();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(
crThumb, ids, MediaStore.Video.Thumbnails.MICRO_KIND,
options);
holder.thumbImage.setImageBitmap(curThumb);
curThumb = null;
}
return convertView;
}
}
static class ViewHolder {
TextView txtTitle;
TextView txtSize;
ImageView thumbImage;
}
Try this
public static final String[] VIDEO_PROJECTION = {MediaStore.Video.Media._ID, MediaStore.Video.Media.TITLE,
MediaStore.Video.Media.DATA};
public static final Uri VIDEO_SOURCE_URI = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
Querying the data using the content resolver
CursorLoader cursorLoader = new CursorLoader(getActivity(), VIDEO_SOURCE_URI, VIDEO_PROJECTION, MediaStore.Video.Media.DATA + " like ? ", new String[]{"%FOLDER_NAME%"},
MediaStore.Video.Media.DATA + " COLLATE NOCASE ASC;");
It retrievers all the video files from the FOLDER_NAME. Since there can be one or more folders with a name so it is better to provide absolute path.
这篇关于显示specfic文件夹中的视频缩略图与Android的列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!