MediaStore:获取图像数据、缩略图和文件夹

2023-11-23

我有两个清单。我们将它们称为AlbumsList 和PicturesList。

  • 第一个显示相册封面(其中一张图像)、名称和其中的照片数量。
  • 第二个显示所选相册中包含的所有图像。

我已经使用 File 类完成了此操作,但它运行速度太慢,并且当我只需要图库中的图像时会找到设备上的所有图像。 我读过有关 MediaStore 内容提供商的内容,但从未使用过它。所以我有两个问题:

  1. 如何使用 MediaStore 类查找“相册”(图库中包含图片的文件夹)、缩略图以及其中的图片数量?我认为这类似于“如何查找图库中所有图像的文件路径和缩略图?”
  2. 如何使用 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(使用前将#替换为@)

MediaStore:获取图像数据、缩略图和文件夹 的相关文章

随机推荐

  • 无法使用 SparkSubmitOperator 执行 Spark 作业

    我能跑Spark工作使用BashOperator但我想用SparkSubmitOperator对于它使用Spark 独立模式 Here s my DAG for SparkSubmitOperator and 堆栈跟踪 args owner
  • “ng-show”和“ng-hide”有什么区别?

    这些属性都被赋予true or false值 那么它们之间有什么区别呢 如果它们没有价值 那就有意义了 我错过了什么吗 With ng show如果表达式为 则显示元素true 如果是的话就会隐藏false 另一方面与ng hide如果表达
  • Html.fromHtml() 不适用于文本的背景颜色

    我正在尝试设置背景TextView using Html fromHtml 特别是 我想设置第一个单词的背景 我使用了以下代码 Html fromHtml font color red someText font 并且它以文本颜色成功执行
  • 当 MySQL 或 PostgreSQL 中有 TEXT 字段时,是否应该将其放在单独的表中?

    我听说 如果您有一个包含 TEXT 列的表 该列将保存大量文本数据 那么将该列移动到单独的表中并通过 JOIN 与基本记录获取它会更好地提高性能 这是真的吗 如果是的话 为什么 不使用 PostgreSQL 来自手册 非常长的值也存储在后台
  • 配置 Atlassian JIRA 插件以与 Jenkins CI 系统配合使用

    我正在尝试使用 Jenkins 配置 JIRA 插件 但收到错误 这是一个有效的 URL 但它看起来不像 JIRA 我正在尝试连接到我公司安装的 JIRA studio 即 http company jira com 我知道这个 URL 是
  • Crystal 在 SetDataSource 中报告错误

    我在 VS 2010 sap crystalreports 中遇到问题 使用 C 制作 Windows 应用程序 我使用以下代码收到以下错误 CrystalReport1 cr1 new CrystalReport1 cr1 SetData
  • 如何读取带有未转义反斜杠的 JSON 文件?

    我有一个包含连接字符串的 JSON 文件 abc json host 1 2 3 4 user abc passwd s yz u42 dbname sample port 2341 这是我的 Python 脚本 它尝试读取数据 impor
  • Oracle 11g - 如何优化缓慢的并行插入选择?

    我们希望加快下面并行插入语句的运行速度 我们预计插入大约 80M 条记录 大约需要 2 小时才能完成 INSERT PARALLEL STAGING EX 16 APPEND NOLOGGING INTO STAGING EX ID TRA
  • Silverlight + MVVM + 绑定 = 内存泄漏?

    到目前为止 我的测试表明 在 silverlight 中利用 MVVM 模式的所有标准方法 示例和框架都面临着一个巨大的问题 大量内存泄漏 导致 VM 无法被垃圾收集 显然这是一个巨大而荒谬的说法 所以我的期望是有人会对我出错的原因和地方有
  • 向作为 Laravel 通知发送的电子邮件添加标头

    有人知道如何在发送的电子邮件中添加标头Laravel 通知系统 我不是在谈论Mailable我可以通过以下方式设置标题的类withSwiftMessage method 我也想继续使用MailMessage一旦我使用了很多电子邮件line
  • 删除标题标签工具提示

    有没有办法从标题属性中删除工具提示而不实际删除标题 我有一个带有这样标题属性的链接 a href url title anotherURL a 标题完好无损很重要 因为我需要从那里读取网址 我发现的所有修复方法都是删除标题属性并重用它 但在
  • Android Facebook SDK:“(# 404) Keyhash XXXXXX 与任何存储的密钥哈希不匹配”

    我正在尝试将 Android Facebook 集成到一个应用程序中 我是新来的 我已经获得了 Facebook SDK 并且正在尝试从那里运行一些示例 当我运行示例时 出现此错误 404 Keyhash XXXXXX 与任何存储的密钥哈希
  • 如何开玩笑地模拟 AWS 库

    我正在使用 aws amplify 库中的登录方法 在玩笑中运行测试用例时 我无法从该库调用signIn方法 Code import Auth from aws amplify import statement code for funct
  • 获取DatagridviewComboBoxCell的SelectedIndex

    我有一个Winforms应用程序有一个DataGridView The DataGridView未绑定到数据源 我正在读取一个文本文件 并根据文件中的每一行 将每一行的值放置到数据网格中 我的网格中有一个列是ComboBoxColumn 它
  • sails.js(使用node.js 和express.js)的标题或应用程序名称在哪里?

    我正在尝试更改我的网站名称 找不到可以设置标题或应用程序名称的位置 您可以在以下位置创建任何文件config 目录 例如config app js其中包含这样的内容 module exports appName My App 导出对象的任何
  • 设计和编码 - 从上到下还是从下到上? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 在编码时 根据您的经验 什么是更好的方法 将问题分解为足够小的部分 然后实施每个部分 将问题分解 然后使用自上而下的方法实施 任何其他 我倾向于自上而下设计并自下而上实施 对于实施而言 构
  • 尝试将消息发送到远程队列时 pika.exceptions.ProbableAuthenticationError

    我正在尝试奔跑RabbitMQ Python 教程但发送方位于 virtualbox 主机上 接收方和队列位于 virtualbox 来宾机上 所以我修改了提到的send py仅通过替换代码本地主机 with 192 168 1 5 当我运
  • 如何从菜谱目录的内容生成私有菜谱 JSON?

    我已经开发了一个 Symfony 包 并且正在尝试创建一个配方 在提交之前recipes contrib 我想测试一下 所以我跟着私人食谱说明 不是因为我想要一个私有配方 也就是说 包和配方都不是私有 GitHub 项目意义上的 私有 我已
  • ios编程-格式字符串未使用数据参数

    I get a Data argument not used by format string当我运行以下代码时出错 void pickerView UIPickerView thePickerView didSelectRow NSInt
  • MediaStore:获取图像数据、缩略图和文件夹

    我有两个清单 我们将它们称为AlbumsList 和PicturesList 第一个显示相册封面 其中一张图像 名称和其中的照片数量 第二个显示所选相册中包含的所有图像 我已经使用 File 类完成了此操作 但它运行速度太慢 并且当我只需要