我在应用程序中缓冲播放歌曲。
我想再放一首歌(按一下按钮)。
但它同时播放两首歌。即使我试图停止第一首歌,它也不会停止。
我指的是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/

10-10 20:30