2013-11-06 3 views
1

У меня есть представление о песнях на устройстве ios, и если я выбираю строку, я нажимаю на новое представление, где AVPlayer начинает воспроизведение выбранной песни. Теперь, если я вернусь и выберите другую строку, нажав на представление, приложение начнет воспроизводить новую песню, продолжая играть ту, которая уже была запущена.Проверьте, проигрывается ли AVPlayer уже

EDIT: Я попытался использовать значение скорости, как это без успеха, так как это всегда выход «не играет», если я положил его в моем методе viewdidload, даже если песня играет:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    appDelegate = (SimpleTableAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    appDelegate.audioPlayer = [[AVPlayer alloc] init]; 
    if (appDelegate.audioPlayer.rate == 0.0f) 
    { 
     NSLog(@"not playing"); 
    } else { 
    NSLog(@"already playing"); 
    } 
} 

ответ

1

В этой строке

appDelegate.audioPlayer = [[AVPlayer alloc] init]; 

вы, кажется, alloc'ing и init'ing новый AVPlayer. Поэтому неудивительно, что вы получаете «неиграющий» результат. Просто оставьте эту линию.

0

AVPlayer имеет свойство rate, которое указывает скорость воспроизведения в виде поплавка. 0.0f указывает на остановку. Методы play и stop просто изменяют свойство rate.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    appDelegate = (SimpleTableAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    //Stop potential existing audioPlayer prior to creating new player 
    [appDelegate.audioPlayer stop]; 

    //Create new audio player 
    appDelegate.audioPlayer = [[AVPlayer alloc] init]; 
} 
+0

Я забыл упомянуть, что я действительно пробовал скорость, но это не срабатывает. Я выложу код выше, который я использую без успеха ... – ASCJU

+0

Ваш аудиоплеер всегда будет остановлен во время просмотраDidLoad. Перед созданием нового экземпляра вы должны остановить существующий экземпляр игрока. Обновленный ответ –

Смежные вопросы