Повтор воспроизведения аудио с AVAudioPlayer - PullRequest
0 голосов
/ 05 апреля 2020

Я использую AVAudioPlayer и хочу, чтобы пользователь мог возобновить воспроизведение после воспроизведения l oop. Для обратной связи с пользователем я использовал UIAlertController, но я все еще изо всех сил пытаюсь сделать воспроизведение с помощью AVAudioPlayer. Я хочу, чтобы пользователь мог выбирать повтор так часто, как ему хочется, пока он не выберет НЕТ.

Вот мой код, который у меня есть, но что делать, если пользователь выбирает ДА ​​... см. Комментарий в приведенном ниже коде.

    // 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];

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 05 мая 2020

Поскольку ни у кого нет другого предложения, я отвечу на свой собственный вопрос:

Я не смог найти способ рекурсивной загрузки плеера, поэтому я прочитал длины файла и запустил таймер:

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

Вам также нужно будет обработать случай, когда приложение перейдет в фоновый режим и остановить + возобновить таймер!

...