如何访问android java中的所有视频

Posted

技术标签:

【中文标题】如何访问android java中的所有视频【英文标题】:how to access all videos in android java 【发布时间】:2021-10-09 08:32:57 【问题描述】:

我正在尝试访问所有视频,我需要访问所有完整或不完整的视频。我尝试了以下方法,但它只访问那些完全完整的文件。我检查了文件管理器,它包含那些不完整的文件。有什么方法可以访问所有的 mp4 文件吗?谢谢你的帮助。

public List<Items> getAllVidoes(@NotNull Context context)
    List<Items> temp = new ArrayList<>();

    Uri contentUri = MediaStore.Files.getContentUri("external");

    String selection = MediaStore.MediaColumns.RELATIVE_PATH + "=?";

    String[] selectionArgs = new String[]Environment.DIRECTORY_DOCUMENTS;

    Cursor cursor = getContentResolver().query(contentUri, null, selection, selectionArgs, null);

  
    if (cursor != null)
       while (cursor.moveToNext())
            long id = cursor.getLong(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
     
            Items item = new Items(id);
           
            temp.add(item);
        
        cursor.close();
    
    return temp;

【问题讨论】:

【参考方案1】:

这里的问题是您尝试查询的 Uri 仅显示具有 mimetype mp4movmkv 等的文件,即与视频文件相关联 但是不完整的视频文件在技术上不是视频文件,所以我认为以下内容应该对您有所帮助

您应该使用 uri MediaStore.Files.getContentUri("external") 而不是 MediaStore.Video.Media.EXTERNAL_CONTENT_URI;

例如,我需要访问 Documents 目录中名为 Kamen Rider Decade 的目录

 Uri contentUri = MediaStore.Files.getContentUri("external");

String selection = MediaStore.MediaColumns.RELATIVE_PATH + "=?";

String[] selectionArgs = new String[]Environment.DIRECTORY_DOCUMENTS;

Cursor cursor = getContentResolver().query(contentUri, null, selection, selectionArgs, null);

您可以通过相同的逻辑获取此位置的文件的 ID,但只需稍作修改

long id = cursor.getLong(cursor.getColumnIndex(MediaStore.MediaColumns._ID));

您可以在 while(cursor.movetonext() 中使用的 while 循环中重复此操作

然后你可以把这个 id 添加到你的 items 对象中

 Items item = new Items(id);

【讨论】:

我已经尝试按照你说的做,但它返回一个空列表。我已经在上面编辑了,你能检查一下出了什么问题。 我用过 Environment.getRootDirectory() + "/storage/";为了访问这些项目,但仍然没有结果。 请正确检查目录,并手动记录 uri。我以前使用过这段代码,它完全按照预期工作 已经检查过了。上面的selectionArgs 返回/system/storage/item 给出[] 你想访问哪个目录?

以上是关于如何访问android java中的所有视频的主要内容,如果未能解决你的问题,请参考以下文章

检索Android设备上的所有视频文件

如何从 java / android 中的嵌套 json 对象访问数据? [复制]

如何从Android中的图像数组创建视频?

《Java4Android》视频学习笔记——包和访问权限

如何使用适用于 Android 的 OpenCV 减少实时视频序列中的运动效果?

java.lang.OutOfMemoryError: Failed to allocate a 3110419 byte allocation with 741152 free bytes and(