2016-08-18 4 views
8

Ich erstelle ein Video & Audio-Capturing-App. Jedes Mal, wenn ich mit der Aufnahme beginne, wird die im Bluetooth-Lautsprecher abgespielte Musik im Lautsprecher des Telefons abgespielt. Wenn ich die App verlasse, wird die Musik über den Bluetooth-Lautsprecher wiedergegeben.Reroute Audio zu Bluetooth Lautsprecher

Mein erster Versuch, dies zu lösen ist, die notwendigen Optionen für die audioSession bieten, wie folgt aus:

try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: [AVAudioSessionCategoryOptions.MixWithOthers, AVAudioSessionCategoryOptions.AllowBluetooth]) 

Aber das hat nicht funktioniert. Meine zweite Lösung, die ich denke, ist, die Musikausgabe erneut auf den Bluetooth-Lautsprecher umzuleiten.

ich auf diese recherchiert und fand diese Funktion: audioSession.setOutputDataSource

Ich weiß nicht wirklich die Parameter dort übergeben werden.

Und ich bin mir nicht wirklich sicher, ob das Telefon/oder mein Code in dem Moment, in dem ich mit der Videoaufnahme begann, die Bluetoothverbindung deaktiviert oder die Wiedergabe einfach auf den Lautsprecher des Telefons umleitet.

UPDATE: Ich habe diese Zeile ausgearbeitet: // try audioSession.setMode(AVAudioSessionModeMoviePlayback) und die Musik pausiert ein wenig und spielt wieder auf dem Bluetooth-Lautsprecher. Das Problem hierbei ist jedoch, dass das aufgenommene Video keinen Ton enthält.

UPDATE 2: Hätte diese Frage eine Lösung, wenn ich Ihnen meinen Code gebe?

+0

Versuchen Sie, es durch Bluetooth oder die Standardausgabe, die Bluetooth ist, zu spielen. Zum Beispiel möchten Sie, dass es durch bluethooth egal was spielt, oder nur wenn das Telefon/Tablet mit einem anderen primären Ausgang (wie AUX oder Bluetooth) angeschlossen ist –

Antwort

0

Ich werde weitermachen und einen Versuch machen, die ursprüngliche Frage zu beantworten. Von Apple Dokumentation gehe ich dies:

func setOutputDataSource(_ dataSource: AVAudioSessionDataSourceDescription?)throws 

Parameterdatasource

Die Datenquelle für die Ausgabe der Audio-Sitzung.

outError Bei der Eingabe ein Zeiger auf ein Fehlerobjekt. Tritt ein Fehler auf, wird der Zeiger auf ein NSError-Objekt gesetzt, das den Fehler beschreibt. Wenn Sie keine Fehlerinformationen wünschen, geben Sie nil ein. here

Diese Seite soll helfen, herauszufinden, was die Beschreibung Quelle Sitzungsdaten AV tut/Returns, aber in sommerlich es:

Sie Datenquelle Beschreibungen aus dem AVAudioSession Objekt oder die AVAudioSessionPortDescription gemeinsamen Objekte erhalten entsprechend seinen Eingangs- und Ausgangsports. Nur eingebaute Mikrofonanschlüsse auf bestimmten Geräten unterstützen die Position, Ausrichtung und Richtcharakteristik. Wenn ein Port diese Features nicht unterstützt, ist der Wert seiner Eigenschaft dataSources gleich null. here

Sind Sie zu routen Musik von Ihrer App an den Lautsprecher versuchen (ist, dass die Wiedergabe von Musik?) Oder die Musik aus einer anderen Anwendung kommen, und Sie würden eine doppelte Ausgabe gefallen hat?

Für die Fehlerüberprüfung können Sie sicherstellen, dass der Lautsprecher noch verfügbar ist, mit etwas wie der output data source. Wenn es nill (null) zurückgibt, bedeutet dies, dass Sie nicht zwischen Datenquellen wechseln können.

Es ist wahrscheinlich auch erwähnenswert der Benutzer muss Ihnen die Erlaubnis zur Aufnahme geben, aber ich bezweifle, dass dies das Problem ist, wie Sie bereits an einem Punkt aufgenommen haben, nur wenn es durch das Telefon, nicht den Lautsprecher

+0

Ich möchte den Bluetooth-Lautsprecher als Standard haben Ausgabe, wenn es verbunden ist. Oder wenn ich den Ton sowohl für den Lautsprecher des Telefons als auch für den Bluetooth-Lautsprecher ausgeben kann, wäre das auch in Ordnung. –

+0

Sie können nicht beide Lautsprecher wiedergeben, die Ausgabeumleitung überschreibt den vorhandenen Pfad. Hattest du Glück mit der setOutputDataSrouce? Sind die erforderlichen Argumente sinnvoll? –

+0

Ich verstehe 'setOutputDataSource' nicht wirklich. Ich benötige bitte eine Beispielverwendung davon. –

Verwandte Themen