2016-05-12 31 views
3

Wie kann ich auf die aktuell wiedergegebene Audio-Datei einer anderen App zugreifen - das eigentliche Audioelement, aber auch Metadaten sind willkommen. Ich kann sehen, dass diese Frage sehr oft gestellt wurde, aber im Laufe der Jahre nur wenige Lösungen angeboten wurden. Ich verstehe Apples Philosophie für wahrscheinlich nicht wollen, dass eine App dazu in der Lage ist. Ich verstehe auch, dass eine solche Anfrage ist wahrscheinlich außerhalb der iOS-API. Nachdem das gesagt wurde, würde ich wirklich eine Art Lösung mögen.So erhalten Sie die Audio-Wiedergabe einer anderen App

Logisch, ich fühle, dass

MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo 

die Informationen für was auch immer zurückkehren sollte, wird zur Zeit spielen; Wie von anderen bereits erwähnt, ist dieser Wert jedoch immer nil für Audio, das außerhalb Ihrer App wiedergegeben wird. Namentlich scheint es, dass populäre Audio-Apps die MPNowPlayingInfoCenter-Klasse nicht verwenden, so dass Audio nicht angezeigt wird.

Wenn die Standard-Musik-App kann man

MPMusicPlayerController.systemMusicPlayer().nowPlayingItem 

jedoch verwenden, was ist ein konsequenter Weise Audio-Wiedergabe durch die Podcasts App zuzugreifen, Spotify, Pandora, Safari, etc?

Hat jemand eine Lösung gefunden? Gibt es alte Objective-C-Frameworks, die diese Funktionalität unterstützen?

Ein Ansatz könnte sinnvoll sein, wenn es einen Weg gibt, auf den Audioweg des gerade gespielten Elements zuzugreifen. Zum Beispiel, wenn ich den Pfad des aktuell wiedergegebenen Artikels bekommen kann, konnte ich ein AV-Objekt von ihm erstellen:

AVAudioPlayer(contentsOfURL: audioUrl) 

So ist es eine Möglichkeit, die Audio-URL des aktuell abgespielten Stückes bekommen und es verwenden, dieser Weg?

Ist ein anderer Ansatz besser?

Wenn eine native Lösung nicht existiert, ist es möglich, bodge etwas für sie zusammen zu arbeiten? Jeder Rat oder Ideen willkommen.

Edit: Ich glaube nicht, dass jemand das geschafft hat; Ich denke jedoch, dass viele Leute das gerne tun würden. Wenn dies angesprochen wurde, verlinken Sie es bitte! :)

+0

Der Code, den Sie, dass Informationen zurückkehren zu verfassen, aber nur wenn der andere Spieler es dem 'MPNowPlayingInfoCenter' gibt. – Larme

+0

Ich habe sowohl mit Apple Music als auch mit der Stock Podcasts App @Larme getestet. Implementiere ich es falsch? – modesitt

+4

Das Problem ist, dass dies einfach unmöglich ist. Sie können keine Informationen darüber erhalten, was andere Anwendungen tun. Stellen Sie sich eine App vor, mit der Sie verfolgen können, was Sie auf youtube oder in Safari sehen. Das wäre eine * große * Sicherheitsbedrohung. – Sulthan

Antwort

0

Dies ist derzeit in iOS nicht möglich. Ändern Sie einfach Ihre AVAudioSession Kategorie Optionen zu. MixWithOthers, was wird eine Option sein, um Info Song Info von anderen Anwendungen zu erhalten, verursacht Ihre nowPlayingInfo ignoriert werden.

iOS berücksichtigt nur nicht mischende Apps für die Aufnahme in MPNowPlayingInfoCenter, da es Unklarheit darüber gibt, welche App in (z. B.) Control Center angezeigt wird, wenn mehrere Mixing-Apps gleichzeitig abgespielt werden.

Vorschlag: Eine Option ein Musik Fingerabdrucks Algorithmus zu verwenden, wäre zu erkennen, was durch die Aufnahme aus Ihrem App abgespielt wird.

Einige interessanten Projekte in dieser Richtung:

Gracenote-https://developer.gracenote.com/ Gracenote- (die von Sony gehört) hat es die SDKs und APIs eröffnet und haben ein richtiges Entwickler-Portal.

EchoNest & Spotify APIhttp://developer.echonest.com/ fusionierte mit Spotify seit März 2016

ACRCloudhttps://www.acrcloud.com/ ACR Lösungen für individuelle Dateien bietet wie TV-Spots, Musik tec

Verwandte Themen