2013-02-18 157 views
0

下面的代码无法获取位于R.raw文件夹中的视频的视频缩略图。如何从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

你看了,createVideoThumbnail()ThumbnailUtils类?

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

如果您的视频文件在外部存储然后Android媒体商店本身为您创建。你可以通过MediaStore.Video.Thumbnails Class获得。

+0

你能看看我的代码,我检查过之前的creatVideoThumbnail,但仍然不知道哪里出错。 – kev 2013-02-18 08:31:42

+0

所以你的意思是当用户下载应用程序时把所有的视频直接放在SD卡中?我不知道哪种方式更好,所以我最初把视频放在R.raw文件夹中。 – kev 2013-02-18 08:35:46

+0

使你的文件路径像''android.resource:// /raw/filename“'所以在你的情况下它应该像''android.resource://”+ getPackageName()+“/ raw/01“' – user370305 2013-02-18 08:38:11

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)); 
+0

不适用于我 – 2016-01-07 07:11:02

相关问题