设备自动锁定时,AVPlayer无法在iPad上运行

时间:2013-10-31 15:21:16

标签: ios iphone ipad streaming avplayer

我有一个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)

我的app app委托:

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文件中的“必需背景模式”属性定义为“App播放音频”。

在iPhone中工作正常,所以任何想法都是我的问题?

先谢谢了,

1 个答案:

答案 0 :(得分:1)

尝试注册远程控制事件......

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

虽然它似乎与它没有任何关系,但如果您的应用没有获得遥控器,AVPlayer和其他播放器状态似乎会失败。

在你的app delegate中,通过以下方式响应遥控器:

-(void)remoteControlReceivedWithEvent:(UIEvent *)event
{
    switch(event.subtype)
    {
        case UIEventSubtypeRemoteControlPause:
            [self pause];
            break;
        case UIEventSubtypeRemoteControlPlay:
            [self play];
            break;

    }
}