Spotify - 如何暂停跟踪和恢复跟踪

时间:2015-09-08 04:26:36

标签: ios swift audio spotify

所以我创建了一个允许用户从spotify流式播放歌曲的应用程序,我在播放时没有问题并且停止使用spotify播放器。但是,我有问题要暂停和恢复这首歌。

这是我的逻辑:

  1. 停止当前播放曲目
  2. 当我停止spotify播放器时获取当前播放位置
  3. 玩和寻找我得到的时间
  4. 这是我的代码:

    var currentOffset = User.spotifyPlayer!.currentPlaybackPosition
                println(currentOffset)
    
                var spotifyTrackUrl : NSURL = NSURL(string: self.spotifyTrackUri!)!
                User.spotifyPlayer!.playURIs([spotifyTrackUrl], fromIndex: 0, callback: { (error : NSError!) -> Void in
                    if error != nil {
    
                        println(error)
    
                    }else{
    
                        if User.spotifyPlayer!.isPlaying == true {
    
                            User.spotifyPlayer!.seekToOffset(currentOffset, callback: { (error : NSError!) -> Void in
    
                                if error != nil {
    
                                    println("rene 3")
    
                                    println("spotify seek error : \(error)")
    
                                }
    
                                sender.setImage(UIImage(named: "playicon.png"), forState: UIControlState.Normal)
    
                                println("rene 4")
                            })
    
                        }
    
                    }
                })
    

    我总是遇到以下错误:

      

    spotify seek error:由于未指定的问题,操作失败。

    我使用swift,但如果你使用obj-c,请给我任何建议并不重要

3 个答案:

答案 0 :(得分:1)

我认为你不需要使用seekToOffset暂停和恢复一首歌,你只需要下面的方法:

if self.player?.isPlaying == true {

               self.player?.setIsPlaying(false, callback: nil)
    }else{


    self.player?.setIsPlaying(true, callback: nil)


    }

答案 1 :(得分:0)

如果您只想暂停和恢复播放器,则应使用 SPTAudioStreamingController 的内置方法,例如:

allow_any_instance_of(Paperclip::Storage::S3).to receive(:copy_to_local_file) do |style, local_dest_path|
  # write a file here, or do anything you like
end

如果您尝试显示跟踪进度的可视部分,我建议使用类似NSTimer的内容并更新视图,例如:

[self.player setIsPlaying:!self.player.isPlaying callback:nil];

答案 2 :(得分:0)

要恢复,您应该使用以下方法:

playURIs:withOptions:回调:

这是一个简单的例子:

NSURL *trackURI = [NSURL URLWithString:uriString];
    float startTime = 34.3;
    SPTPlayOptions *options = [[SPTPlayOptions alloc] init];
    [options setStartTime:startTime];
    [self.spotifyPlayer playURIs:[NSArray arrayWithObject:trackURI] withOptions:options callback:^(NSError *error) {

        if (error != nil) {
            NSLog(@"*** Starting playback got error: %@", error);

            return;
        } else {
            NSLog(@"Playing");
        }

    }];