sol*_*oid 5 ios avaudiosession swift
通过以下代码,我得到了输出音量,但实际上是不一致的-有时它给出相同的值,有时尽管系统音量实际上正确更改,但后面却有音量变化。
有什么办法让它每次输出正确的值?
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
Run Code Online (Sandbox Code Playgroud)
尝试
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)")
}
Run Code Online (Sandbox Code Playgroud)
您当前的输出- 重复相同的值
所需输出