Технические вопросы и ответы QA1626

Когда экран заблокирован, аудио Сеанс - Гарантирующий воспроизведение аудио продолжается

Q: Как я могу гарантировать, что мое приложение продолжает играть аудио, когда заблокировано устройство?

A: Как я могу гарантировать, что мое приложение продолжает играть аудио, когда заблокировано устройство?

Начиная с iPhone OS 2.2 приложения с помощью аудио сеанса по умолчанию больше не будут играть аудио, когда экран будет заблокирован пользователем или после того, как истекает период Автоблокировки.

Если Ваше приложение должно играть аудио, в то время как экран заблокирован, необходимо теперь явно установить аудио категорию сеанса в kAudioSessionCategory_MediaPlayback. Это вызвано тем, что, с выпуском iPhone OS 2.2, аудио категория воспроизведения сеанса по умолчанию была изменена от kAudioSessionCategory_MediaPlayback к kAudioSessionCategory_SoloAmbientSound.

Как обсуждено в Аудио Руководстве по программированию Сеанса, необходимо инициализировать, сконфигурировать, и явно использовать аудио сеанс, чтобы позволить приложению реагировать на прерывания и аудио изменения маршрута. Кроме того, аудио категория воспроизведения сеанса по умолчанию может не быть лучшей для Вашего приложения. Apple рекомендует, чтобы Вы явно инициализировали и установили аудио сеанс своего приложения для адаптации требованиям приложения.

Перечисление 1 демонстрирует использование Аудио Сеанса APIs, чтобы инициализировать и явно установить категорию в kAudioSessionCategory_MediaPlayback обеспечение воспроизведения аудио, когда заблокировано.

Перечисление 1  

{

...

// initialize the audio session object for this application,
// registering the callback Audio Session Services will invoke when there's an interruption
AudioSessionInitialize(NULL, kCFRunLoopDefaultMode, myInterruptionListenerCallback, self);

// register a property listener so we're notified when there's a route change
AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange,
                                myAudioRouteChangeListenerCallback, self);

// set the audio session category - kAudioSessionCategory_MediaPlayback
// will ensure our audio playback continues when the device is locked
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);

...

// activate the audio session immmediately before playback starts
AudioSessionSetActive(true);

...

}


История версии документа


ДатаПримечания
16.09.2009

Передовая статья

24.10.2008

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