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.