2014-09-30 114 views
3

我正在尋找播放列表中播放聲音的快速編碼,並且沒有將聲音作爲資源添加到您的項目中。 我主要發現使用 NSURL(fileURLWithPath:NSBundle.mainBundle()。pathForResource(「sound_name」,ofType:「wav」)) println(alertSound) 但爲此,您需要在聲音文件中包含聲音文件。但我找不到任何示例 選擇通過iTunes購買的音頻文件並播放它們。swift xcode播放播放列表中的聲音文件

任何想法如何做到這一點?我可以訪問我的音樂層播放列表文件並在我的應用程序中使用它們嗎?

感謝您的任何代碼行。 rpw

回答

10

這些音樂文件由MPMediaItem實例表示。來接他們,你可以使用一個MPMediaQuery,如下:

let mediaItems = MPMediaQuery.songsQuery().items 

此時,已包含在音樂應用程序庫中的所有歌曲,所以你可以設置播放列表後,用MPMusicPlayerController發揮他們隊列:

let mediaCollection = MPMediaItemCollection(items: mediaItems) 

let player = MPMusicPlayerController.iPodMusicPlayer() 
player.setQueueWithItemCollection(mediaCollection) 

player.play() 

您可能需要按流派,藝術家,專輯等過濾歌曲。在這種情況下,您應該在獲取媒體項目之前對查詢應用謂詞:

var query = MPMediaQuery.songsQuery() 
let predicateByGenre = MPMediaPropertyPredicate(value: "Rock", forProperty: MPMediaItemPropertyGenre) 
query.filterPredicates = NSSet(object: predicateByGenre) 

let mediaCollection = MPMediaItemCollection(items: query.items) 

let player = MPMusicPlayerController.iPodMusicPlayer() 
player.setQueueWithItemCollection(mediaCollection) 

player.play() 

乾杯!

+0

Linox嗨,感謝您的例子,我曾嘗試 進口的MediaPlayer 讓音樂= MPMediaQuery.songsQuery() 在操場上,但得到一個異常EXC_BAD_ACCESS碼= 1 你知道,如果操場支持呢? – rpw 2014-10-01 11:14:36

+0

由於您必須有應用程序上下文才能訪問音樂庫,因此無法在操場上使用。嘗試在viewDidLoad()方法中實現此代碼。如果您的答案適合您,請不要忘記標記我的答案是正確的。乾杯! – Linox83 2014-10-01 15:41:47

+0

嗨Linox,我曾嘗試在viewDidLoad中 ,但我的第一線 - >讓mediaItems = MPMediaQuery.songsQuery()項 總是空(無) – rpw 2014-10-02 11:18:56