Saber cuándo el objeto AVPlayer está listo para jugar
Estoy tratando de jugar unMP3
archivo que se pasa a unUIView
de un @ anteriUIView
(almacenado en unNSURL *fileURL
variable)
Estoy inicializando unaAVPlayer
con
player = [AVPlayer playerWithURL:fileURL];
NSLog(@"Player created:%d",player.status);
LosNSLog
imprimePlayer created:0,
que pensé significa que aún no está listo para jugar.
Cuando hago clic en el playUIButton
, el código que ejecuto es:
-(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??");
}
}
Cuando ejecuto esto, siempre obtengoError in player??
en la consola. Sin embargo, si reemplazo elif
condición que comprueba siAVPlayer
está listo para jugar, con un simpleif(!isPlaying)
..., entonces la música suena LA SEGUNDA VEZ que hago clic en la reproducciónUIButton
.
El registro de la consola es:
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**
Veo que la SEGUNDA VEZ, laplayer.status
parece contener 1, que supongo esAVPlayerReadyToPlay
.
¿Qué puedo hacer para que la reproducción funcione correctamente la primera vez que hago clic en playUIButton
? (es decir, ¿cómo puedo asegurarme de queAVPlayer
no solo se creó, sino que también está listo para jugar.)