Custom gallery with images and videos in android for selecting multiple items

I want to create my own gallery to display all the images and videos (along with the duration) in the SD card. I use the following code to create a custom gallery

Code:

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

from the above code I can get the path to the video, how can I get the thumbnail of the video along with the duration of the video. and submit it to the gallery

if there are any projects in projects for your own gallery with videos and images, please post links I really want to create my own gallery to select several image and video files. I searched a lot on google, I find my own image gallery, but not with the video, please help me in solving this problem.

+6
source share
4 answers

You can take an idea from Custom GridView with the ability to select several options. Github has an open source project.

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

enter image description here

in this example you need to change

  imageView.setImageResource(mThumbIds[position]); 

to

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

or

  imageView.setImageBitmap(bitmap); 

For video: -

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

to receive Duration: -

 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); 
+5
source

Receiving video Thumbnails and duration:

 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
source

Try this link Android Custom Image Gallery with a checkmark in the grid to select multiple items

http://vikaskanani.wordpress.com/2011/07/20/android-custom-image-gallery-with-checkbox-in-grid-to-select-multiple/

0
source
  int column_index_thumb_data = videoCursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA); String thumbnail = videoCursor.getString(column_index_thumb_data); 
0
source

Source: https://habr.com/ru/post/952559/


All Articles