U
U
uzolenta2019-04-08 12:09:54
Swift
uzolenta, 2019-04-08 12:09:54

How to listen to the click of the headset (headphones)?

How to program actions for pressing buttons (pause, play, stop) on the headset (headphones)?
Is it possible? if so, tell me where to dig or give the code, please.
Is it possible to control the application through the headset if the phone is turned off (the screen is wide) and the application is just open or in the background?
Thank you very much in advance.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
U
uzolenta, 2019-05-03
@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
            }
            
        }
    }
    
 
    
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question