Обнаружение аппаратного нажатия кнопки громкости, когда громкость не изменилась - PullRequest
0 голосов
/ 13 января 2020

Мне нужно обнаружить нажатие кнопки громкости звука. Решение в Обнаружить нажатие кнопки громкости и используемая мной работа только при изменении громкости звука. Мне нужно обнаружить нажатие кнопки громкости звука. Например, когда звук имеет максимальный уровень и пользователь нажимает кнопку повышения уровня, это решение не сработало.

 let audioSession = AVAudioSession.sharedInstance()
    self.obs = audioSession.observe( \.outputVolume ) { (av, change) in
    print("volume \(av.outputVolume)")
 }

Существуют ли другие рабочие решения для обнаружения нажатия кнопки громкости звука?

1 Ответ

1 голос
/ 13 января 2020
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...