AVAudioPlayer und AVAudioSession können nicht auf BlueTooth-Stereo auf dem iPad wiedergegeben werden (2 oder nicht)

8

Ich habe eine App, die aufgezeichnete Audiodateien sowie wiederholte Audiodateien wiedergibt. Die Sounds werden korrekt über den integrierten iPad-Lautsprecher wiedergegeben, und wenn ich ein Kabel von der Kopfhörerbuchse an meinen Stereo-Audioeingang anschließe, spielt es auch gut. Wenn ich mein iPad mit meinem Bluetooth-Stereo-Eingang koppel, funktionieren alle Töne meiner anderen Apps (für iPhone geschrieben, läuft auf meinem iPad) genauso gut wie alle anderen Töne von meinem Gerät.

Das Problem ist, dass meine für iPad geschriebene App NICHT über den Bluetooth-Pfad spielt, sondern stattdessen von den eingebauten Lautsprechern abgespielt wird.

In meinem App-Delegaten in der Methode didFinishLaunchingWithOptions (...) habe ich Folgendes platziert:

%Vor%

Dieser Code wird aufgerufen und es werden keine Fehler zurückgegeben.

In meinem Controller-Code habe ich Samples, die ich mit AVAudioPlayer spiele, wie folgt aufgenommen:

%Vor%

In anderen Bereichen habe ich Drones, die kurze .01 zweite Sounds in einem Thread-gesteuerten Loop wiederholen und ich mache das mit OpenAL:

%Vor%

Dies ist der gleiche Code wie in meinen anderen Apps für iPhone, der wie gewünscht funktioniert.

Ich stelle fest, dass es andere Threads bezüglich der Bluetooth-Eingabe gibt, aber ich habe ein spezifisches Problem mit der Bluetooth-Ausgabe von Audio-Sounds aus meiner iPad App.

    
Cal30 23.01.2014, 16:44
quelle

4 Antworten

1

Nicht möglich.

Aus dem sehr interessanten Apple doc AVAudioSession - Auswählen eines Mikrofons QA1799:

Wenn eine Anwendung die Methode setPreferredInput: error: verwendet, um einen Bluetooth HFP-Eingang auszuwählen, wird die Ausgabe automatisch in den Bluetooth HFP-Ausgang geändert. Wenn Sie einen Bluetooth-HFP-Ausgang mit dem Routenwähler des MPVolumeView auswählen, wird automatisch die Eingabe des Bluetooth-HFP-Eingangs geändert. Daher landen sowohl der Eingang als auch der Ausgang immer am Bluetooth HFP-Gerät, obwohl nur der Eingang oder Ausgang einzeln eingestellt wurde.

    
Andrew Smith 23.04.2014, 13:08
quelle
2

Da Ihre Kategorie "Play and Record" ist, müssten Sie Bluetooth als Eingabe aktivieren, damit sie als Ausgabe unterstützt wird (standardmäßig wird derselbe Receiver für die Ein- / Ausgabe im Play- und Record-Modus verwendet). Um dies zu tun, müssten Sie eine zusätzliche Eigenschaft für Ihre AVAudioSession festlegen:

%Vor%

Sie sollten auch überprüfen, dass Sie die Ausgabe nicht an den eingebauten Lautsprecher irgendwo in Ihrem Code forciert haben, indem Sie die Eigenschaft kAudioSessionProperty_OverrideCategoryDefaultToSpeaker für Ihre Sitzung festlegen.

    
JP Hribovsek 25.01.2014 20:42
quelle
2

das ist die Lösung im Moment, aber es ist veraltet und jeder kennt die neue Lösung, aber fügen Sie diesen Teil des Codes jetzt Ihrer App hinzu und alles funktioniert sehr gut!

%Vor%

Hoffe, das hilft dir!

    
BlackSheep 01.02.2014 19:02
quelle
1

Haben Sie mit setCategory withOptions nachgesehen? Sein Start von iOS 6

%Vor%     
Atif 15.03.2014 06:11
quelle