2010-07-18 9 views
0

J'ai essayé de créer une miniature de vidéo comme décrit here. J'ai aussi lu la référence here.Impossible d'obtenir une miniature de vidéo dans Android 2.0+

Dans mon application j'ai d'abord laisser l'utilisateur choisir une vidéo avec:

startActivityForResult(new Intent(Intent.ACTION_GET_CONTENT).setType("video/*"), ACTIVITY_PICKVIDEO); 

Puis-je déterminer l'ID vidéo avec:

fileID = Integer.parseInt(contentUri.getLastPathSegment()); 

Ainsi, la vidéo content://media/external/video/media/5 aurait l'ID 5.

Ensuite, j'essaie d'obtenir le bitmap avec des vignettes:

ContentResolver crThumb = getContentResolver(); 
BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 1; 
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, fileID, MediaStore.Video.Thumbnails.MICRO_KIND, options); 

Aucune exception n'a été levée mais le bitmap a une largeur et une hauteur de -1. Je ne suis pas sûr si l'ID nécessaire dans getThubnail() est réellement l'ID que j'ai déterminé ci-dessus.

Quelqu'un sait-il d'un exemple de travail comment obtenir le bitmap miniature si vous avez le contenu Uri? Fait intéressant (peut-être ainsi) Je obtiens la valeur zéro lorsque j'essaie avec MediaStore.Video.Thumbnails.MINI_KIND comme taille de vignette et IllegalArgumentException ("Unsupported kind: 2") quand j'essaye FULL_SCREEN_KIND. J'utilise Motorola Milestone avec Android 2.1.

EDIT: Je aussi essayé d'obtenir l'ID avec l'interrogation pour le BaseColumns._ID mais il se révèle être le même que dans le Uri (dans l'exemple donné la _ID est 5).

Répondre

10

pour obtenir id vidéo essayer cette

String[] proj = { 
    MediaStore.Video.Media._ID, 
     MediaStore.Video.Media.DISPLAY_NAME, 
    MediaStore.Video.Media.DATA 
}; 
Cursor cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 
            proj, MediaStore.Video.Media.DISPLAY_NAME+"=?",new String[] {"name.mp4"}, null); 
cursor.moveToFirst() 
fileid = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media._ID)); 

pour obtenir la vignette:

ContentResolver crThumb = getContentResolver(); 
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb,fileid, MediaStore.Video.Thumbnails.MICRO_KIND, options); 
iv2.setImageBitmap(curThumb); 

ici iv2 est imageview et nom_video.mp4 représenteront votre nom de fichier

+0

@Manuel: utiliser cette fonction android.media.ThumbnailUtils.createVideoThumbnail (\t \t \t \t \t chemin d'accès, MediaStore.Video.T humbnails.MINI_KIND); ici chemin est le chemin du fichier en utilisant cela, vous pouvez obtenir la vignette d'une vidéo particulière –