我试过这个代码,但无法得到缩略图了,也试过不同的方法来得到缩略图,我应该为安卓Q改变什么?
private void getVideoList(){
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) {
String[] projection = new String[]{
MediaStore.Video.VideoColumns._ID,
MediaStore.Video.VideoColumns.DISPLAY_NAME,
MediaStore.Video.VideoColumns.DURATION,
MediaStore.Video.VideoColumns.SIZE,enter code here
MediaStore.Video.VideoColumns.DATA,`enter code here`
};
String selection = MediaStore.Video.Media.DURATION + " <= ?";
String[] selectionArgs = new String[]{
String.valueOf(TimeUnit.MILLISECONDS.convert(30, TimeUnit.SECONDS))
};
String sortOrder = MediaStore.Video.Media.DATE_ADDED + " ASC";
try (Cursor cursor = getApplicationContext().getContentResolver().query(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
selectionArgs,
sortOrder
)) {
}
}
}
}
使用这个方法来获取视频缩略图。
public static Bitmap getThumbVideo(Context context, Uri videoUri){
Bitmap bitmap = null;
MediaMetadataRetriever mediaMetadataRetriever = null;
try {
mediaMetadataRetriever = new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource(context, videoUri);
bitmap = mediaMetadataRetriever.getFrameAtTime(1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
} catch ( Exception e) {
e.printStackTrace();
} finally {
if (mediaMetadataRetriever != null) {
mediaMetadataRetriever.release();
}
}
return bitmap;
}
它适用于当前所有版本的Android。