如果在播放歌曲之前按下音量滑块,如何阻止音乐播放器崩溃?

Posted

技术标签:

【中文标题】如果在播放歌曲之前按下音量滑块,如何阻止音乐播放器崩溃?【英文标题】:How can I stop the volume slider from crashing the music player if pressed before the song is played? 【发布时间】:2015-11-30 14:19:07 【问题描述】:

我确定我在问一个简单的问题,但我才刚刚开始编码......所以请可怜我吧!我在 Xcode 7 Swift 2 上。音乐播放器的类型是 AVAudioPlayer。如果我在按下播放按钮之前启动应用程序并移动音量滑块(类型 UISlider),它会使应用程序崩溃,而在按下播放后它可以完美运行,即使音乐暂停。我知道原因是因为volumeSlider func中的“musicPlayer.playing”。我尝试了很多 If 语句(例如“if musicPaused 等),但我无法让它工作。感谢您的帮助。这是音量滑块功能:

@IBAction func volumeSliderChanged(sender: AnyObject) 
    musicPlayer.playing
    musicPlayer.volume = volumeSlider.value

这是播放函数:

 @IBAction  func playPause(sender: AnyObject) 
    var items = toolbar.items!

    if musicPaused == false 
        playPauseBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "playPause:")
        items[0] = playPauseBtn
        toolbar.setItems(items, animated: true)
        musicPlayer.play()
        musicPaused = true
    
    else
        var items = toolbar.items!
        playPauseBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "playPause:")
        items[0] = playPauseBtn
        toolbar.setItems(items, animated: true)
        musicPlayer.pause()
        musicPaused = false
    


@IBAction func playPauseButton(sender: UIButton) 
    let playBtn = sender as UIButton
    if toggleState == 1 

        if isPlaying 
            musicPlayer.play()

        else

            playMusic()
        

        toggleState = 2
        playBtn.setImage(UIImage(named:"100_pause.png"),forState:UIControlState.Normal)

     else 

        musicPlayer.pause()
        toggleState = 1
        playBtn.setImage(UIImage(named:"100_play-arrow.png"),forState:UIControlState.Normal)
    

这是我的音乐播放器声明:

var musicPlayer: AVAudioPlayer = AVAudioPlayer()

【问题讨论】:

【参考方案1】:

如果您包含声明“musicPlayer”的代码,将会有所帮助。 崩溃后的错误日志说了什么?

我建议使用 MPVolumeView 类来控制您的音频。它应该控制我认为您正在寻找的设备音量。我附上了别人的帖子,有类似的问题。 来源:How to change ios volume in swift with help UISlider

【讨论】:

您好,感谢您的回复。我编辑了帖子并添加了声明。错误显示“musicPlayer.playing”行,线程1:EXC_BAD_ACCESS(代码=1,地址=0x38)

以上是关于如果在播放歌曲之前按下音量滑块,如何阻止音乐播放器崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

使用 MPVolume 为音乐播放器调整音量,iOS

如何在kivy python中使用滑块作为进度条并控制音频?

Qt音乐播放器

Java课程设计------音乐播放器

怎样用MFC做一个音乐播放器,可以实现播放,暂停,上一首,下一首和显示播放列表的基本功能。谢谢!

如何更改锁定屏幕/控制中心的轨道位置?