0

下面的代码无法获取位于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) {
        }
    });
}
4

3 回答 3

3

在 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));
于 2015-06-04T08:24:28.897 回答
0

您是否看过 Class中的createVideoThumbnail() ?ThumbnailUtils

实际上,您的视频文件位于resource/raw目录中,因此您必须为其创建缩略图。

如果您的视频文件在外部存储中,那么 Android 媒体商店本身会为您创建。您可以通过MediaStore.Video.Thumbnails类获取它。

于 2013-02-18T08:26:17.573 回答
0

您的应用程序文件夹中的视频res/raw不由 Android Media Content Provider 管理,因此您无法从中获取其缩略图。

或者,您可以尝试将它们作为普通文件保存在 SD 中,然后向媒体提供商索取缩略图或直接通过ThumbnailUtils.createVideoThumbnail类创建它(仅限 Android 2.2 或更高版本)

于 2018-03-14T09:32:56.493 回答