Для прослушивания нажатия гарнитуры (наушников) в приложении, разработанном на языке программирования Swift, нужно создать экземпляр класса AVAudioSession
и настроить его для воспроизведения звука.
1. Импортируйте фреймворк AVFoundation в начало файла:
import AVFoundation
2. Создайте экземпляр класса AVAudioSession
и установите категорию playback
. Установите его как активный и установите делегата для обработки событий аудиосессии:
do { let audioSession = AVAudioSession.sharedInstance() try audioSession.setCategory(.playback) try audioSession.setActive(true) audioSession.addObserver(self, forKeyPath: "outputVolume", options: .new, context: nil) } catch { print("Ошибка при настройке аудиосессии: (error.localizedDescription)") }
3. В вашем классе реализуйте метод observeValue(forKeyPath:keyPath:of:change:context:)
, чтобы обнаружить изменение громкости звука:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { guard let keyPath = keyPath, keyPath == "outputVolume", let change = change, let newVolume = change[.newKey] as? Float else { return } // делайте что-то, что нужно при изменении громкости звука print("Громкость звука изменилась: (newVolume)") }
4. Поместите код из шагов 2 и 3 в нужные методы вашего класса (например, в метод viewDidLoad
).
Теперь ваше приложение будет обнаруживать изменения громкости звука, включая нажатия на кнопки гарнитуры.
Обратите внимание, что для работы класса AVAudioSession
и слежения за изменением громкости звука, ваше приложение должно иметь соответствующие разрешения и права доступа в настройках устройства пользователя.