AVPlayer, MPVolumeView и Volume HUD

Я использую AVPlayer для воспроизведения различных медиафайлов. Я переработал весь интерфейс плеера и добавил MPVolumeView для управления выходным уровнем. Он прекрасно работает как с ползунком, так и с кнопками громкости (громкость вывода изменяется), но пользователь не получает визуального указания на изменение громкости. При использовании встроенного видеоприложения Apple, когда вы меняете громкость вывода с помощью кнопок, появляется красивый индикатор, показывающий текущую громкость: как я могу сделать так, чтобы он отображался? Спасибо.


person Khal    schedule 15.10.2012    source источник


Ответы (1)


На самом деле кажется, что VolumeView блокирует доставку уведомлений в систему. Мне пришлось использовать AudioSessionAddPropertyListener, чтобы заставить его работать так

AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange,
                                         audioRouteChangeListenerCallback,
                                         self);

и обратный вызов

// detecting outplugg of the iPhone
void audioRouteChangeListenerCallback (void                      *inClientData,
                                   AudioSessionPropertyID    inID,
                                   UInt32                    inDataSize,
                                   const void                *inData)
{
    CFDictionaryRef routeChangeDictionary = inData;

    CFNumberRef routeChangeReasonRef =
    CFDictionaryGetValue (routeChangeDictionary,
                      CFSTR (kAudioSession_AudioRouteChangeKey_Reason));

    SInt32 routeChangeReason;

    CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason);

    if (routeChangeReason == kAudioSessionRouteChangeReason_OldDeviceUnavailable)
    {
        // Headset is unplugged..
        [(VideoPlayerViewController*)inClientData pause];
    }
}
person Khal    schedule 03.12.2012
comment
можешь вкратце описать. Я застрял на этом. что такое видеоплеервьюконтроллер? - person venky; 30.05.2014
comment
VideoPlayerViewController — это объект, для которого я вызываю обратный вызов регистра. - person Khal; 02.06.2014