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的主要内容,如果未能解决你的问题,请参考以下文章