我在使用AVAudioPlayer,希望用户可以在循环播放后重新开始播放。对于用户的反馈,我使用了UIAlertController,但我还是很难用AVAudioPlayer来完成重播。我希望用户可以随意选择重播,直到他选择NO。
这是我的代码,到目前为止,但如果用户选择YES,该怎么做......见下面代码中的评论。
// schedule the audio file
[self->_playerNode scheduleFile:self->_file atTime:nil completionHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertController * alert= [UIAlertController
alertControllerWithTitle:@"End of file"
message:@"play again?"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* yes = [UIAlertAction
actionWithTitle:@"YES"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
// WHAT TO DO HERE????
[alert dismissViewControllerAnimated:YES completion:nil];
}];
UIAlertAction* no = [UIAlertAction
actionWithTitle:@"NO"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
NSLog(@"Stop");
[self->_engine stop];
[session setActive:false error:nil];
[alert dismissViewControllerAnimated:YES completion:nil];
}];
[alert addAction:yes];
[alert addAction:no];
[self presentViewController:alert animated:YES completion:nil];
});
}];
// playback the audio file
[self->_playerNode play];
谢谢你的帮助
由于没有人有其他建议,我就回答自己的问题。
我找不到递归加载播放器的方法 所以我读出了文件的长度并启动了一个定时器
NSTimeInterval seconds = self->_file.length / SAMPLERATE;
你还需要处理应用程序进入后台模式和停止+恢复定时器的情况!