Многозадачность: остановка фонового звука в определенное время - PullRequest
2 голосов
/ 09 декабря 2010

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

Моя проблема в том, что я хочу реализовать «таймер сна», который останавливает воспроизведение через определенный промежуток времени.

Возможно ли это? Я потратил час на поиски способа сделать это безрезультатно.

РЕДАКТИРОВАТЬ: Моя текущая мысль состоит в том, чтобы использовать API более низкого уровня, службы Audio Queue Services, и вручную повторно заполнить очередь другим экземпляром цикла во время AudioQueueOutputCallback. Если таймер истек, я не заполняю цикл. Я предполагаю, что это должно сработать, поскольку в документации сказано, что обратные вызовы аудио по-прежнему запускаются, когда приложение воспроизводит многозадачный фоновый звук. Кто-нибудь может придумать лучший способ или причину, по которой это не сработает?

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

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

Теперь ко второму вопросу: как только вы перестанете ставить очередь в очередь, ваше приложение будет «заморожено» до тех пор, пока пользователь не выведет его вручную на передний план ... Итак, вам нужно начать ставить в очередь аудиоданные из второго файла до того, как первая игра закончена, и если вам НЕОБХОДИМО сделать паузу или остановить, возможно, решение состоит в том, чтобы воспроизвести 0 байт (тишина)?

0 голосов
/ 28 декабря 2011

Я не уверен, что это будет разрешено в App Store.Приложение не может выполняться вообще в фоновом режиме, за исключением приложений VoIP и push-уведомлений.

...