在Android上浏览音频文件

在Android上浏览音频文件,android,mediastore,Android,Mediastore,我需要使用用户的音乐应用程序中的播放列表和歌曲浏览用户设备上的音频文件,然后将选定的音频文件传递给我们的播放器 AndroidMediaStore是否包含所有音频文件的主副本,以及他们从其他应用程序设置的用户定义的播放列表?我正在寻找一个类似于iOS上的MediaLibrary的API 关于如何实际使用API,没有给我足够的详细信息,文档的、或部分似乎也没有介绍。该版本似乎已经过时,无法使用Android Studio编译 我假设我的浏览器代码需要存在于服务中。正当是否有这方面的示例/文档 那这

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

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

关于如何实际使用API,没有给我足够的详细信息,文档的、或部分似乎也没有介绍。该版本似乎已经过时,无法使用Android Studio编译

我假设我的浏览器代码需要存在于服务中。正当是否有这方面的示例/文档

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

我试图使用以下意图,但他们没有让我以我需要的方式访问音频文件。是否存在应使用的现有意图

使用
Intent.ACTION\u GET\u 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\u ACTION\u MEDIA\u 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是否包含所有音频文件的主副本

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

以及他们从其他应用程序设置的用户定义的播放列表

有一个应用程序可以用于集中存储播放列表。无需任何应用程序即可使用它。我怀疑很少有人使用它。然而,这里有一些关于堆栈溢出的问题,显示了如何使用它,例如和

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

没有

是否有这方面的示例/文档

请求非现场资源被认为是堆栈溢出的主题

那么内容提供者API呢

您可以使用
ContentResolver
-或围绕它的东西,例如
CursorLoader
-来查询
MediaStore
,如果这是您的意思的话。使用
CursorLoader
查询所有视频文件的
MediaStore
,然后将其显示在基于
RecyclerView
的列表中。调整它以显示音频文件并不特别困难

使用Intent.ACTION\u GET\u 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 )
}

这和你将要得到的一样好,关于获取音频内容的罐装解决方案,而不需要滚动你自己的UI。你也可以在Android 4.4+上使用
ACTION\u OPEN\u DOCUMENT

非常有用-它让我走上了正确的道路。你的工作样本真的帮助你弄明白了这一切是如何运作的。谢谢