Многозадачность iOS для приложения для записи звука

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

Судя по тому, что я читал до сих пор, ответ кажется нет, тем более что программа предназначена для освобождения любых системных ресурсов, используемых при отключении.

Поэтому мне интересно, можно ли позволить пользователю переключаться на другое приложение в iOS, пока мое приложение продолжает записывать звук в фоновом режиме?


person dineth    schedule 03.10.2010    source источник
comment
Привет, я пытаюсь сделать то же самое. Вы сделали, как сказал tc, и установили его как для voip, так и для аудио? Удалось ли вам записать?   -  person Namratha    schedule 16.02.2011
comment
@Namratha Не устанавливайте voip, если вы не являетесь провайдером voip. Из-за этого наше приложение было отклонено. Как оказалось, запись в фоновом режиме была неплохой вещью. ОС знает, так как вы подключены к AVAudioSession. Просто использовал его как есть, и все было в порядке.   -  person dineth    schedule 17.02.2011
comment
Ой. Большое спасибо за совет. Так фоновая аудиозапись работала? Здорово! Как именно вы это сделали, пожалуйста?   -  person Namratha    schedule 17.02.2011
comment
@ Намрата Ничего особенного. iOS обрабатывает все в фоновом режиме... пишите свое приложение так, как если бы оно записывалось на переднем плане. Когда вы переходите в фоновый режим, просто остановите все свои таймеры, которые показывают прошедшее время и т. д. Запись будет продолжаться. Во время записи пользователь получает эту светящуюся красную полосу сверху (с названием вашего приложения). Если вы хотите узнать, как делать записи, обратитесь к классу AVAudioRecorder или API AudioQueue;)   -  person dineth    schedule 18.02.2011
comment
@Dineth: Какой обратный вызов вы используете, чтобы узнать, когда приложение перешло в фоновый режим? Я знаю, как делать запись, спасибо :) Этот фоновый режим возможен только в iOS4? Кроме того, iOS ограничивает время фоновой записи? Или приложение будет демонстрировать стабильное поведение, т. е. записывать до тех пор, пока не закончится память (как в случае с записью на переднем плане)?   -  person Namratha    schedule 18.02.2011
comment
Я снял флажок в файле Info.plist, который говорит, что приложение не работает в фоновом режиме, а также добавил ‹key›UIBackgroundModes‹/key›‹array›‹string›audio‹/string›‹/array› в Info.plist. Но запись останавливается, как только я нажимаю кнопку HOME. Пожалуйста помоги.   -  person Namratha    schedule 26.02.2011
comment
Возможна запись звука в фоновом режиме. В iTunes есть много приложений, которые позволяют непрерывно записывать голос, пока приложение остается в фоновом режиме. Я также работаю над этим, но до сих пор не смог найти пример кода.   -  person pooja_chaudhary    schedule 29.08.2013


Ответы (3)


Ты сможешь. Скайп это делает.

Предположительно, вам нужно установить <key>UIBackgroundModes</key><array><string>audio</string></array> в Info.plist, и вам нужно убедиться, что аудиосессия активна/работает/что-то еще, прежде чем переключать приложения (предполагается, что вы не начнете внезапно записывать/воспроизведение музыки/что-то еще, когда ваш приложение находится в фоновом режиме).

В документах говорится, что "аудио " позволяет воспроизводить звук в фоновом режиме, но предположительно это относится и к записи звука. Если это не сработает, есть несколько вещей, которые вы можете попробовать:

  • Установите оба "voip" и "аудио".
  • Воспроизвести тишину (это может быть проще всего сделать с помощью Audio Queue API).
person tc.    schedule 03.10.2010
comment
по-видимому, это также относится к записи звука — по моему опыту, это те предположения, на которых вы не хотите принимать деловые решения. - person Shaggy Frog; 03.10.2010
comment
Просто хотел обновить этот ответ. Не используйте VOIP, если ваше приложение не использует VOIP. Он предназначен для включения сетевой активности, когда приложение находится в фоновом режиме. Использование звука делает свое дело. Наше приложение было отклонено с первого раза из-за наличия voip. - person dineth; 16.03.2011

Похоже, что Apple принимает приложения для iOS4, которые продолжают записывать звук даже в фоновом режиме, так что это может быть доказательством существования. Приложение должно объявить себя способным к фоновому звуку, предварительно выделить все аудиоресурсы и начать аудиозапись до того, как приложение перейдет в фоновый режим, а также ожидать, что его убьют, если его память или аудиоресурсы потребуются приложению переднего плана. Поэтому любое использование системных ресурсов должно быть абсолютным минимумом.

person hotpaw2    schedule 03.10.2010
comment
Нет, если он объявлен в plist как 1 из 3 специальных типов для фонового режима и доступно достаточно ресурсов. - person hotpaw2; 10.12.2011
comment
Это прекрасные новости! У вас случайно нет ссылки на это, не так ли? - person P i; 11.12.2011
comment
Ищите звук UIBackgroundModes в документации Apple по ключам UIKit. - person hotpaw2; 11.12.2011

Да!

Ваше приложение продолжит запись/воспроизведение звука, пока он отправляется в фоновый режим.

Не пытайтесь использовать VOIP, если вы не хотите публиковать свое приложение в магазине Apple (скажем, вы будете транслировать свое приложение, используя сторонние магазины, которые устанавливают профиль обеспечения).

person Iman    schedule 25.03.2015