如何检测音量上下是不是被按下

Posted

技术标签:

【中文标题】如何检测音量上下是不是被按下【英文标题】: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")
    

【问题讨论】:

看到这个寻求帮助:detect up volume change swift ***.com/a/28474014/4350052 为我工作 我猜你想在物理静音打开的情况下播放音频对吧?在这种情况下你应该使用AVAudioSession.Category.playback Detect volume button press的可能重复 【参考方案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 函数。但是该方法没有观察到任何事件。

以上是关于如何检测音量上下是不是被按下的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言检测鼠标右键是不是被按下了

如何检测 Ctrl+R 被按下?

检测功能键被按下的最佳方法是啥?

如何使用 GetAsyncKeyState 查看按键被按下了 x 秒

如何检测网站上是不是按下了退格键?

检测iPad的屏幕何时关闭或Unity中的Home按钮被按下事件?