以下代码无法获取位于R.raw
文件夹中的视频的视频缩略图。
我想使用图库来显示视频的缩略图。视频被放入R.raw
文件夹(实际上我是Android新手,因此我不知道将这些视频放在哪里,所以我将它们放在R.raw
文件夹中)。现在我想获得视频的缩略图。但是有人告诉说缩略图只能从SD卡中获取。这是真的吗?接下来我该怎么办?感谢。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Gallery gallery = (Gallery) findViewById(R.id.gallery);
final String[] videoFileList = new String[] { "R.raw.01", "R.raw.02" };
BaseAdapter adapter = new BaseAdapter() {
public int getCount() {
return videoFileList.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(Select.this);
Bitmap bmThumbnail;
bmThumbnail = ThumbnailUtils.createVideoThumbnail("android.resource://" + getPackageName() + "/"
+ videoFileList[position], Thumbnails.MINI_KIND);
System.out.println(videoFileList[position]);
imageView.setImageBitmap(bmThumbnail);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);
imageView.setBackgroundResource(typedArray.getResourceId(
R.styleable.Gallery_android_galleryItemBackground, 0));
return imageView;
}
};
gallery.setAdapter(adapter);
gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(Select.this, Play.class);
intent.putExtra("image", videoFileList[position]);
startActivity(intent);
Select.this.finish();
}
public void onNothingClick(AdapterView<?> parent) {
}
});
}
答案 0 :(得分:2)
在Android 5上,createVideoThumbnail()
在要求资源中的视频缩略图时始终返回null
。这是最终对我有用的东西:
Uri videoURI = Uri.parse("android.resource://" + getActivity().getPackageName() + "/raw/animation");
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(getActivity().getApplicationContext(), videoURI);
Bitmap thumb = retriever.getFrameAtTime(10, MediaMetadataRetriever.OPTION_PREVIOUS_SYNC);
videoView.setBackground(new BitmapDrawable(getResources(), thumb));
答案 1 :(得分:0)
你看过ThumbnailUtils
班级的createVideoThumbnail()吗?
实际上,您的视频文件位于resource/raw
目录中,因此您必须为其创建缩略图。
如果您的视频文件位于外部存储空间,那么Android Media Store本身就会为您创建。你可以通过MediaStore.Video.Thumbnails Class来获得它。
答案 2 :(得分:0)
应用程序的res/raw
文件夹上的视频不受Android Media内容提供商管理,因此您无法从中获取缩略图。
或者,您可以尝试将它们保存为SD中的普通文件,然后向媒体提供商询问缩略图或直接通过ThumbnailUtils.createVideoThumbnail课程(仅限Android 2.2或更高版本)创建