Задать вопрос

Как слушать нажатие гарнитуры (наушников)?

Как запрограммировать действия на нажатие кнопок (пауза, плэй, стоп) на гарнитуре (наушниках)?
Возможно ли это? если да, то скажите куда копать или дайте код, пожалуйста.

Возможно ли управление приложением через гарнитуру, если телефон выключен (экран всм) и приложение просто открыто или в бэкграунде?

Заранее большое спасибо.
  • Вопрос задан
  • 400 просмотров
Подписаться 4 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    iOS-разработчик с нуля
    11 месяцев
    Далее
  • Академия Эдюсон
    IOS-Разработчик: тариф Базовый
    7 месяцев
    Далее
  • Merion Academy
    iOS-разработчик с нуля
    4 месяца
    Далее
Решения вопроса 1
@uzolenta Автор вопроса
import UIKit
import MediaPlayer
import AVFoundation

class testVC: UIViewController, {
    
    private var audioLevel : Float = 0.0
    @IBOutlet weak var label1: UILabel!
    var imagePicker: UIImagePickerController!
    
    @IBOutlet weak var imageView: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    override func viewWillAppear(_ animated: Bool) {
        listenVolumeButton()
    }
    
    func listenVolumeButton(){
        
        let audioSession = AVAudioSession.sharedInstance()
        do {
            try audioSession.setActive(true, options: [])
            audioSession.addObserver(self, forKeyPath: "outputVolume",
                                     options: NSKeyValueObservingOptions.new, context: nil)
            audioLevel = audioSession.outputVolume
        } catch {
            print("Error")
        }
    }
    
    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "outputVolume"{
             print("GoodBye")
            
            let audioSession = AVAudioSession.sharedInstance()
            if audioSession.outputVolume > audioLevel {
                print("Hello")
                audioLevel = audioSession.outputVolume
            }
            if audioSession.outputVolume < audioLevel {
                print("GoodBye")
                audioLevel = audioSession.outputVolume
            }
            if audioSession.outputVolume > 0.999 {
                (MPVolumeView().subviews.filter{NSStringFromClass($0.classForCoder) == "MPVolumeSlider"}.first as? UISlider)?.setValue(0.9375, animated: false)
                audioLevel = 0.9375
            }
            
            if audioSession.outputVolume < 0.001 {
                (MPVolumeView().subviews.filter{NSStringFromClass($0.classForCoder) == "MPVolumeSlider"}.first as? UISlider)?.setValue(0.0625, animated: false)
                audioLevel = 0.0625
            }
            
        }
    }
    
 
    
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы