无法从 android Q 中的 Uri 加载视频缩略图
Unable to load video thumbnail from Uri in android Q
我试过这段代码。但无法再获得缩略图。
还尝试了不同的方法来获取缩略图。
我应该为 android 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 的所有当前版本。
我试过这段代码。但无法再获得缩略图。 还尝试了不同的方法来获取缩略图。 我应该为 android 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 的所有当前版本。