2017-04-21 11 views
2

こんにちは、関連する質問はたくさんありますが、ボリュームボタンで写真を撮る方法を明確に示す人はいません。iOS。ボリュームボタンで写真をキャプチャする

現在、私はAVAudioSessionインスタンスにオブザーバーを追加するが、それは、最大と最小のボリューム値に取り組み、カメラを超えるボリュームの状態シャドウポップアップを示すようではありません。

private func setupButtonsListener(){ 
    do { 
     let audioSession = AVAudioSession.sharedInstance() 
     try audioSession.setActive(true) 

     audioSession.addObserver(self, forKeyPath: "outputVolume", options: NSKeyValueObservingOptions.new, context: nil) 
    } catch { 
     print("Error") 
    } 

} 

それから私は、関数の中でイベントを処理: 1.仕事でも最大値/最小音量値に達し:

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 
    if keyPath == "outputVolume" { 
     capturePhoto() // Same function which I use for capturing photo for screen button. 
    } else { 
     super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) 
    } 
} 

はあなたが私にする任意のソリューションをお勧めでした。 2.ボリューム値のポップアップが画面に表示されません。

EDIT:

@ jayesh-kanzariya答え私はスウィフトにJPSVolumeButtonHandlerを使用する方法の追加に基づく:

  1. あなたのポッドファイルにpod 'JPSVolumeButtonHandler'を追加します。プロジェクトのルートで
  2. プロジェクトとそこに追加するファイルを橋渡しpod install
  3. 設定を実行:完了

    import JPSVolumeButtonHandler 
    
    class YourViewController { 
        var volumeHandler: JPSVolumeButtonHandler? 
    
        override func viewDidLoad() { 
         super.viewDidLoad() 
    
         self.volumeHandler = JPSVolumeButtonHandler(up: {self.capturePhoto()}, downBlock: {self.capturePhoto()}) 
    
         ... 
        }  
    } 
    

:あなたは#import <JPSVolumeButtonHandler/JPSVolumeButtonHandler.h>

  • すると、次のコードを追加しますのViewController!

  • 答えて

    1

    1)音量の変更について 独自の「MPVolumeView」を実装する必要があります。このビューが可視範囲外にあることを確認してください(アルファベットを0に設定するか、非表示にするとビューが無効になり、よく知られているリンゴのボリュームコントロール) 例-20を、Xオフセット、Y-offsrt -20と幅/高さは、すでにオブザーバーとして登録されているとして、それが最大/最小 に達している場合でも、音量変化のための継続的な更新を取得するための)0

    import MediaPlayer 
    
    let volumeView = MPVolumeView() 
    volumeView.frame = CGRect(x: -20, y: -20, width: 0, height: 0); 
    

    2等しいですAVAudioSessionの場合イベントを受け取った直後に、AVAudioSessionの音量を0.1から0.9の間の値にリセットします(ボリュームの増減に必要なもの)。

    case let volumeSlider as UISlider in volumeView.subviews { 
        volumeSlider.value = 0.2 
    } 
    
    関連する問題