iOS5中的MPMoviePlayerController背景音频问题

ryd*_*aze 6 mpmovieplayercontroller ios5

我有一个应用程序执行非常标准的操作:当应用程序处于1)时播放音频(流式传输或文件系统)前景模式,2)屏幕锁定状态3)背景模式.这在iOS5之前的所有iOS中都运行良好.

我一直在使用MPMoviePlayerController(因为它可以播放流媒体和本地文件系统音频)我有以下设置:

  1. info.plist将后台模式设置为"音频"
  2. 我有Audiosession设置,如http://developer.apple.com/library/ios/#qa/qa1668/_index.html所示

    NSError *activationError = nil;
    AVAudioSession *mySession = [AVAudioSession sharedInstance];
    [mySession setCategory: AVAudioSessionCategoryPlayback error: &activationError];
    if (activationError) { /* handle the error condition */ }
    [mySession setActive: YES error: &activationError];
    if (activationError) { /* handle the error condition */ }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我启用了后台计时器,在音频播放结束时停止了UIBackgroundTaskIdentifier newId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];

  4. 我有Moveplayer的useApplicationAudioSession = NO
  5. 我订阅了以下事件来检测和处理各种播放状态,并在当前文件的末尾开始新的音频文件.MPMoviePlayerLoadStateDidChangeNotification MPMoviePlayerPlaybackDidFinishNotification MPMoviePlayerPlaybackStateDidChangeNotification MPMoviePlayerNowPlayingMovieDidChangeNotification

问题:

这样,音频开始播放,当应用程序进入后台状态或手机被锁定时,音频继续播放.但是,当我开始另一个音频文件后,我开始立即获得PlaybackDidFinishNotification,状态设置为播放结束(但文件从未播放过)

相同的代码以前台模式播放音频文件(当前音频文件结束后,下一个文件启动没有任何问题)

在iOS5中我有什么新东西可以让它工作吗?我通读了MPMoviePlayerController类引用,但我看不到iOS5的任何特定内容.

提前致谢.

ryd*_*aze 6

终于弄明白了这个问题.这篇文章在apple dev论坛中解决了(需要登录才能看到).该帖子适用于AVPlayer,但也解决了MPMoviePlayerController的问题.

基本上,这是该帖子的摘录:

您的应用必须支持远程控制事件!这些是多任务切换器任务栏左侧的音频控制器接口prex/nex/play/pause(不确定事物的正确名称).您要确保您的视图成为First Controller然后调用

> [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
Run Code Online (Sandbox Code Playgroud)

在viewDidLoad中.一旦你这样做,你的播放器将不再返回NO!