Желаемые функции: 1) воспроизведение звука через наушники при подключении, 2) воспроизведение звука через динамик, когда наушники не подключены, и 3) запись звука через наушники или внутренний микрофон.
Чтобы заставить его воспроизводить звук через динамик и наушники, я использую следующий тип аудиосеанса:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError];
А затем создайте экземпляр аудиоплеера. Это отлично работает для воспроизведения звука через наушники, когда они подключены, и через динамик, когда нет, пока я не попытаюсь записать.
При записи я сначала устанавливаю аудиосеанс на AVAudioSessionCategoryPlayAndRecord
, а затем пытаюсь записать с помощью Novicane. Иногда это удается, но иногда приложение дает сбой без трассировки стека или индикации отладчика и выдает AUIOClient_StartIO
ошибку.
Мой поиск этой ошибки в Google предполагает, что мне нужно постоянно поддерживать сеанс AVAudioSessionCategoryPlayAndRecord
. Похоже, это предотвращает появление ошибки AUIOClient_StartIO
.
Но всякий раз, когда я выполняю воспроизведение с AVAudioSessionCategoryPlayAndRecord
, он начинает воспроизводиться из встроенного динамика, а не из динамика.
Я знаю, что могу переопределить канал вывода звука на динамик (например, https://stackoverflow.com/a/1064941/895876 ), но при подключении наушников не происходит автоматического переключения на звук через наушники.
Как мне получить все три функции?