问题描述
我正在使用视频播放器应用。我的应用在android 9以下运行良好。我正在使用MediaStore.Video访问缩略图和其他数据。该代码不适用于android 9及更高版本。我已获得所有许可。在清单清单中,requestExternalStorageLeagacy设置为true。一切都在android 9以下运行。
public class VideoLoader {
private static final Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
private static final String mediaData = MediaStore.MediaColumns.DATA;
private static final String thumbData = MediaStore.Video.Thumbnails.DATA;
private static final String id = MediaStore.Video.Media._ID;
private static final String name = MediaStore.Video.Media.disPLAY_NAME;
private static final String duration = MediaStore.Video.Media.DURATION;
private static final String size = MediaStore.Video.Media.SIZE;
private static final String resolution = MediaStore.Video.Media.RESOLUTION;
private Context context;
public VideoLoader(Context context) {
this.context = context;
}
public ArrayList<VideoData> runcursor(String sortOrder) {
ArrayList<VideoData> videoList = new ArrayList<>();
String[] projection = new String[]{
mediaData,thumbData,id,name,duration,size,resolution
};
try {
Cursor cursor = context.getContentResolver().query(
uri,projection,null,sortOrder
);
// Cache column indices.
assert cursor != null;
int columnData = cursor.getColumnIndexOrThrow(mediaData);
int thumbColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Thumbnails.DATA);
int idColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID);
int nameColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.disPLAY_NAME);
int durationColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION);
int sizeColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
int resolutionColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.RESOLUTION);
/*int resolutionOfVideo = cursor.getColumnIndexOrThrow(resolution);*/
String absolutePath,mediaDeFinition = null,mediaResolution;
while (cursor.movetoNext()) {
// Get values of columns for a given video.
absolutePath = cursor.getString(columnData);
String parentPath = Objects.requireNonNull(new
File(absolutePath).getParentFile()).getName();
mediaResolution = cursor.getString(resolutionColumn);
long id = cursor.getLong(idColumn);
int resolution = cursor.getInt(resolutionColumn);
Uri contentUri = ContentUris.withAppendedId(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI,id);
VideoData data = new VideoData();
data.setPath(absolutePath);
data.setName(cursor.getString(nameColumn));
data.setTime(new File(absolutePath).lastModified());
data.setDate(new File(absolutePath).lastModified());
data.setFolder(parentPath);
data.setDuration(cursor.getInt(durationColumn));
data.setSize(cursor.getInt(sizeColumn));
data.setResolution(mediaResolution);
data.setMediaDeFinition(mediaDeFinition);
videoList.add(data);
Log.i("thumb"," === "+cursor.getString(thumbColumn));
Log.i("name"," === "+cursor.getString(nameColumn));
Log.i("folder"," === "+parentPath);
Log.i("date"," === "+new File(absolutePath).lastModified());
Log.i("duration"," === "+cursor.getInt(durationColumn));
Log.i("size"," === "+cursor.getInt(sizeColumn));
Log.i("resolution One Number"," === "+resolution);
Log.i("resolution Two Number"," === "+mediaResolution);
Log.i("quality"," === "+mediaDeFinition);
Log.i("contentUri"," === "+contentUri);
}
cursor.close();
} catch (IllegalArgumentException e) {
e.printstacktrace();
}
return videoList;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)