2017-01-13 11 views
0

私は現在、ユーザーがフローティングアクションボタンをクリックしてビデオファイルを選択するアプリケーションを持っており、そのファイルは別のフォルダに保存されます。私はすべてのビデオのサムネイルを表示したいです。私はMediaStoreで行われるチュートリアルシリーズを見てきましたが、私はuriのパスを設定できません。Android - ビデオファイルのサムネイル

誰かが正しい方向に向けることができますか?ここで

ギャラリーを開いて、別のパスにビデオを保存するために私のクラスである:

public class Activity extends AppCompatActivity { 
    private static final int pick = 100; 
    Uri videoUri; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
      openGallery(); 
      } 
     }); 
    } 

    private void openGallery() { 
     Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(intent, pick); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (resultCode == RESULT_OK && requestCode == pick) { 
      try 
      { 
       Log.e("videopath","videopath"); 
       AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(data.getData(), "r"); 
       FileInputStream fis = videoAsset.createInputStream(); 
       File root=new File(Environment.getExternalStorageDirectory(),"MYFOLDER"); 

       if (!root.exists()) { 
        root.mkdirs(); 
       } 

       File file; 
       file=new File(root,"android_"+System.currentTimeMillis()+".mp4"); 

       FileOutputStream fos = new FileOutputStream(file); 

       byte[] buf = new byte[1024]; 
       int len; 
       while ((len = fis.read(buf)) > 0) { 
        fos.write(buf, 0, len); 
       } 
       fis.close(); 
       fos.close(); 
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 
      videoUri = data.getData(); 
     } 
    } 
    } 
+0

可能な複製http://stackoverflow.com/questions/1334694/android-is-it-possible-to-play-video-thumbnails –

+0

参照:http://androidsrc.net/create-thumbnail-video -android-application / –

答えて

3

あなたはThumbnailUtilsを使用することができますこの目的のためにAndroidのクラス。

public static Bitmap createVideoThumbnail (String filePath, int kind) 

このメソッドは、ビデオのビットマップを返します。

  • 最初のパラメータはファイルパス、つまりStringとして渡されるビデオファイルの場所です。サイズ512×384
  • のサムネイルを生成し、大きさ96×96
  • MediaStore.Images.Thumbnails.MINI_KINDのサムネイルを生成

    • MediaStore.Images.Thumbnails.MICRO_KIND
    • 2番目のパラメータは、あなたが必要とするビットマップの一種で、2種類があります

例:

Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath, Thumbnails.MINI_KIND); 

詳細は[Here]のAPIドキュメントをご覧ください。

1

あなたが簡単にGlideでそれを行うことができます。

Glide.with(context).load(videoPath).asBitmap().into(imageView); 
関連する問題