如何解决MediaStore 查询未获取所有艺术家和摄像机视频
我使用下面的代码来查询音乐文件的所有艺术家,该方法效果很好,但问题是缺少艺术家列,并且该列在其他音乐应用程序中可见,所以我在查询过程中遗漏了什么吗?>
void loadAudioData() {
ContentResolver contentResolver = Objects.requireNonNull(getActivity()).getContentResolver();
final Uri uri = MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Audio.Artists._ID,MediaStore.Audio.Media.ARTIST,MediaStore.Audio.Artists.ARTIST,MediaStore.Audio.Artists.NUMBER_OF_TRACKS};
cursor = contentResolver.query(uri,projection,null,null);
if (cursor != null && cursor.moveToFirst())
while (cursor.moveToNext())
songsList.add(new Song(cursor.getString(2),cursor.getString(0),cursor.getString(3)));
cursor.close();
String sortType = sharedPreferences.getString("artist_sort","artist a to z");
boolean isReverse = sharedPreferences.getBoolean("artist_sort_isReverse",false);
if (sortType != null)
Song.sortArtist(songsList,sortType,isReverse);
}
这里也有同样的问题,但对于摄像头视频,查询过程会获取除摄像头视频之外的所有视频。
public List<ImageVideo> getAllVideos(){
Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Video.Media.DATA,MediaStore.Video.Media.TITLE};
final String orderBy = MediaStore.Video.Media.DATE_TAKEN;
Cursor cursor = Objects.requireNonNull(getContext()).getContentResolver().query(uri,orderBy + " DESC");
videoList = new ArrayList<>();
if(cursor.moveToFirst()) {
while (cursor.moveToNext()) {
videoList.add(new ImageVideo(cursor.getString(1),cursor.getString(0)));
}
}
cursor.close();
return videoList;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。