Верните регулятор громкости на устройство iOS после завершения воспроизведения - PullRequest
7 голосов
/ 20 ноября 2011

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

Как только воспроизведение звука остановится, я бы хотел вернуть управление звонком телефона назад к аппаратным кнопкам громкости, но моя попытка сделать это путем деактивации аудиосеанса не дает результата.

Вот как я инициализирую и активирую свой аудио сеанс:

AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, self);

AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, 
                                audioRouteChangeListenerCallback, 
                                self);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;

AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
                        sizeof(sessionCategory),           
                        &sessionCategory);

Вот как я пытаюсь отключить аудио сеанс и вернуть управление звонком устройства iOS обратно на аппаратные регуляторы громкости:

AudioSessionSetActive(false);

Существует, по крайней мере, одно известное мне приложение, которое ведет себя таким образом (приложение iOS для Audible.com). Кто-нибудь знает, что я могу делать не так?

Ответы [ 2 ]

0 голосов
/ 31 августа 2013

Я только что столкнулся с этой проблемой, но я использую AVAudioPlayer.Если я попытался отключить сеанс сразу после вызова play, это не сработало.Но ожидание audioPlayerDidFinishPlaying: успешно: и затем выполнение этого работало:

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *error;
BOOL wasSuccessful = [audioSession setActive:NO error:&error];
NSLog(@"wasSuccessful: %@", wasSuccessful ? @"Yes" : @"No");
}

Я использую аудио сеанс по умолчанию, BTW.

0 голосов
/ 31 мая 2012

В документации на яблоки, я думаю, вам действительно придется удалить слушателя.

Посмотри вверх: AudioSessionRemovePropertyListenerWithUserData

http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html

...