2017-08-11 50 views
0

我需要使用用戶的播放列表和他們的音樂應用中的歌曲來瀏覽用戶設備上的音頻文件,然後將選定的音頻文件傳遞給我們的播放器。在Android上瀏覽音頻文件

Android MediaStore是否包含所有音頻文件的主副本以及我從其他應用程序中設置的用戶定義的播放列表?我正在尋找類似於iOS上的MediaLibrary的API。

MediaStore Reference Documentation不給我就如何實際使用API​​足夠的細節,它似乎並沒有在文檔的TrainingAPI GuidesSamples部分覆蓋。 Random Music Player sample似乎已過時,並且不會與Android Studio一起編譯。

我假設我的瀏覽器代碼需要存在於服務中。對?有沒有可用的示例/文檔?

Content Provider API怎麼樣?這有時會出現在代碼示例中,但不清楚它是否可以訪問用戶的音頻文件。

我試圖使用下面的意圖,但他們沒有給我以我需要的方式訪問音頻文件。是否有應該使用的現有意圖?

使用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) 
} 

有關如何工作的建議以及指向文檔和/或示例的指南,我們將不勝感激。

回答

1

是否在Android MediaStore包含的所有音頻文件

它已編制索引的所有文件的索引的主副本。這可能包括音頻文件。沒有要求它包括全部音頻文件,因爲並非所有音頻文件都必須位於MediaStore可以到達的地方(例如,用於單獨應用的私人存儲)。

和用戶定義的播放列表,他們是我從其他應用程序設置的嗎?

有一個應用程序可用於集中存儲播放列表的a MediaStore.Audio.Playlists provider。不需要應用程序來使用它。我懷疑很少有人使用它。但是,Stack Overflow存在一些問題,它們顯示了它的使用方式,如this onethis one

我假設我的瀏覽器代碼需要存在於服務中。對?

No.

是否有這樣的示例/文檔可用?

詢問非現場資源被認爲是堆棧溢出的主題。

那麼Content Provider API呢?

您使用ContentResolver —或事情之一纏,如CursorLoader —查詢MediaStore,如果這是你的意思。 This sample app使用CursorLoader查詢MediaStore所有視頻文件,然後將它們顯示在基於RecyclerView的列表中。調整顯示音頻文件不會特別困難。

使用Intent.ACTION_GET_CONTENT調出設備上文件系統的文件瀏覽器,顯示音頻文件。關閉,但不完全是這裏需要的。

這就好像你將得到,關於獲取音頻內容的罐頭解決方案,而無需滾動自己的用戶界面。你也可以在Android 4.4+上使用ACTION_OPEN_DOCUMENT

+0

非常有幫助 - 它讓我走上了正確的軌道。你的工作樣本確實有助於弄清楚這是如何工作的。謝謝。 –