Próbuję odtworzyć MP3
plik, który jest przekazywany UIView
z poprzedniego UIView
(przechowywany w NSURL *fileURL
zmiennej).
Inicjalizuję za AVPlayer
pomocą:
player = [AVPlayer playerWithURL:fileURL];
NSLog(@"Player created:%d",player.status);
Te NSLog
odciski Player created:0,
który Pomyślałem oznacza, że nie jest jeszcze gotowy do gry.
Kiedy klikam przycisk odtwarzania UIButton
, uruchamiany kod to:
-(IBAction)playButtonClicked
{
NSLog(@"Clicked Play. MP3:%@",[fileURL absoluteString]);
if(([player status] == AVPlayerStatusReadyToPlay) && !isPlaying)
// if(!isPlaying)
{
[player play];
NSLog(@"Playing:%@ with %d",[fileURL absoluteString], player.status);
isPlaying = YES;
}
else if(isPlaying)
{
[player pause];
NSLog(@"Pausing:%@",[fileURL absoluteString]);
isPlaying = NO;
}
else {
NSLog(@"Error in player??");
}
}
Kiedy to uruchamiam, zawsze wchodzę Error in player??
do konsoli. Jeśli jednak zmienię if
warunek, który sprawdza, czy AVPlayer
jest gotowy do odtwarzania, prostym if(!isPlaying)
..., wtedy muzyka jest odtwarzana DRUGI RAZ, kiedy klikam grę UIButton
.
Dziennik konsoli to:
Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Playing:http://www.nimh.nih.gov/audio/neurogenesis.mp3 **with 0**
Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Pausing:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
2011-03-23 11:06:43.674 Podcasts[2050:207] Playing:http://www.nimh.nih.gov/audio/neurogenesis.mp3 **with 1**
Widzę, że DRUGI CZAS player.status
wydaje się mieć 1, co, jak sądzę, jest AVPlayerReadyToPlay
.
Co mogę zrobić, aby gra działała prawidłowo po pierwszym kliknięciu UIButton
? (tj. jak mogę się upewnić, że AVPlayer
plik nie jest tylko utworzony, ale także gotowy do gry?)