相关疑难解决方法(0)

检测音量按钮按下

未调用音量按钮通知功能.

码:

func listenVolumeButton(){
    // Option #1
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "volumeChanged:", name: "AVSystemController_SystemVolumeDidChangeNotification", object: nil)
    // Option #2
    var audioSession = AVAudioSession()
    audioSession.setActive(true, error: nil)
    audioSession.addObserver(self, forKeyPath: "volumeChanged", options: NSKeyValueObservingOptions.New, context: nil)
}

override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
    if keyPath == "volumeChanged"{
        print("got in here")
    }
}

func volumeChanged(notification: NSNotification){
   print("got in here")
}
Run Code Online (Sandbox Code Playgroud)

listenVolumeButton() 正在viewWillAppear中调用

"got in here"在任何一种情况下,代码都没有进入print语句.

我正在尝试两种不同的方法来实现它,两种方式都不起作用.

我跟着这个:检测iPhone音量按钮向上按?

ios swift ios8

13
推荐指数
4
解决办法
1万
查看次数

聆听音量按钮按下的正确方式(iOS 15)

我用过

NotificationCenter.default.addObserver(self, selector: #selector(volumeChanged(_:)), name: NSNotification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
Run Code Online (Sandbox Code Playgroud)

过去可以听到音量控制变化,但这在 iOS 15 中不再起作用。

仅当您不关心用户在最大音量时按下音量时,下面的替代代码才有效。但是,我确实想知道每次按下按钮时的情况。

AVAudioSession.sharedInstance().addObserver(self, forKeyPath: "outputVolume", options: NSKeyValueObservingOptions.new, context: nil)
Run Code Online (Sandbox Code Playgroud)

即使音量处于最大/最小,聆听用户按下音量控制按钮的正确方法是什么?

avaudioplayer ios avaudiosession swift

13
推荐指数
1
解决办法
2148
查看次数

标签 统计

ios ×2

swift ×2

avaudioplayer ×1

avaudiosession ×1

ios8 ×1