Мне нужно отобразить миниатюру каждого видео в виде списка, используя библиотеку Picasso для работы быстрее, поэтому мне нужно получить путь к миниатюре для использования.Показать изображение видео
Это мой код, чтобы получить эскиз путь (я нашел его на Google и я что-то изменить, чтобы адаптировать для моего приложения):
String getThumbnailPathForLocalFile(Uri uri)
{
Cursor thumbCursor = null;
try
{
thumbCursor = c.getContentResolver().
query(uri
, null
, null , null, null);
if(thumbCursor.moveToFirst())
{
// the path is stored in the DATA column
int dataIndex = thumbCursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
String thumbnailPath = thumbCursor.getString(dataIndex);
return thumbnailPath;
}
}
finally
{
if(thumbCursor != null)
{
thumbCursor.close();
}
}
return null;
}
Моя GetView функция:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) c
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.listview_item, null);
}
/* create a new view of my layout and inflate it in the row */
// convertView = (RelativeLayout) inflater.inflate(resource, null);
final Item item = items.get(position);
if (item != null) {
TextView t1 = (TextView) v.findViewById(R.id.txt_fileName);
imageCity = (ImageView) v.findViewById(R.id.img_icon);
switch (item.getType()) {
case "video":
String uri2 = item.getPath();
Uri videoUri = MediaStore.Video.Thumbnails
.getContentUri(uri2);
String VideoThumbnailPath =getThumbnailPathForLocalFile(videoUri);
Picasso.with(c).load(new File(VideoThumbnailPath))
.resize(64, 64).into(imageCity);
break;
case "image":
String uri4 = item.getPath();
Picasso.with(c).load(new File(uri4)).resize(64, 64).into(imageCity);
break;
default:
break;
}
if (t1 != null)
t1.setText(item.getName());
}
return v;
}
проверить LogCat и debug, поэтому я обнаружил, что thumbCursor имеет значение null:
12-10 17:52:38.400: E/AndroidRuntime(8659): java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.database.Cursor.moveToFirst()' on a null object reference
12-10 17:52:38.400: E/AndroidRuntime(8659): at com.example.knock.FileArrayAdapter.getThumbnailPathForLocalFile(FileArrayAdapter.java:105)
12-10 17:52:38.400: E/AndroidRuntime(8659): at com.example.knock.FileArrayAdapter.getView(FileArrayAdapter.java:73)
Кто-нибудь может мне помочь? Большое спасибо
говорит об ошибке '' thumbCursor' является null', что приводит к HTTP: // stackoverflow.com/questions/13080540/what-causes-androids-contentresolver-query-to-return-null - может быть, ваш Ури плох. (Это должно быть 'content: // media/external/..' для работы в этом коде) – zapl
Uri Я получаю как: content: //media//storage/emulated/0/DCIM/Camera/20141210_095445.mp4/ видео/миниатюры. это правильно ? – ducanhZ5Z