【问题标题】:Not getting all media files which inserted manullay in sd card没有得到所有手动插入 SD 卡的媒体文件
【发布时间】:2015-02-18 08:39:41
【问题描述】:

我使用以下查询从 sd 卡加载所有图片或视频,它会相应地工作。但是当我手动将一些视频或图片添加到不同文件夹的 sd 卡中时,查询后它不会加载。请给我同样的建议。

    final String[] columns = { MediaStore.Video.Media.DATA,
                MediaStore.Video.Media._ID};


        final String orderBy = MediaStore.Video.Media.DATE_TAKEN;
        Uri videosuri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;

        Cursor imagecursor = getContentResolver().query(videosuri, columns, null, null, orderBy);


        if (imagecursor != null && imagecursor.getCount() > 0) {

            while (imagecursor.moveToNext()) {

                int video_id=imagecursor.getInt(imagecursor.getColumnIndex(MediaStore.Video.Media._ID));
                int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Video.Media.DATA);
 String path=imagecursor.getString(dataColumnIndex);



            }
        }

【问题讨论】:

    标签: android media-queries


    【解决方案1】:

    当您“将一些视频或图片手动添加到不同文件夹的 sd 卡中”时,必须更新 MediaStore 以便它们可用于您的查询,以及使用 @987654323 的其他应用程序@后端。

    通过 MTP 或 Gallery 等应用程序添加它们将调用 MediaScanner(或一些类似的过程)将它们添加到 MediaStore,但通过 adb push 或在您自己的代码中添加它们需要您明确地这样做之后。

    在您的代码中,将图像或视频文件写入 SDCard 后,您可以通过在类中实现 MediaScannerConnectionClient 接口,将其实例化,然后调用,将文件的路径和 MIME 类型传递给 MediaScanner scan()。然后MediaScanner 将打开文件,收集/生成元数据,并将文件添加到 MediaStore

    有关使用此方法的示例类,请参阅 android - dynamically add pictures to gallery widget

    【讨论】:

    • 好的意味着文件将在完成内部正确的扫描过程后进入查询。我没有通过 vai 代码手动将文件插入 sd 卡
    • 要么您需要在代码中的每个特定文件上触发媒体扫描,如我上面答案中的链接中所述,要么必须运行共享存储的完整媒体扫描,以便系统可以找到新的文件并将它们添加到MediaStore。据我所知,系统自动执行此媒体扫描的唯一时间是挂载存储分区时;对于内部存储,这意味着系统启动时。因此,如果您不触发自己的媒体扫描,则可能必须等到设备重新启动,或者其他进程以某种方式强制对共享存储进行完整的媒体扫描。
    • 但是我的应用程序如何知道用户在 sd 卡中手动添加了一些图像/视频以及何时运行此媒体扫描以及在哪里?
    • 如果用户通过触发媒体扫描的方法添加它,例如通过 MTP 或 Gallery 等应用程序,那么它几乎可以立即用于您的查询。如果他们通过触发媒体扫描的方法添加它,例如adb push 或不调用MediaScanner 的应用程序,那么您的图像/视频将无法使用查询,直到发生完整的媒体扫描。
    • 没有用户通过usb线添加到sd卡中,将手机连接到电脑意味着他们只是从其他地方复制并粘贴到sd卡中。那么我如何检查和进行媒体扫描
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多