Как да стартирам аудио сесия за запис на 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)


Оказва се, че примерният код на SpeakHere на Apple с някои модификации ще започне да записва аудио във фонов режим, ако просто добавите аудио флага за многозадачност към 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