当前位置: 首页 > 知识库问答 >
问题:

如何从Android本地存储中获取媒体文件(图像、视频、音频)?

慕璞
2023-03-14

我正在制作一个音乐播放器应用程序,它将从本地存储中获取歌曲

共有2个答案

潘意
2023-03-14

您需要先读取外部存储:

这可能会帮助您:

public static List<File> getAllMediaFilesOnDevice(Context context) {
        List<File> files = new ArrayList<>();
        try {

            final String[] columns = { MediaStore.Images.Media.DATA,
                    MediaStore.Images.Media.DATE_ADDED,
                    MediaStore.Images.Media.BUCKET_ID,
                    MediaStore.Images.Media.BUCKET_DISPLAY_NAME };

            MergeCursor cursor = new MergeCursor(new Cursor[]{context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, null),
                    context.getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, columns, null, null, null),
                    context.getContentResolver().query(MediaStore.Images.Media.INTERNAL_CONTENT_URI, columns, null, null, null),
                    context.getContentResolver().query(MediaStore.Video.Media.INTERNAL_CONTENT_URI, columns, null, null, null)
            });
            cursor.moveToFirst();
            files.clear();
            while (!cursor.isAfterLast()){
                String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
                int lastPoint = path.lastIndexOf(".");
                path = path.substring(0, lastPoint) + path.substring(lastPoint).toLowerCase();
                files.add(new File(path));
                cursor.moveToNext();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return files;
    }
宗沛
2023-03-14

1-使用最新的Android API访问共享媒体存储变得复杂

此处记录了最常用的方法:https://developer.android.com/training/data-storage/shared/media

对于kotlin:

val projection = arrayOf(media-database-columns-to-retrieve)
val selection = sql-where-clause-with-placeholder-variables
val selectionArgs = values-of-placeholder-variables
val sortOrder = sql-order-by-clause

applicationContext.contentResolver.query(
    MediaStore.media-type.Media.EXTERNAL_CONTENT_URI,
    projection,
    selection,
    selectionArgs,
    sortOrder
)?.use { cursor ->
    while (cursor.moveToNext()) {
        // Use an ID column from the projection to get
        // a URI representing the media item itself.
    }
}

音频文件,存储在报警/目录、有声读物/目录、音乐/目录、通知/目录、播客/目录和铃声/目录中,以及音乐/目录或电影/目录中的音频播放列表。系统将这些文件添加到MediaStore。音频表。

视频文件有一个示例:https://developer.android.com/training/data-storage/shared/media#query-集合

您可以将其用于更改相关查询参数的音频文件

 类似资料:
  • 我的音乐应用程序从外部应用程序启动,使用意向数据作为音乐文件。 我有mp3音频URI,类似这样 file:///storage/emulated/0/Music/Tamil/I(2014)/Ennodu Nee Irundhaal。mp3 如何从媒体获取音频详细信息。标题,媒体。相册,媒体_身份证件

  • 我试图让媒体播放器播放存储在本地/外部存储器中的媒体文件。 媒体文件使用单独的活动下载并存储在本地/外部存储中。有关存储的示例代码,请参阅下面。 对于播放同一文件,我使用。 但是,媒体播放器拒绝播放文件,并且总是以错误(1,)失败。我真的是无能为力,使这个媒体播放器运行,因为我似乎已经做了一切与代码示例内联,使它从本地/外部存储读取文件。 注意:当我替换一个本地文件与一个文件从res/生文件夹,这

  • 我正在为WhatsApp使用Twilio沙箱,当我发送一个图像时,我在webhook中收到的有效负载工作正常,我可以获得图像的url,但不能使用音频文件(语音消息)。 我正面临一个音频问题,如果我从WhatsApp发送语音消息,我的webhook中的有效负载不包括音频URL。 这里是有效载荷: 我希望url媒体如下所示:

  • 本文向大家介绍Android编程实现获取多媒体库视频、音频、图片的方法,包括了Android编程实现获取多媒体库视频、音频、图片的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程实现获取多媒体库视频、音频、图片的方法。分享给大家供大家参考,具体如下: 从媒体库中查找音频、视频、图片文件的相关信息,并获取视频、图片、专辑图片的缩略图 和一些文件操作 更多关于Androi

  • 多媒体 HTML5 前的多媒体需要借助第三方插件,例如 Flash,但是 HTML5 将网页中的多媒体带入了新的一章。 基本用法 // 音频 // 指定资源类型可以帮助浏览器更快的定位解码 <audio autobuffer autoloop loop controls> <source src="/media/audio.mp3" type="audio/mpeg"> <source s

  • 我有一个使用AES算法加密的视频文件,但我需要在播放视频视图之前解密视频。问题是解密视频所需的时间太长。有什么办法我可以做到吗。 更新: E/ExoPlayerIMIPER内部:播放错误com.google.android.exoplayer2.upstream.2. ExoPlaybackException:源错误在com.google.android.exoplayer2. ExoPlayer