带有 AVPlayer 的 AVAudioSession:当 AVPlayer 播放器正在播放时,状态菜单中的“播放”图标不显示

Posted

技术标签:

【中文标题】带有 AVPlayer 的 AVAudioSession:当 AVPlayer 播放器正在播放时,状态菜单中的“播放”图标不显示【英文标题】:AVAudioSession with AVPlayer: The 'Play' Icon in the status menu not showing when the AVPlayer player is playing 【发布时间】:2012-07-11 22:39:32 【问题描述】:

我有一个 AVPlayer 可以从网络流式传输 mp3 文件。我已经激活了一个 AVAudiosession 以便在应用程序退出/屏幕关闭时播放音频。音乐播放完美,但在播放音乐时,手机顶部状态菜单中出现的小“播放”三角形图标没有出现(与 iOS 中的常见情况一样)。有什么我做错了吗?代码如下

// Set AudioSession
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

//Direct audio to speakers when there is no headphone
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);    
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

【问题讨论】:

【参考方案1】:

对于那些可能遇到这个问题的人,我想通了。你必须让你的玩家的控制器成为第一响应者——特别是远程控制事件。这不仅允许您接收远程控制事件(如通用播放/暂停/前进/后退控件),而且还可以将播放图标放在状态菜单中。

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

【讨论】:

以上是关于带有 AVPlayer 的 AVAudioSession:当 AVPlayer 播放器正在播放时,状态菜单中的“播放”图标不显示的主要内容,如果未能解决你的问题,请参考以下文章

带有 AVPlayer 的 AVAudioSession:当 AVPlayer 播放器正在播放时,状态菜单中的“播放”图标不显示

带有从 tableview 获取信息的 AVPlayer 的选项卡栏?

带有多个 AVPlayer 实例的 AirPlay

带有 AVPlayer 的音频流

带有 Cloudflare 的 AVPlayer

带有流式视频或 NSFileHandle 的 AVPlayer