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

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

【问题讨论】:

    标签: ios avplayer mpvolumeview


    【解决方案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 是我调用注册回调的对象
    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多