Android ThumbnailUtils返回null,filenotfoundexception?

问题描述:

当前尝试从返回的视频(从图库或设备上的视频意图)获取缩略图以显示在ImageView中,但获取FileNotFound异常并返回空位图。不完全确定我要出错的地方,尽管从错误来看它肯定是不正确的路径。有任何想法吗?Android ThumbnailUtils返回null,filenotfoundexception?

if (requestCode == GALLERY_VIDEO_CODE || requestCode == VIDEO_CODE) { 
      videoURI = data.getData(); 
      if(videoURI != null) { 
       MediaPlayer mp = MediaPlayer.create(this, videoURI); 
       int duration = mp.getDuration(); 
       mp.release(); 
       if (duration <= 11000) { 
        addBtn.setVisibility(View.INVISIBLE); 
        clearBtn.setVisibility(View.VISIBLE); 
        Toast.makeText(this, "Video added!", Toast.LENGTH_LONG).show(); 
        File file = new File(videoURI.getPath()); 
        Bitmap bm = ThumbnailUtils.createVideoThumbnail(file.getAbsolutePath(), MediaStore.Video.Thumbnails.MINI_KIND); 
        userPhoto.setImageBitmap(bm); 
       } else { 
        videoURI = null; 
        Toast.makeText(this, "Video too long - maximum duration is 10 seconds", Toast.LENGTH_LONG).show(); 
        addBtn.setVisibility(View.VISIBLE); 
        clearBtn.setVisibility(View.INVISIBLE); 
       } 
+0

'档案文件=新的文件(videoURI.getPath())' - 这只能如果'Uri'有一个'file'方案。大多数情况下,你不会有一个'Uri'和'file'方案。相反,它会有一个“内容”方案。 – CommonsWare

+0

在这种情况下,有什么办法可以得到它的缩略图吗? – markeh21

+0

将'videoURI'传递给毕加索,让它给你一个缩略图:https://github.com/commonsguy/cw-omnibus/blob/v7.6/RecyclerView/VideoList/app/src/main/java/com/commonsware /android/recyclerview/videolist/RowController.java#L61-L65 – CommonsWare

通过获取我的文件路径使用此装进createVideoThumbnail()方法有点解决了这个:https://*.com/a/20470572/5325511