【问题标题】:How to adjust the sound volume change with the Slider for MPNowPlayingInfoCenter如何使用 MPNowPlayingInfoCenter 的滑块调整音量变化
【发布时间】:2020-08-03 10:44:52
【问题描述】:

我从 audioSession 中获取声音值并将其放入 Slider。但是我怎么能做相反的事情呢? 如果我将滑块中的值传递给 player.volume,音量会发生变化,但是当 MPNowPlayingInfoCenter 运行时,这些变化在其中不可见。如果我用硬件按钮更改音量,滑块中也看不到更改。 我需要将所有音量更改链接到一个。这样当我更改 Slider 的值时,MPNowPlayingInfoCenter 中的声音会发生变化。 感谢您的任何建议。 我的代码:

...
var outputVolumeObserve: NSKeyValueObservation?
let audioSession = AVAudioSession.sharedInstance()

func listenVolumeButton() {
        do {
            try audioSession.setActive(true)
        } catch {}

        outputVolumeObserve = audioSession.observe(\.outputVolume) { (audioSession, changes) in
            self.volumeSlider.value = audioSession.outputVolume
        }
    }

@IBAction func handleVolumeSlider(_ sender: Any) {
        player.volume = volumeSlider.value
   }

【问题讨论】:

    标签: swift avplayer iso mpnowplayinginfocenter


    【解决方案1】:

    我通过改变 MPVolumeView 的音量值解决了这个问题:

    extension MPVolumeView {
        static func setVolume(_ volume: Float) {
            let volumeView = MPVolumeView()
            let slider = volumeView.subviews.first(where: { $0 is UISlider }) as? UISlider
    
            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.01) {
                slider?.value = volume
            }
        }
    }
    
    ...
    @IBAction func handleVolumeSlider(_ sender: Any) {
            MPVolumeView.setVolume(volumeSlider.value)
        }
    

    【讨论】:

      猜你喜欢
      • 2013-10-09
      • 2016-10-31
      • 2014-08-18
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      相关资源
      最近更新 更多