Я намагаюся відтворити MP3
файл, який передається UIView
попередньому UIView
(зберігається у NSURL *fileURL
змінній).
Я ініціалізую за AVPlayer
допомогою:
player = [AVPlayer playerWithURL:fileURL];
NSLog(@"Player created:%d",player.status);
У NSLog
принти , Player created:0,
які я фігурували означає , що він не готовий грати ще.
Коли я натискаю кнопку відтворення UIButton
, код, який я запускаю:
-(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??");
}
}
Коли я запускаю це, я завжди потрапляю Error in player??
в консоль. Якщо я проте заміню if
умову, яка перевіряє, чи AVPlayer
готова до відтворення, простим if(!isPlaying)
..., тоді музика відтворюється ДРУГИЙ ЧАС, коли я натискаю на відтворення UIButton
.
Журнал консолі:
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**
Я бачу, що ДРУГИЙ РАЗ, player.status
здається, тримає 1, що, на мою думку, є AVPlayerReadyToPlay
.
Що я можу зробити, щоб гра працювала належним чином при першому натисканні клавіші UIButton
? (тобто як я можу переконатись, що AVPlayer
він не просто створений, а й готовий до гри?)