用AVAudioPlayer重复播放音频

问题描述 投票:0回答:1

我在使用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];

谢谢你的帮助

ios objective-c avaudioplayer uialertcontroller
1个回答
0
投票

由于没有人有其他建议,我就回答自己的问题。

我找不到递归加载播放器的方法 所以我读出了文件的长度并启动了一个定时器

NSTimeInterval seconds = self->_file.length / SAMPLERATE;

你还需要处理应用程序进入后台模式和停止+恢复定时器的情况!

© www.soinside.com 2019 - 2024. All rights reserved.