如何检测音量上下是不是被按下
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 函数。但是该方法没有观察到任何事件。以上是关于如何检测音量上下是不是被按下的主要内容,如果未能解决你的问题,请参考以下文章