| 本地音频 | 网络音频 | 本地视频 | 网络视频 |
AvAudioPlayer | 可播、 可后台 | 可播、 可后台 | 可播、 可后台 | 不可播 |
AvPlayer | 可播、 | 可播、 可后台 | 可播、 不可后台 | 可播、 不可后台 |
#后台播放实现方法:
1.在plist文件中加入以下字段:
2.在播放器创建的后面加上这些代码:
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
完成以上两步,就可实现后台播放功能。
#远程控制的实现方法:
1.在创建播放器的类中添加如下代码:
(代码1)声明App接收远程控制事件
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
- (BOOL)canBecomeFirstResponder
{
return YES;
}
(代码2)处理具体的播放、暂停、前进、后退等具体事件
- (void)remoteControlReceivedWithEvent:(UIEvent *)event{
if (event.type == UIEventTypeRemoteControl) {
switch (event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
[self playAction:self.playBtn];
break;
case UIEventSubtypeRemoteControlPreviousTrack://上一曲
[self playLastButton:self.nextButton];
break;
case UIEventSubtypeRemoteControlNextTrack: //下一曲
[self playNextSong:self.nextButton];
break;
case UIEventSubtypeRemoteControlPlay://播放
[self playAndStopSong:self.playButton];
break;
case UIEventSubtypeRemoteControlPause: //暂停
[self playAndStopSong:self.playButton];
break;
default:
break;
}
}
}
说明:
1、 后台播放视频时的个人观点:使用AvPlayer播放视频,到后台时,使用AvAudioPlayer播放相同视频的音频,并设置音频的进度和音量从视频的断点开始,即可实现无缝后台播放,但此视频必须是本地视频,流视频无法实现。
(参照MoliPlayer App中的本地视频后台播放)