Behalten Sie den Bluetooth-Sound bei, wenn Sie AVAudioSession initialisieren

Ich werde gleich verrückt.

Ich habe eine Aufnahme-App. Ich habe das Problem, dass beim Öffnen meiner App Musik auf einem Bluetooth-Gerät automatisch zum internen Lautsprecher des Telefons zurückgeleitet wird.

Ich möchte, dass alles gleich bleibt, egal was passiert. Auch wenn ich mit der Aufnahme beginne und der Benutzer etwas über einen Bluetooth-Lautsprecher hört, tun Sie dies weiter. Der Benutzer hat Kopfhörer? Behalten Sie die Musik dort. Lass einfach alles so wie es ist.

So initialisiere ich gerade meine Sitzung:

[[AVAudioSession sharedInstance]
    setCategory:AVAudioSessionCategoryPlayAndRecord
    withOptions:AVAudioSessionCategoryOptionMixWithOthers | AudioSessionCategoryOptionAllowBluetooth
    error: nil];

Ich erlaube ihm, zu spielen, aufzunehmen, mit anderen zu mischen und Bluetooth zuzulassen. Warum leitet er den Audioausgang zurück zum internen Lautsprecher?

Vielen Dank

EDIT am 30. Mai

Ich habe es geschafft, etwas besser zu machen, aber immer noch etwas zu vermissen.

Wenn ich diese Zeile hinzufüge:

[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];

Die Musik bleibt im Bluetooth-Gerät, aber es klingt schrecklich.

Nach dieser Antwort:https://stackoverflow.com/a/18541874/517688 es ist, weil

EnableBluetoothInput wirkt sich dementsprechend sowohl auf die Eingabe als auch auf die Ausgabe aus. Denken Sie auch daran, dass der Ton aufgrund der Beschränkung der Bluetooth-Eingabegeräte mit 8000 Hz wiedergegeben wird

Es gibt also keine Möglichkeit, bei Verwendung eines Blueetooth-Geräts alles gleich zu halten, ohne den Ton zu verzerren.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage