我在应用程序中缓冲播放歌曲。
我想再放一首歌(按一下按钮)。
但它同时播放两首歌。即使我试图停止第一首歌,它也不会停止。
我指的是Matt加拉赫tutorial,这是我的代码:
[streamer stop];
- (void)stop
{
@synchronized(self)
{
if (state == AS_WAITING_FOR_DATA || state == AS_STARTING_FILE_THREAD)
return;
if (audioQueue &&
(state == AS_PLAYING || state == AS_PAUSED ||
state == AS_BUFFERING || state == AS_WAITING_FOR_QUEUE_TO_START))
{
self.state = AS_STOPPING;
stopReason = AS_STOPPING_USER_ACTION;
err = AudioQueueStop(audioQueue, true);
if (err)
{
[self failWithErrorCode:AS_AUDIO_QUEUE_STOP_FAILED];
return;
}
}
else if (state != AS_INITIALIZED)
{
self.state = AS_STOPPED;
stopReason = AS_STOPPING_USER_ACTION;
}
seekWasRequested = NO;
}
while (state != AS_INITIALIZED)
{
[NSThread sleepForTimeInterval:0.1];
}
}
这将调用缓冲的stop方法。
有什么问题吗?
最佳答案
我给你做了一个函数,当你启动一个新的流时,可以杀死旧的玩家:
- (void)playURL:(NSURL*)url {
if (streamer == nil) {
streamer = [[AudioStreamer alloc] initWithURL:url];
return;
}
if ([streamer isPlaying]) {
[streamer stop];
[streamer release];
}
streamer = [[AudioStreamer alloc] initWithURL:url];
}
将它安装在VIEW控制器中,而不是使用RAW [ [ AudioStuffer-OLLC] iNITURL:URL:URL]
关于iphone - iPhone:开始播放下一首歌曲之前,第一首歌曲不会停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6728644/