Я разрабатываю музыкальное приложение, которое требует ввода с микрофона, поэтому мой AVAudioSessionCategory
установлен на AVAudioSessionCategoryPlayAndRecord
.
Я пытаюсь заставить Bluetooth-наушники работать с приложением, но я заметил кое-что странное в соединении BT с различными категориями AVAudioSession
:
Если я использую AVAudioSessionCategoryAmbient
,Наушники BT прекрасно сочетаются / отключаются во время работы приложения или до его запуска.Я также могу получать AVAudioSessionRouteChangeNotification
s при сопряжении или отключении наушников.
С помощью AVAudioSessionCategoryPlayAndRecord
, однако, я могу сопрягать и получать аудио с BT, если подключаю его до запуска приложения, но еслиЯ пытаюсь выполнить сопряжение, пока приложение работает, оно не будет работать.Мои наушники BT будут указывать, что они «подключены», но значок BT не появится в строке состояния iOS.Я также не получаю никаких уведомлений о прерывании звука AVAudioSessionRouteChangeNotification
или других, когда я включаю или выключаю наушники.
Я могу заставить BT работать, если переместить приложение в фоновый режим, а затемвведите его заново, но я никогда не смогу выполнить сопряжение, пока приложение находится на переднем плане.
Я использую libpd для звукового движка, и вот как я инициализирую свой PdAudioController
объект:
[self.pdAudio configurePlaybackWithSampleRate:samplingRate numberChannels:2 inputEnabled:YES mixingEnabled:NO];
//enable bluetooth
[PdAudioController setSessionOptions:AVAudioSessionCategoryOptionAllowBluetoothA2DP];
Есть ли другие настройки, которые я могу изменить, чтобы можно было подключать наушники во время работы приложения при использовании AVAudioSessionCategoryPlayAndRecord
?