2013-02-18 77 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

相關問題