音量未更改时检测硬件音量按钮按下
Posted
技术标签:
【中文标题】音量未更改时检测硬件音量按钮按下【英文标题】:Detect hardware volume button press when volume not changed 【发布时间】:2020-01-13 14:44:06 【问题描述】:我需要检测音量按钮的点击。 Detect volume button press 中的解决方案,我仅在音量改变时才使用。我需要检测音量按钮点击。例如,当声音达到最大级别并且用户单击级别按钮时,此解决方案不起作用。
let audiosession = AVAudioSession.sharedInstance()
self.obs = audioSession.observe( \.outputVolume ) (av, change) in
print("volume \(av.outputVolume)")
是否有其他可行的解决方案来检测音量按钮按下?
【问题讨论】:
无论您是否找到检测方法,您都可能需要查看 Apple 的 Review Guidelines - 具体而言:2.5.9 更改或禁用标准开关的功能,例如音量增大/减小和响铃/静音开关,或其他本机用户界面元素或行为将被拒绝。 这能回答你的问题吗? Detect volume button press 我不想更改或禁用标准卷的功能。我只需要检测点击,以防音量没有改变。 Instagram 应用在这种情况下检测音量按钮点击(当音量最大时) ***.com/questions/28471481/detect-volume-button-press 在此解决方案中检测更改音量,并且在音量未更改时不起作用。例如,当声音最大并且用户点击时 【参考方案1】:let volumeView = MPVolumeView(frame: CGRect.zero)
self.view.addSubview(volumeView)
NotificationCenter.default.addObserver(self, selector: #selector(volumeChanged(_:)), name: NSNotification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
无论音量如何,每次按下都会调用它
@objc func volumeChanged(_ notification: NSNotification)
if let volume = notification.userInfo!["AVSystemController_AudioVolumeNotificationParameter"] as? Float
print("volume: \(volume)")
输出:
volume: 0.8125
volume: 0.875
volume: 0.9375
volume: 1.0
volume: 1.0
volume: 1.0
volume: 1.0
【讨论】:
此观察者从未调用过 iPhoneXR 和 IOS 13.3 在模拟器中还是在实际设备上? 谢谢你,它的作品。我在执行中犯了错误 *** 上其他主题的最佳解决方案(> 比第 1.0 卷)也被检测到。 别忘了在顶部导入 MediaPlayer。以上是关于音量未更改时检测硬件音量按钮按下的主要内容,如果未能解决你的问题,请参考以下文章