Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect volume button press

Tags:

Volume button notification function is not being called.

Code:

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") } 

listenVolumeButton() is being called in viewWillAppear

The code is not getting to the print statement "got in here", in either case.

I am trying two different ways to do it, neither way is working.

I have followed this: Detect iPhone Volume Button Up Press?

like image 938
AustinT Avatar asked Feb 12 '15 07:02

AustinT


People also ask

How do I find the volume button press in flutter?

listen((volume) { //volume button is pressed, // this listener will be triggeret 3 times at one button press }); This listener will be triggered three times for system volume, music volume, and alarm volume. We have done a few tweaks to identify which button is pressed, either the volume or volume down button.

Why is my volume not changing when I press the button?

Try rebooting your phone by long pressing your power button for about thirty seconds till a menu comes, then click on restart or switch your phone off and on again. Rebooting your phone helps restart all background services and the software of your phone.


1 Answers

Using the second method, the value of the key path should be "outputVolume". That is the property we are observing. So change the code to,

var outputVolumeObserve: NSKeyValueObservation? let audioSession = AVAudioSession.sharedInstance()  func listenVolumeButton() {     do {         try audioSession.setActive(true)     } catch {}      outputVolumeObserve = audioSession.observe(\.outputVolume) { (audioSession, changes) in         /// TODOs     } } 
like image 129
rakeshbs Avatar answered Sep 25 '22 15:09

rakeshbs