Sunny
Sunny

Reputation: 1076

Video thumbnail return null

I am creating thumbnails from videos stored in my sd card ,displaying thumbnails and its names in grid view. On item selected event of the grid view pop ups a dialog and asking x, y, right, bottom positions then pasting it to the main activity . I got the video files, and tried to create thumbnail using media store also am retrieving thumbnail as bitmap, but the bitmap is null. In the grid view video names are shown and i am able to select the corresponding thumbnail and can give positions also am able set the thumbnail to the main activity. The problem is the bitmap is null and bitmap image not showing(text vie video name shown). What's the problem ? I can't figure it out? Plz help me? My code is given below. thanks in advance.

      if (f.isFile()) {
      if (fName.endsWith(".mpg")
    || fName.endsWith(".mov")
    || fName.endsWith(".wmv")
    || fName.endsWith(".rm")
    || fName.endsWith(".mp4")) {
    tv.setText(fName);
    path = f.getAbsolutePath();
    System.out.println("Video file path=>"+path);


 thumb = ThumbnailUtils.createVideoThumbnail(f.getAbsolutePath(),MediaStore.Video.Thumbnails.MICRO_KIND);


    if(thumb==null)
      {
         /**Every time it printing null**/
         System.out.println("Thumb is null");

      }
      iv.setImageBitmap(thumb);

Upvotes: 7

Views: 4574

Answers (3)

kingfahad
kingfahad

Reputation: 68

If you are creating thumbnail from sd card video this would create ThumbnailUtils.createVideoThumbnail otherwise use a cursor.

See this example.

Upvotes: 1

kolobok_ua
kolobok_ua

Reputation: 4190

From ThumbnailUtils.createVideoThumbnail documentation: May return null if the video is corrupt or the format is not supported.

By default, almost all supported formats are mp4 and 3gp. See here: http://developer.android.com/guide/appendix/media-formats.html for full list of default-supported media formats.

Upvotes: 3

Veerababu Medisetti
Veerababu Medisetti

Reputation: 2755

Try this code. It is getting the thumbnail of videos from urls. instead of pass the path of sd card .it will help you . Dont forgot to add internet permission in manifest file.
public class VideoThumbnailActivity extends Activity {

    public static final String Downloader = null;
    static String uri1="http://daily3gp.com/vids/lucky_guy.3gp";
    static String uri2="http://daily3gp.com/vids/reporter_hit_by_plane.3gp";
    static String uri3="http://daily3gp.com/vids/motorcycle_wipesout_explodes.3gp";
    static String uri4="http://commonsware.com/misc/test2.3gp";
    public static  String uri_array[]={uri1,uri2,uri3,uri4,uri1,uri2,uri3,uri4,uri1,uri2,uri3,uri4};


    ImageView imageView;
    String url;
    Gallery ga1,ga2;

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        imageView = (ImageView)findViewById(R.id.imageView);
        ga1 = (Gallery)findViewById(R.id.gallery1);
        ga1.setAdapter(new ImageAdapter(getApplicationContext()));
        imageView.setImageBitmap(ThumbnailUtils.createVideoThumbnail(uri_array[0], MediaStore.Video.Thumbnails.FULL_SCREEN_KIND));

        //on click event on gallery
        ga1.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View view, final int position,long arg3) {
             imageView.setImageBitmap(ThumbnailUtils.createVideoThumbnail(uri_array[position], MediaStore.Video.Thumbnails.FULL_SCREEN_KIND));

             //on click event on imageview to play video
             imageView.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View view) {
                                // TODO Auto-generated method stub
                                Intent intent = new Intent(getApplicationContext(),PlayActivity.class);
                                intent.putExtra("path",uri_array[position]);
                                startActivity(intent);
                            }
                        });

                        }

                });

            }

            public class ImageAdapter extends BaseAdapter {

                private Context ctx;
                int imageBackground;

                public ImageAdapter(Context c) {
                    ctx = c;
                    TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
                    imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);
                    ta.recycle();
                }

                @Override
                public int getCount() {

                    return uri_array.length;

                }

                @Override
                public Object getItem(int arg0) {

                    return arg0;
                }

                @Override
                public long getItemId(int arg0) {

                    return arg0;
                }

                @Override
                public View getView(int position, View view, ViewGroup arg2) {

                    ImageView iv = new ImageView(ctx);
                    Bitmap curThumb = null;
                    curThumb = ThumbnailUtils.createVideoThumbnail(uri_array[position],MediaStore.Video.Thumbnails.FULL_SCREEN_KIND);
                    iv.setImageBitmap(curThumb);
                    iv.setScaleType(ImageView.ScaleType.FIT_XY);
                    iv.setLayoutParams(new Gallery.LayoutParams(150,120));
                    iv.setBackgroundResource(imageBackground);
                    return iv;
            }
        }

let me know your problem is resolved or not.

Upvotes: 0

Related Questions