1

我在表格视图中显示媒体层次结构。当我在表格视图中点击歌曲时,它会使用 MPMoviePlayerViewController 播放歌曲。但是当我点击完成按钮时,声音停止播放。我创建了以下代码:

        NSURL *songUrl=[operationControl getSong:stringId];
    mediaPlayerController = [[MPMoviePlayerViewController alloc] initWithContentURL:songUrl];
    [self presentModalViewController:mediaPlayerController animated:YES];
    [[mediaPlayerController moviePlayer] play];


我想浏览媒体层次结构以及在后台播放歌曲。我怎样才能做到这一点?

4

2 回答 2

4

您应该启动 AVAudioSession 并在主 plist 中声明您的应用程序在后台播放音乐。

在 didFinishLaunchingWithOptions 中:

  // Setup audio session
  AVAudioSession *sharedSession = [AVAudioSession sharedInstance];
  [sharedSession setCategory:AVAudioSessionCategoryPlayback error:nil];

在 applicationDidBecomeActive 中:

  [sharedSession setActive:YES error:nil]; // FIXME: Error handling

在主 plist 中添加:必需的背景模式 - 应用播放音频

于 2012-08-24T11:16:55.900 回答
2

听起来您没有正确设置音频会话。从

http://developer.apple.com/iphone/library/documentation/AudioVideo/Conceptual/MultimediaPG/UsingAudio/UsingAudio.html

例如,当使用默认音频会话时,应用程序中的音频会在自动锁定时间超时并且屏幕锁定时停止。如果要确保在屏幕锁定的情况下继续播放,请在应用程序的初始化代码中包含以下行:

NSError *setCategoryErr = nil;
NSError *activationErr  = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];

AVAudioSessionCategoryPlayback 类别可确保在屏幕锁定时继续播放。激活音频会话会使指定的类别生效。

于 2012-08-24T11:15:20.937 回答