设备自动锁定时,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 上运行的主要内容,如果未能解决你的问题,请参考以下文章

锁定 iPad 设备时 UIWebView 显示黑屏

当设备被蓝牙耳机锁定时,AVAsset 无法播放

Xcode swift - 背景模式 - 锁定时AVPlayer中的音频

第一个视频在 iPad 上拉伸(AVPlayer)

如何在应用程序处于前台模式时禁用 iPhone/iPad 自动锁定?

在设备锁定时播放 iPod 库中的音频