3

我正在开发一个 iPhone iOS4 应用程序,该应用程序包含播放用户 iPod 库中的音乐。我还想跟踪播放了哪些歌曲,并能够随机更改歌曲,即使在后台也是如此。所以我设置音乐播放器使用:

[self setMusicPlayer: [MPMusicPlayerController iPodMusicPlayer]];

现在,我希望这个应用程序继续在后台运行和播放音乐,所以我设置了:

Required background modes: App plays audio

我遇到的问题是我的应用程序在移动到后台时失去控制(当调用 applicationDidEnterBackground 时,即在应用程序开关上)。由于我使用的是 iPodMusicPlayer,音乐继续播放,但我的应用程序无法控制,因此无法跟踪或更改歌曲。

现在,Apple 文档声明您的应用程序应该使用这个必需的后台模式标签继续在后台执行,但我的没有。是因为我使用的是 MPMusicPlayer 吗?有没有办法绕过它?有任何想法吗?

PS。我还试图让远程锁定和多任务 iPod 控制器与我的应用程序一起工作。我正在使用下面的代码,但 remoteControlReceivedWithEvent 永远不会被调用!它可以与 MPMusicPlayer 一起使用吗?我只用 AVAudioPlayer 看过它。

- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
    NSLog(@"remoteControlReceivedWithEvent");
    switch (event.subtype) {
        case UIEventSubtypeRemoteControlTogglePlayPause:
            NSLog(@"Play Pause");
            break;
        case UIEventSubtypeRemoteControlNextTrack:
            NSLog(@"Next");
            break;
        default:
            break;
    }
}

- (BOOL)canBecomeFirstResponder {
    NSLog(@"canBecomeFirstResponder");
    return YES;
 }

- (void) viewWillAppear:(BOOL)animated{
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}
4

1 回答 1

5

你是对的。使用MPMusicPlayerController. 这也将阻止您接收远程控制事件。

如果您想播放 iPod 库中的音频并让您的应用程序继续在后台运行,您必须使用较低级别的AVPlayer类。

于 2010-07-21T04:44:11.887 回答