2016-05-12 98 views
3

如何訪問其他應用的當前正在播放的音頻 - 實際的音頻項目但元數據也是受歡迎的。我可以看到,這個問題已經被問了很多,但幾年來提供的解決方案很少。我明白蘋果的理念可能不希望應用程序能夠做到這一點。我也明白,這樣的請求是可能是以外的iOS API。據說,我真的很喜歡某種解決方案。如何獲取其他應用的當前正在播放的音頻

從邏輯上講,我覺得

MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo 

應返回無論是當前播放信息;但是,正如其他人所提到的,對於在您的應用以外播放的音頻,此值始終爲nil。值得注意的是,流行的音頻應用程序似乎無法使用MPNowPlayingInfoCenter類,使得這種音頻無法顯示。

如果使用默認的音樂應用程序,可以使用

MPMusicPlayerController.systemMusicPlayer().nowPlayingItem 

但是,什麼是通過播客應用,Spotify的,潘多拉,Safari瀏覽器等訪問音頻播放更一致的方式?

有沒有人找到解決方案?是否有任何舊的Objective-C框架支持這種功能?

如果有某種方式可以訪問當前正在播放的項目的音頻路徑,一種方法可能是可行的。例如,如果我能得到當前播放項目的路徑,我可以從它創建一個AV對象:

AVAudioPlayer(contentsOfURL: audioUrl) 

那麼,有沒有一種方法,我可以得到當前播放項目的音頻鏈接,並使用它那樣?

另一種方法更好嗎?

如果不存在本地的解決方案,是有可能bodge東西一起爲它工作?任何建議或想法的歡迎。

編輯:我不相信有人能夠做到這一點;不過,我想很多人都想。如果已解決,請將其鏈接! :)

+0

您發佈可能會返回信息的代碼,但只有當其他玩家將其交給'MPNowPlayingInfoCenter'時。 – Larme

+0

我使用Apple Music和股票Podcasts app @Larme進行了測試。我錯誤地實施了嗎? – modesitt

+4

問題是,這是不可能的。您無法獲得有關其他應用程序正在執行的任何信息。試想一下,應用程序可以跟蹤您在YouTube或Safari上觀看的內容。這將是一個巨大的安全威脅。 – Sulthan

回答

0

這在iOS中目前不可行。只需將您的AVAudioSession類別選項更改爲。 MixWithOthers,從其他應用程序獲取信息歌曲信息的選項會導致您的nowPlayingInfo被忽略。

iOS僅考慮將非混音應用包含在MPNowPlayingInfoCenter中,因爲如果同時播放多個混音應用,哪些應用將顯示在(例如)控制中心中是不確定的。

建議:一種選擇是使用一個音樂指紋識別算法認識到什麼是被從你的應用程序記錄它播放。

在這個方向上的一些有趣的項目:

Gracenote公司https://developer.gracenote.com/ Gracenote公司(這是由索尼擁有)開闢了它的SDK和API,並有適當的開發門戶網站。

EchoNest & Spotify的APIhttp://developer.echonest.com/ Fusioned與Spotify的自2016年3月

ACRCloudhttps://www.acrcloud.com/提供了自定義文件ACR解決方案,如電視廣告,音樂TEC

相關問題