【问题标题】:Browsing for audio files on Android在 Android 上浏览音频文件
【发布时间】:2017-08-12 00:35:43
【问题描述】:

我需要使用用户的播放列表和音乐应用中的歌曲浏览用户设备上的音频文件,然后将选定的音频文件传递给我们的播放器。

Android MediaStore 是否包含所有音频文件的主副本,以及我从其他应用程序设置的用户定义的播放列表?我正在寻找类似于 iOS 上的MediaLibrary 的 API。

MediaStore Reference Documentation 没有为我提供有关如何实际使用 API 的足够详细信息,而且文档的 TrainingAPI GuidesSamples 部分似乎也没有涵盖它。 Random Music Player sample 似乎已过时,无法与 Android Studio 一起编译。

我假设我的浏览器代码需要存在于服务中。正确的?是否有可用的示例/文档?

Content Provider API 呢?这有时会出现在代码示例中,但不清楚它是否会允许访问用户的音频文件。

我尝试使用以下 Intent,但它们没有让我以我需要的方式访问音频文件。是否存在应该使用的现有 Intent?

使用Intent.ACTION_GET_CONTENT 会在设备上打开文件系统的文件浏览器,显示音频文件。关闭,但不是这里需要的。

private fun pickAudioFileWithACTION_GET_CONTENT() {
    val intent = Intent( Intent.ACTION_GET_CONTENT )
    intent.setType("audio/*")
    val chooserIntent = Intent.createChooser( intent, "Select soundfile")
    startActivityForResult( chooserIntent, SELECT_MUSIC )
}

使用MediaStore.INTENT_ACTION_MEDIA_SEARCH 允许选择具有选择器但也可以播放的应用程序。我无法控制会发生什么,所以我也不认为这是需要的。

private fun pickAudioFileWithMediaStoreINTENT_ACTION_MEDIA_SEARCH() {
    val mediaSearchIntent = Intent( MediaStore.INTENT_ACTION_MEDIA_SEARCH )
    val mediaSearchChooserIntent = Intent.createChooser( mediaSearchIntent, "Select soundfile")

    startActivityForResult( mediaSearchChooserIntent, SELECT_MUSIC )
}

我们将不胜感激有关其工作方式的建议以及文档和/或示例的指针。

【问题讨论】:

    标签: android mediastore


    【解决方案1】:

    Android MediaStore 是否包含所有音频文件的主副本

    它有一个所有已被索引的文件的索引。这可能包括音频文件。不要求它包含所有音频文件,因为并非所有音频文件都必须位于MediaStore 可以访问的位置(例如,单个应用程序的私人存储)。

    以及我在其他应用中设置的用户定义的播放列表?

    应用程序可以使用a MediaStore.Audio.Playlists provider 来集中存储播放列表。无需应用程序即可使用它。我怀疑很少有人使用它。但是,这里有一些关于 Stack Overflow 的问题说明了它是如何使用的,例如 this onethis one

    我假设我的浏览器代码需要存在于服务中。对吧?

    没有。

    是否有可用的示例/文档?

    要求异地资源被认为是 Stack Overflow 的题外话。

    Content Provider API 呢?

    您使用ContentResolver — 或包裹在它周围的东西,例如CursorLoader — 来查询MediaStore,如果这就是您的意思。 This sample app 使用CursorLoader 查询MediaStore 中的所有视频文件,然后将它们显示在基于RecyclerView 的列表中。调整它以显示音频文件并不是特别困难。

    使用 Intent.ACTION_GET_CONTENT 在设备上打开文件系统的文件浏览器,显示音频文件。关闭,但不是这里需要的。

    就获取音频内容的固定解决方案而言,这与您将获得的一样好,无需滚动您自己的 UI。您也可以在 Android 4.4+ 上使用ACTION_OPEN_DOCUMENT

    【讨论】:

    • 非常有帮助 - 它让我走上了正确的道路。您的工作样本确实有助于弄清楚这一切应该如何工作。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2013-09-05
    • 1970-01-01
    相关资源
    最近更新 更多