【发布时间】: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