【问题标题】:How to detect the volume up and down is pressed如何检测音量上下是否被按下
【发布时间】:2019-08-27 11:19:11
【问题描述】:

当 iPhone 处于静音状态时,按下音量增大按钮后手机会进入振铃状态。如何捕捉按下此音量按钮?是否有任何方法可以在播放任何媒体时捕捉按下的按钮。我已经尝试过代码,并且它正在工作,物理静音键正在运行,即当我使用物理静音开关使手机静音时,媒体播放器声音关闭,然后我再次使用开关使其响铃,然后声音再次开启。但是当它处于静音状态时,按下音量增大按钮,iPhone 会进入铃声模式,但媒体播放器的声音仍然关闭。

我正在使用 AVAudioPlayer 播放媒体。我尝试过使用它,但除了上述情况外,它不起作用。我也使用了 AVSystemController_SystemVolumeDidChangeNotification 但它也不能正常工作,因为该方法已被弃用,Apple 没有提供任何控制权或在按下硬件按钮时获得任何通知。

    do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.soloAmbient)
    } catch {
        print("AVAudioSessionCategorySoloAmbient not work")
    }

【问题讨论】:

标签: ios swift iphone xcode avaudiosession


【解决方案1】:
func observeVolumeButton(){

    let audioSession = AVAudioSession.sharedInstance()
    audioSession.setActive(true, error: nil)
    audioSession.addObserver(self, forKeyPath: "volume",
        options: NSKeyValueObservingOptions.New, context: nil)
}

override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject,
    change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
    if keyPath == "volume"{
        //see the volume here
    }
}

【讨论】:

  • 在 AppDelegate 中编写了一组代码,并在 didfinishLaunchingwithoptions 上调用了 observeVolumeButton 函数。但是该方法没有观察到任何事件。
猜你喜欢
  • 1970-01-01
  • 2015-04-12
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多