2016-05-12 202 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

相关问题