2013-08-27 1 views
6

すべての画像と動画(期間とともに)をsdcardに表示するカスタムギャラリーを作成します。私は一緒にビデオのサムネイルを取得することができますどのように、私はビデオのパスを取得することができています上記のコードから複数のアイテムを選択するためのアンドロイドの画像と動画のカスタムギャラリー

final String[] columns = { MediaStore.Images.Media.DATA ,MediaStore.Images.Media._ID}; 
    final String orderBy = MediaStore.Images.Media.DATE_TAKEN; 
    Cursor imagecursor = getContentResolver().query(
      MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, 
      null, orderBy + " DESC"); 

    this.imageUrls = new ArrayList<String>(); 


    for (int i = 0; i < imagecursor.getCount(); i++) { 
     imagecursor.moveToPosition(i); 
     int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA); 
     imageUrls.add(imagecursor.getString(dataColumnIndex)); 

    } 
    String[] parameters = { MediaStore.Video.Media._ID, 
       MediaStore.Video.Media.DATA, 
       MediaStore.Video.Media.DISPLAY_NAME, 
       MediaStore.Video.Media.SIZE, MediaStore.Video.Media.DURATION, 
       MediaStore.Video.Media.DATE_TAKEN,MediaStore.Video.Thumbnails.DATA}; 



    Cursor videocursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 
       parameters, null, null, null); 

    for (int i = 0; i < videocursor.getCount(); i++) { 
     videocursor.moveToPosition(i); 
     imageUrls.add(videocursor.getString(videocursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA))); 
      } 
    options = new DisplayImageOptions.Builder() 
     .showStubImage(R.drawable.stub_image) 
     .showImageForEmptyUri(R.drawable.image_for_empty_url) 
     .cacheInMemory() 
     .cacheOnDisc() 
     .build(); 

    imageAdapter = new ImageAdapter(this, imageUrls); 

:私は、カスタムギャラリー

コードをビルドするには、次のコードを使用していますビデオ期間。ギャラリー内で表現してください

ビデオと画像付きのカスタムギャラリーのプロジェクトに不具合がある場合は、 のリンクを投稿してください。実際には、複数の画像と動画ファイルを選択するためのカスタムギャラリーを作成します。私はGoogleでたくさん検索しましたが、私はカスタム画像ギャラリーを見つけていますが、ビデオではなく、この問題を解決するのを助けてください。

+2

あなたがやってしまったものを投稿することができますか?私は同じことをしようとしている。 – scientiffic

答えて

5

複数のオプションを選択するカスタムGridViewからアイデアを得ることができます。 Githubにはオープンソースプロジェクトがあります。あなたは

imageView.setImageURI(uri);// URI of Image from SD Card 

または

imageView.setImageResource(mThumbIds[position]); 

を変更する必要があり、この例では

https://github.com/paramvir-b/AndroidGridViewCompatLib

enter image description here

ビデオ用の

: -

Video Thumbnail is in the form of Bitmap so you can show in ImageView. 
private Bitmap bmThumbnail; 
private ImageView videoview = null; 
bmThumbnail = ThumbnailUtils.createVideoThumbnail(PATH_OF_THE_VIDEO,Thumbnails.MICRO_KIND); 
videoview.setImageBitmap(bmThumbnail); 

期間を取得する: -

String[] proj = { MediaStore.Video.Media.DATA ,MediaStore.Video.Media.DURATION}; 
Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
if (cursor == null) 
    return null; 
int column_index = cursor 
     .getColumnIndexOrThrow(MediaStore.Video.Media.DATA); 
int column_index_duration = cursor 
     .getColumnIndexOrThrow(MediaStore.Video.Media.DURATION); 
cursor.moveToFirst(); 
long duration= cursor.getInt(column_index_duration); 
String videoPath= cursor.getString(column_index); 
+0

ビデオのサムネイルと再生時間と一緒にビデオパスを取得するにはどうすればいいですか? –

+0

@ madanV私の更新されたanswer.Plzを見てみてください。 –

+0

あなたの返信に感謝します。私はそれを試してみます –

0

ビデオのサムネイルと期間行き方:このリンクをチェックボックスで Androidのカスタムイメージギャラリーをお試しください

for(int ii = 0; ii < videocursor.getCount(); ii ++){ 
       videocursor.moveToPosition(ii); 
       int id_v = videocursor.getInt(video_column_index); 
       int datacolumn_v = videocursor.getColumnIndex(MediaStore.Video.Media.DATA); 
       long duration = videocursor.getInt(video_column_duration);    // getting duration of the every videos 

       String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(duration), 
         TimeUnit.MILLISECONDS.toMinutes(duration) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(duration)), 
         TimeUnit.MILLISECONDS.toSeconds(duration) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration))); 

       durationcount.add(hms); 

       bitList.add(MediaStore.Video.Thumbnails.getThumbnail(getContentResolver(), id_v, 
         MediaStore.Video.Thumbnails.MICRO_KIND, null)); 
       arrPathList.add(videocursor.getString(datacolumn_v)); 
      } 
0
int column_index_thumb_data = videoCursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA); 

String thumbnail = videoCursor.getString(column_index_thumb_data); 
+3

[回答を正しくフォーマットしてください] – Dwhitz

+2

あなたのソリューションがなぜ機能するのか説明できますか?将来の読者にとっては、手がかりを持たずに貼り付けをコピーするのではなく、何かが機能する理由を知ることが重要です –

関連する問題