我有两个清单。我们将它们称为AlbumsList 和PicturesList。
- 第一个显示相册封面(其中一张图像)、名称和其中的照片数量。
- 第二个显示所选相册中包含的所有图像。
我已经使用 File 类完成了此操作,但它运行速度太慢,并且当我只需要图库中的图像时会找到设备上的所有图像。
我读过有关 MediaStore 内容提供商的内容,但从未使用过它。所以我有两个问题:
- 如何使用 MediaStore 类查找“相册”(图库中包含图片的文件夹)、缩略图以及其中的图片数量?我认为这类似于“如何查找图库中所有图像的文件路径和缩略图?”
- 如何使用 MediaStore 类获取特定文件夹中所有图像的文件路径和缩略图?
编辑:
MediaStore.Images.Media.DATA 列似乎包含文件路径,因此我可以获取相册文件夹。 MediaStore.Images.Media.Display_NAME 看起来像一个文件名,但我不确定它是否总是正确的。
我可以在不进行第二次查询的情况下将缩略图数据列添加到这些列中吗?
这是我写的代码:
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = { MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_ID,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME };
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
ArrayList<String> ids = new ArrayList<String>();
mAlbumsList.clear();
if (cursor != null) {
while (cursor.moveToNext()) {
Album album = new Album();
int columnIndex = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_ID);
album.id = cursor.getString(columnIndex);
if (!ids.contains(album.id)) {
columnIndex = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
album.name = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(MediaStore.Images.Media._ID);
album.coverID = cursor.getLong(columnIndex);
mAlbumsList.add(album);
ids.add(album.id);
} else {
mAlbumsList.get(ids.indexOf(album.id)).count++;
}
}
cursor.close();
它使用我的ALbum
类和先前声明的变量mAlbumsList
但我认为它已经足够清楚了,可以理解它是如何工作的。也许它会对某人有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)