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

クラスのcreateVideoThumbnail()を見たことがあります ThumbnailUtilsか?

実際、ビデオファイルはresource/rawディレクトリにあるため、サムネイルを作成する必要があります。

ビデオファイルが外部ストレージにある場合は、AndroidMediaStore自体が作成します。そして、 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 に答える