作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
使用以下代码,我得到了输出音量,但它确实不一致 - 有时它给出相同的值,有时它是一个落后的音量变化,尽管系统音量实际上是正确变化的。
有什么办法让它每次都输出正确的值?
func viewDidLoad() {
...
NotificationCenter.default.addObserver(self, selector: #selector(volumeDidChange), name: NSNotification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
...
}
func volumeDidChange() {
print("VOLUME CHANGING", AVAudioSession.sharedInstance().outputVolume)
// output while changing the volume with hardware buttons
VOLUME CHANGING 0.0625
VOLUME CHANGING 0.0625
VOLUME CHANGING 0.125
VOLUME CHANGING 0.1875
VOLUME CHANGING 0.25
VOLUME CHANGING 0.375
VOLUME CHANGING 0.375
VOLUME CHANGING 0.4375
VOLUME CHANGING 0.5
VOLUME CHANGING 0.5625
VOLUME CHANGING 0.625
VOLUME CHANGING 0.6875
VOLUME CHANGING 0.75
VOLUME CHANGING 0.8125
VOLUME CHANGING 0.875
VOLUME CHANGING 0.75
VOLUME CHANGING 0.6875
VOLUME CHANGING 0.625
VOLUME CHANGING 0.625
VOLUME CHANGING 0.5625
VOLUME CHANGING 0.5
VOLUME CHANGING 0.4375
VOLUME CHANGING 0.375
VOLUME CHANGING 0.3125
VOLUME CHANGING 0.375
VOLUME CHANGING 0.4375
VOLUME CHANGING 0.4375
最佳答案
尝试
import AVFoundation
import MediaPlayer
//MARK: Did Load
override func viewDidLoad() {
super.viewDidLoad()
/// Volume View
let volumeView = MPVolumeView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
volumeView.isHidden = false
volumeView.alpha = 0.01
view.addSubview(volumeView)
/// Notification Observer
NotificationCenter.default.addObserver(self, selector: #selector(self.volumeDidChange(notification:)), name: NSNotification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
}
@objc func volumeDidChange(notification: NSNotification) {
//print("VOLUME CHANGING", AVAudioSession.sharedInstance().outputVolume)
let volume = notification.userInfo!["AVSystemController_AudioVolumeNotificationParameter"] as! Float
print("Device Volume:\(volume)")
}
您当前的输出 - 重复相同的值
要求的输出
关于ios - AVAudioSession.sharedInstance().outputVolume 未始终返回正确的音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51034452/
我有一个 watchOS 应用程序通过以下方式从 iPhone 父应用程序请求当前音量: session?.sendMessage(["getVolume":1], replyHandler: {
SO 上有很多问题和答案说 [AVAudioSession sharedInstance].outputVolume 是检测设备音量的唯一方法。但它似乎不太正确。 outputVolume 永远不会改
使用以下代码,我得到了输出音量,但它确实不一致 - 有时它给出相同的值,有时它是一个落后的音量变化,尽管系统音量实际上是正确变化的。 有什么办法让它每次都输出正确的值? func viewDidLoa
我在 View 加载时激活了 Audio Session (激活 Audio Session 时没有错误): [[AVAudioSession sharedInstance] setActive:YE
我是一名优秀的程序员,十分优秀!