在我的应用程序中,我需要显示存储在res/raw文件夹中的视频拇指指甲。我搜索了一下。我得到了以下代码。
int id = **"The Video's ID"**
ImageView iv = (ImageView ) convertView.findViewById(R.id.imagePreview);
ContentResolver crThumb = getContentResolver();
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, id, MediaStore.Video.Thumbnails.MICRO_KIND, options);
iv.setImageBitmap(curThumb);
通过这个代码,我从sdcard获得了视频缩略图。但来自res/raw文件夹的视频,它不显示视频拇指指甲。我试了很长时间,但找不到解决办法。我试了以下方法。
我创建一个数组并存储资源id(例如:int[] videoid={R.raw.vi1,...}
),然后将id放在MediaStore.Video.Thumbnails.getThumbnail(crThumb, videoid[position], MediaStore.Video.Thumbnails.MICRO_KIND, options);.
中
请帮帮我。提前谢谢。
您可以尝试从视频中获取一些帧,如下所示:
Uri videoURI = Uri.parse("android.resource://" + getPackageName() +"/"
+R.raw.cashword_video);
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(this, videoURI);
Bitmap bitmap = retriever
.getFrameAtTime(100000,MediaMetadataRetriever.OPTION_PREVIOUS_SYNC);
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
应用程序的res/raw文件夹上的视频不由Android媒体内容提供商管理,因此您无法从中获取它们的缩略图。
或者,您可以尝试将它们保存为SD中的普通文件,然后向媒体提供商索要缩略图,或直接通过ThumbnailUtils.createVideoThumbnail类(仅限Android 2.2或更高版本)创建
使用Android Glide库
项目中Gradle
repositories {
mavenCentral()
google()
}
应用内Gradle
dependencies {
implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
}
在您的活动中使用以下代码
Glide.with(this).load(R.raw.demo).diskCacheStrategy(NONE).into(imageView);
Glide.with(this).load("file:///android_asset/demo.mp4").diskCacheStrategy(NONE).into(imageView);
Glide.with(this).load("android.resource://" + context.getPackageName() + "/raw/demo").diskCacheStrategy(NONE).into(imageView);