【问题标题】:How to detect volume button press on tvOS remote如何检测 tvOS 遥控器上的音量按钮按下
【发布时间】:2020-12-01 10:57:51
【问题描述】:

我试图找到一种观察播放器的方法,以便我可以检测到用户何时增加或减少 Apple TV 的音量。我已经设法通过使用以下方法使其适用于 iOS:


 var audioSession: AVAudioSession?

 audioSession?.addObserver(self, forKeyPath: "outputVolume", options: [.new], context: &videoPlayerViewControllerKVOContext)


 if keyPath == "outputVolume" {
        guard let mute = (change?[NSKeyValueChangeKey.newKey] as? NSNumber)?.floatValue else {
            return
        }
        
        var isMuted = false
        
        if (mute == 0) && (!player.isMuted) {
            isMuted = true
        } else if (mute.isZero) && (player.isMuted) {
            isMuted = false
        }
        
    }

但这不适用于 tvOS。有没有办法在 tvOS 上做到这一点?

【问题讨论】:

    标签: swift avplayer tvos avqueueplayer


    【解决方案1】:

    其他代码不清楚,但你必须保持对创建的观察者的引用。

    这是可能的解决方案(使用 Xcode 12.1 测试)

    private var observer: NSKeyValueObservation?
    
    // ... other code
    
    self.observer = audioSession?.observe(\.outputVolume) { [weak self] (audioSession, _) in
        guard let `self` = self else { return }
        let mute = audioSession.outputVolume
        
        var isMuted = false
        if (mute == 0) && (!self.player.isMuted) {
            isMuted = true
        } else if (mute.isZero) && (self.player.isMuted) {
            isMuted = false
        }
        
        // do what's needed here with `isMuted`
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-13
      • 2016-03-12
      • 2015-04-12
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      相关资源
      最近更新 更多