设备自动锁定时,AVPlayer 无法在 iPad 上运行
Posted
技术标签:
【中文标题】设备自动锁定时,AVPlayer 无法在 iPad 上运行【英文标题】:AVPlayer not working on iPad when device auto-locked 【发布时间】:2013-10-31 15:21:16 【问题描述】:我有一个通过流媒体播放音乐的 ios 应用,它在 iPhone 上运行良好。但我在 iPad 上遇到了问题。 我的问题是,当我播放歌曲时,屏幕自动锁定后正在播放当前歌曲但未播放下一首歌曲。如果我手动锁定设备,下一首歌曲会正确播放。 我在执行 audioPlayerDidStartPlaying 委托时记录,所以我知道它已执行,但我什么也听不到。 我是从 iPad 的日志中得到的。
Oct 31 13:48:41 mediaserverd[1891] <Notice>: 13:48:41.634 NOTE: [0x4150000] <aqme> MEMixerChannel.cpp:777: EnableProcessor: EQ not supported for 2e+04 Hz
Oct 31 13:48:44 mediaserverd[1891] <Notice>: 13:48:44.331 NOTE: [0x4150000] <aqme> MEMixerChannel.cpp:777: EnableProcessor: EQ not supported for 2e+04 Hz
Oct 31 13:48:44 mediaserverd[1891] <Warning>: 13:48:44.334 [0x4150000] TranslateCMSessionErrorCode: AudioSessionSetClientPlayState: WARNING translating CMSession error: -16980
Oct 31 13:48:44 mediaserverd[1891] <Error>: 13:48:44.335 ERROR: [0x4150000] AQServer.cpp:150: SetSessionPlayState: AudioQueue: Error '!pla' from AudioSessionSetClientPlayState(0x76358a)
我的应用委托中有:
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setActive:YES error:NULL];
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
// Change the default output audio route
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);
并且我在 info.plist 文件中将“必需的背景模式”属性定义为“应用播放音频”。
在 iPhone 中工作正常,所以有什么想法是我的问题吗?
非常感谢,
【问题讨论】:
【参考方案1】:尝试注册远程控制事件...
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
虽然看起来和它没什么关系,但是如果你的应用没有获取遥控器,播放时AVPlayer和其他播放器状态似乎会失败。
在您的应用委托中,通过以下方式响应遥控器:
-(void)remoteControlReceivedWithEvent:(UIEvent *)event
switch(event.subtype)
case UIEventSubtypeRemoteControlPause:
[self pause];
break;
case UIEventSubtypeRemoteControlPlay:
[self play];
break;
【讨论】:
以上是关于设备自动锁定时,AVPlayer 无法在 iPad 上运行的主要内容,如果未能解决你的问题,请参考以下文章
Xcode swift - 背景模式 - 锁定时AVPlayer中的音频