0

我有这段音频播放器代码,但我不知道为什么没有执行 audioPlayerDidFinishPlaying。

这是我的 audioplayer.m 文件中的部分代码

- (void)viewDidLoad {
[super viewDidLoad];
NSError* e = nil;
self.player = [[AVPlayer alloc] initWithURL:self.contentURL];
if(e)
{
    NSLog(@"Detected error(%@)",e);
}

[self.playButton  setImage:[UIImage imageNamed :@"Pause_40_40.png"] forState:UIControlStateNormal] ;
[self.playButton addTarget:self action:@selector(stop) forControlEvents:UIControlEventTouchUpInside];

isPlaying = true;

//Title of Music Screen
//self.title = titleOfTheSong;
//self.title = @"A Fixed Title";

MPVolumeView * volmueView = [[MPVolumeView alloc] initWithFrame:CGRectMake(60, 323, 200, 23)];
volmueView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
[self.view addSubview:volmueView];

[[AVAudioSession sharedInstance] setDelegate:self];
e = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&e];
NSLog(@"Error: %@", e);

posUpdateTimer =  [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(timeCounterUpdate) userInfo:self.player repeats:YES];
[self timeCounterUpdate2:self.positionSlider.value];
[self.player play];

}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"Finished");
if (flag == NO){
    return;
}

[self.player pause];
[self.navigationController popViewControllerAnimated:YES];
}

我在 viewDidload 中将 avplayer 的名称设置为 player,然后对其进行检查,但它似乎仍然没有被调用

音频停止播放,但似乎仍在运行当前位置值确实停止了,但如果我暂停它然后播放它,按钮仍然显示好像音频仍处于播放模式,当前位置只是继续计数通过假定的结束文件。

4

2 回答 2

0

我遇到的问题的答案实际上是由于以前的程序员解决了这个问题。他错误地尝试使用AVAudioPlayer播放非本地但需要从 URL 检索的音频文件。AVPlayer因此,他将确实允许但留在旧不相关代码中的代码迁移到其中。我错误地看到了代码,并认为那里有正确的方法,并且对它没有运行的事实感到困惑。能够结束播放文件是AVAudioPlayer他留下的功能。从那以后,我使用了正确的编码方法来实现我想要的。

希望这会导致对我的分数的负面标记被删除,因为代码之前运行但没有我正在寻找的功能,我错误地认为那部分代码是有效的,而实际上它不是。

于 2013-04-16T00:50:46.207 回答
0

因为 1. 你不使用 an AVAudioPlayerbut an AVPlayer2. 你没有设置音频播放器对象的委托。

于 2013-04-13T06:08:29.287 回答