Когда экран заблокирован, аудио Сеанс - Гарантирующий воспроизведение аудио продолжается
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 | Новый документ, обсуждающий, как гарантировать воспроизведение аудио, в то время как заблокирован телефон. |