【问题标题】:AVPlayerLayer stop play when enter background mode进入后台模式时 AVPlayerLayer 停止播放
【发布时间】:2012-05-07 15:11:39
【问题描述】:

我设置了 AVPlayerLayer :

        audioPlayer = [[AVPlayer alloc]initWithURL:[NSURL fileURLWithPath:fileName]];
        avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:audioPlayer];
        [avPlayerLayer setFrame:self.view.bounds];
        [[self.view layer] addSublayer:avPlayerLayer];
        [audioPlayer play];

在 AppDelegete 我添加:

[[AVAudioSession sharedInstance] setDelegate:self];    
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];

现在我在 UIViewController 类中添加:

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

- (BOOL)canBecomeFirstResponder {
    return YES;
}

- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
    switch (event.subtype) {
        case UIEventSubtypeRemoteControlTogglePlayPause:
            if (audioPlayer.rate == 0.0) {
                [avPlayerLayer.player play];
            } else {
                [avPlayerLayer.player pause];
            }
            NSLog(@"4");
            break;
        case UIEventSubtypeRemoteControlPlay:
            [avPlayerLayer.player play];
            break;
        case UIEventSubtypeRemoteControlPause:
            [avPlayerLayer.player pause];
            NSLog(@"3");
            break;
        case UIEventSubtypeRemoteControlNextTrack:
            [self didPressNextSong:nil];
            NSLog(@"2");
            break;
        case UIEventSubtypeRemoteControlPreviousTrack:
            [self didPressLastSong:nil];
            NSLog(@"1");
            break;
        default:
            break;
    }
}

现在的问题是,当我进入后台模式时,歌曲停止播放,但是当我按下遥控器中的播放按钮(当我双击主页按钮时弹出的菜单)时,歌曲继续从哪里播放它停止了。

知道我为什么会遇到这个问题吗?

【问题讨论】:

  • 我和你有同样的问题。你有没有找到解决办法?根据我的发现,只要没有与之关联的 AVPlayerLayer (并且只要实现了 Joshua Smith 答案中的所有内容), AVPlayer 就会播放背景音频。但是,该应用程序似乎太快地进入后台,我无法在 applicationWillResignActive 中清除 AVPlayerLayer,并且我的音频被切断了。如果您知道解决方法,我将永远感激不尽!

标签: iphone objective-c


【解决方案1】:

查看此解决方案:

How do I get my AVPlayer to play while app is in background?

关键在 info plist 中的 UIBackgroundModes 中。

【讨论】:

  • 我将此键添加到plist,进入后台模式后应用程序仍然停止播放
  • @MTA 你有解决办法吗??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多