簡體   English   中英

Slider for MPNowPlayingInfoCenter 如何調整音量變化

[英]How to adjust the sound volume change with the Slider for MPNowPlayingInfoCenter

我從 audioSession 中獲取聲音值並將其放入 Slider。但是我怎么能做相反的事情呢? 如果我將 slider 中的值傳遞給 player.volume,音量會發生變化,但是當 MPNowPlayingInfoCenter 運行時,這些變化在其中不可見。 如果我用硬件按鈕更改音量,更改在 slider 中也不可見。我需要將所有音量更改鏈接為一個。 這樣當我更改 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
   }

我通過更改 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)
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM