Как запустить аудиосессию записи iOS в фоновом режиме?

Я пытаюсь запустить kAudioSessionCategory_RecordAudio после того, как мое приложение просыпается в фоновом режиме, но не на переднем плане (например, во время значительного изменения местоположения, я видел, как другие приложения в магазине делают это, поэтому я знаю, что это возможно). Однако всякий раз, когда я пытаюсь начать аудиосессию так

CheckError(AudioQueueStart(queue, NULL), "AudioQueueStart failed");

Я получаю эту ошибку:

Error: AudioQueueStart failed (-12985)

Итак, я прочитал об этом, но единственное предложение - настроить аудиосеанс на активный AudioSessionSetActive(YES), но это также не работает с ошибкой '!cat'. Очевидно, вы можете попытаться переключить активное состояние аудиосессии, но у меня это не сработало.

У меня установлен флаг plist в фоновом режиме аудио, и я запускаю аудиосеанс, пока мое приложение находится на переднем плане, а затем работает переключение на другое приложение (показывает красную полосу, показывающую, что оно записывает). Проблема в том, что он просто начинает аудиосеанс, а приложение не находится на переднем плане.

Есть ли у кого-нибудь пример проекта, который я мог бы посмотреть, чтобы продемонстрировать запуск сеанса записи звука в фоновом режиме?

Примечание. Я ищу решение, в котором используются аудиоочереди, поскольку мне нужен звук в буферах, а не в файле.


person audioBackgrounder    schedule 30.05.2013    source источник


Ответы (2)


Оказывается, пример кода Apple SpeakHere с некоторыми изменениями начнет запись звука в фоновом режиме, если вы просто добавите флаг многозадачности звука в info.plist и добавите соответствующие API-интерфейсы значительного изменения местоположения. Вы можете найти https://github.com/benvium/SpeakHere обновленную версию SpeakHere, так как Apple давненько не обновлял.

person audioBackgrounder    schedule 03.06.2013
comment
что такое флаг многозадачности аудио? Пожалуйста, объясни - person nr5; 07.11.2016

В настоящее время iOS не позволяет запускать аудиосессию или аудиозапись в фоновом режиме. Приложение должно запускать звук на переднем плане, но может просто отбрасывать любые записанные аудиоданные до тех пор, пока они не потребуются, что может быть в фоновом режиме при использовании соответствующих фоновых режимов и аудиосессии.

person hotpaw2    schedule 30.05.2013
comment
Как работает такое приложение, как GPS-навигация, в ситуации, когда оно в настоящее время не говорит направление, затем пользователь переключается на музыкальное приложение и воспроизводит музыку, пока приложение GPS-навигации не говорит новое направление, а затем музыкальное приложение снова берет на себя динамик. Я предполагаю, что если вы можете начать воспроизведение, пока ваше приложение находится в фоновом режиме, вы можете начать запись. - person audioBackgrounder; 31.05.2013
comment
@ hotpaw2, живое приложение для записи разговоров во сне отлично работает и поддерживает запись всего дня в фоновом режиме. Так что должен быть способ, который позволяет записывать в фоновом режиме в течение всего дня. вот ссылка на живое приложение: itunes.apple.com /en/app/sleep-talk-recorder/id391767653?mt=8 - person LiangWang; 23.12.2015
comment
Возможно, эти приложения включают свою аудиосессию, когда они находятся на переднем плане, а затем переходят в фоновый режим на весь день. - person hotpaw2; 23.12.2015