1:
在android的内部查询本地的多媒体资源,可以有多种的途径。有sd卡的获取,和android的内容提供者。
这次是写contentprovider。
android 本地视频缩略图 先要通过contentprovider获取android内部存放视频的数据库
android.provider.MediaStore.Video.Thumbnails
//通过ContentResolver 来获取视频的资源
public ArrayList<MediaVideo> getLocalVideo(Context paramContext)
{
this. mVideos.clear();
下面两个str字符串的含义是一样的 不过在数据的命名不是一样的
最好还是写成Media.XX的形式 更好辨认
String str[] = new String[] { Media. DATA, Media._ID, Media.DISPLAY_NAME , Media.SIZE };
String[] str={ "_data", "_display_name", "duration"};
ContentResolver cr = paramContext.getContentResolver();
Cursor cursor = cr.query(MediaStore.Video.Media. EXTERNAL_CONTENT_URI, str , null, null, null);
if( cursor== null|| cursor.getCount()==0)
{
Log. d("getLocalVideo" , "first return" );
return null;
}
if( cursor.moveToFirst())
{
int id;
int nameID;
int durationID;
id= cursor.getColumnIndex( "_data");
nameID= cursor.getColumnIndex( "_display_name");
durationID= cursor.getColumnIndex( "duration");
do{
//把数据拿到以后存入MediaVideo的数组中
MediaVideo localMediaVideo= new MediaVideo();
localMediaVideo.setVideoPath( cursor.getString( id));
localMediaVideo.setVideoName( cursor.getString( nameID));
localMediaVideo.setVideoDuration( cursor.getInt( durationID));
mVideos.add( localMediaVideo);
Log. i("movieID" ,cursor .getString(id ) );
Log. i("movieName" ,cursor .getString(nameID ) );
} while( cursor.moveToNext());
return mVideos;
}
cursor.close();
return null;
}
当你上面的方法执行完以后 拿到视频的数组返回值以后就调用下面的方法 就可以拿到视频的缩略图了
public List<Bitmap> getVideoThumbnail(ArrayList<MediaVideo> mVideos , int width , int height,
int kind)
{
Bitmap mbitmap = null;
ArrayList<MediaVideo> videos= new ArrayList<MediaVideo>();
List<Bitmap> bitmap= new ArrayList<Bitmap>();
videos=mVideos;
//如果手机没有视频 就会报空指针
if(videos==null)
{
System. out.println( "没有视频");
}else{
// 获取视频的缩略图
for(int i=0;i<videos.size();i++)
{
mbitmap = ThumbnailUtils.createVideoThumbnail( videos.get( i).getVideoPath(), kind);
mbitmap = ThumbnailUtils.extractThumbnail(mbitmap, width,height,
ThumbnailUtils. OPTIONS_RECYCLE_INPUT);
bitmap.add( mbitmap);
}
}
return bitmap;
}
2:而想获取音乐和图片 的资源 其实是一样的方法
只不过是把表换成
MediaStore.Images.Media.
EXTERNAL_CONTENT_URI
MediaStore.Audios.Media.
EXTERNAL_CONTENT_URI