AVPlayer、MPVolumeView 和 Volume HUD

Posted

技术标签:

【中文标题】AVPlayer、MPVolumeView 和 Volume HUD【英文标题】:AVPlayer, MPVolumeView and Volume HUD 【发布时间】:2012-10-15 14:07:21 【问题描述】:

我正在使用 AVPlayer 播放各种媒体。我重新设计了整个播放器界面,并添加了一个 MPVolumeView 来控制输出电平。 它工作得很好,无论是使用滑块还是使用音量按钮(yje 输出音量已更改),但用户没有看到音量正在更改的视觉指示。 使用 Apple 内置的 Video App 时,当您使用按钮更改输出音量时,会有一个漂亮的 hud 指示当前音量:我怎样才能让它出现? 谢谢。

【问题讨论】:

【参考方案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];
    

【讨论】:

你能简单描述一下吗?我坚持这一点。什么是videoPlayerviewcontroller? VideoPlayerViewController 是我调用注册回调的对象

以上是关于AVPlayer、MPVolumeView 和 Volume HUD的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayer / Airplay 按钮

是否可以强制 AVPlayer 停止在外部播放视频(在 Apple TV 上)

音量滑块没有效果

MPVolumeView 和 iOS 5

UIAlertView 中的 MPVolumeView?

如何正确设置 MPVolumeView 的最大和最小图像