在ios5中屏幕锁定期间,MPMoviePlayerController将无法播放

时间:2011-10-25 15:04:31

标签: mpmovieplayercontroller

我的应用使用MPMoviePlayerController播放播客。在ios4中,我能够通过以下代码绕过停止播放播客的锁屏:

OSStatus audioInitStat = AudioSessionInitialize (NULL,NULL,NULL,NULL);
if (audioInitStat != kAudioSessionNoError) {
    printf("AudioSession Failed to Initialize\n");
}
else {
    UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
    audioInitStat = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,    sizeof(sessionCategory), &sessionCategory);
}

以前它可能运气不好,但事实是现在随着ios5的推出,电影播放器​​在没有ios4的情况下停止屏幕锁定。有谁知道如何允许电影播放器​​在屏幕锁定期间播放。我不想用:

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ];

因为这会杀死电池(即我想让屏幕变暗)。任何想法都将非常感激。如果我不能使用电影播放器​​,你知道我是否可以使用ios的任何其他音频功能来播放播客?

2 个答案:

答案 0 :(得分:1)

在iOS 5.x中,您需要在info.plist文件中设置两个键。

首先使用Key“UIApplicationExitsOnSuspend”向文件添加一行,使值为布尔值并将其设置为“NO”

接下来添加一行,其中包含名为“UIBackgroundModes”的键 这将是一个数组,您希望第一个项目的值为“audio”

您可能还想将音频会话设置为AVAudioSessionCategoryPlayback以获得良好的衡量标准:

    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];

这适用于使用MPMoviePlayerController播放的音频文件,但不适用于视频。

答案 1 :(得分:0)

经过多次挖掘,我找到了部分解决方案:

转到您的应用的info.plist。

添加“必需的背景模式”键并将值设置为“App播放音频” 添加“应用程序在后台运行”键并将值设置为“是”

我不知道这是哪里记录的,但它确实有效。

这只是部分解决方案。有了这个,音频可以在后台播放,但你不能按主页按钮来访问其他应用程序。当您按下主页按钮时,应用程序将终止。