【问题标题】:How can I know if AVAudioPlayer is paused?我如何知道 AVAudioPlayer 是否已暂停?
【发布时间】:2017-02-06 06:45:46
【问题描述】:

要发现AVAudioPlayer 对象是否正在播放,我可以简单地使用isPlaying 属性:

if audioPlayer.isPlaying {
    // ...
}

如果音频播放器没有播放,我如何区分它是暂停还是停止?

我不能为此目的使用currentTime 属性。这是因为如果我调用stop(),那么当前时间将保持在调用时的任何时间,这与调用pause() 时的行为相同。

【问题讨论】:

  • 检查 audioplayer.status
  • @Jack 'AVAudioPlayer' has no member 'status'
  • 让我为您发布完整的代码
  • 我不确定您的问题,但我想您应该在停止音频时将 currentTime 设置为零。然后可以检查currentTime。如果为零,则停止,否则暂停。有意义吗??
  • 你在播放完之后让 audioPlayer = nil。

标签: ios swift cocoa-touch avfoundation avplayer


【解决方案1】:

只需添加 Bool 变量,然后根据该变量检查音频是否暂停。

例如:

var isAudioPaused = false//Add this on top

//Pause audio
func pauseAudio() {
    if isAudioPaused == false {
        if audioPlayer?.isPlaying == true {//Check is audio playing
            audioPlayer?.pause()//Pause audio
            isAudioPaused = true
            btnPauseAudio.setTitle("Play Audio", for: .normal)
        }
    } else {
        audioPlayer?.play()//Play audio
        isAudioPaused = false
        btnPauseAudio.setTitle("Pause Audio", for: .normal)
    }
}

【讨论】:

    【解决方案2】:

    this link:

     if ((player.rate != 0) && (player.error == nil)) {
            // player is playing
        }else {
    //notplaying
    }
    

    【讨论】:

    • 还有什么需要的可以随时问我
    • 杰克,不想投反对票,但是如果你暂停然后再看它是否正在播放,这将不起作用。逻辑测试 audioPlayer.isPlaying 确实如此,我们在这里谈论的是 iOS 10,swift 3。开始播放后的速率似乎并未设置为零。也许是一个错误,也许你需要使用 isPlaying!
    【解决方案3】:

    我认为这就像在视图控制器类中保留一个 BOOL 属性一样简单,该属性在单击播放/恢复按钮时设置为 YES,在按下停止/暂停按钮时设置为 NO。

    【讨论】:

      猜你喜欢
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 2010-09-16
      • 1970-01-01
      相关资源
      最近更新 更多