2017-03-23 1 views
0

Je crée une application avec swift 3, xCode 8.2 et IOS10. L'interface dispose d'un écran de vision thermique (FLIR ONE). Ma question est, comment puis-je prendre une photo? Mon code est:IOS 10 - Swift 3.0: Arrête la fonction déléguée pour enregistrer l'image

import UIKit 

class ThermalCameraVC: UIViewController, FLIROneSDKImageReceiverDelegate, FLIROneSDKStreamManagerDelegate { 


    //MARK: OUTLETS 
    @IBOutlet weak var imageView: UIImageView! 
    @IBOutlet weak var labelStatusCamera: UITextField! 
    @IBOutlet weak var labelCargeCamera: UITextField! 
    @IBOutlet weak var icnCancelPicture: UIButton! 
    @IBOutlet weak var icnUploadPicture: UIButton! 
    @IBOutlet weak var iconTakePicture: UIButton! 


    //MARK: VARIABLES 
    var simulatorStatus = false 
    var cameraBussy = false 


    override func viewDidLoad() { 
     super.viewDidLoad() 
     FLIROneSDKStreamManager.sharedInstance().addDelegate(self) 
     FLIROneSDKStreamManager.sharedInstance().imageOptions = FLIROneSDKImageOptions(rawValue: FLIROneSDKImageOptions.blendedMSXRGBA8888Image.rawValue)! 

     icnCancelPicture.isHidden = true 
     icnUploadPicture.isHidden = true 
    } 

    //MARK: CANCEL PICTURE 
    @IBAction func cancelPicture(_ sender: Any) { 
     cameraBussy = false 
    } 


    //MARK: UPLOAD PICTURE AMAZON S3 
    @IBAction func uploadPicture(_ sender: Any) { 


    } 

    func flirOneSDKDelegateManager(_ delegateManager: FLIROneSDKDelegateManager!, didReceiveBlendedMSXRGBA8888Image msxImage: Data!, imageSize size: CGSize){ 
    let image = FLIROneSDKUIImage(format: FLIROneSDKImageOptions.blendedMSXRGBA8888Image, andData: msxImage, andSize: size) 

     //HERE I NEED TO STOP THE DELEGATED FUNCTION TO SAVE THE IMAGE !! 
     if self.cameraBussy{ 
      //cameraBussy = false 

     }else{ 
      DispatchQueue.main.async{ 

       self.imageView.image = image 
      } 

     } 
    } 

    @IBAction func takeThermalPicture(_ sender: Any) { 
     cameraBussy = true 
     icnCancelPicture.isHidden = false 
     icnUploadPicture.isHidden = false 
     iconTakePicture.isHidden = true 
    } 

    } 

Comment puis-je arrêter le flux de données dans cette fonction déléguée? Parce qu'il appelle continuellement.

+0

Voulez-vous appeler la fonction déléguée flirOneSDKDelegateManager une seule fois? – adarshaU

+0

Je veux arrêter la fonction de délégué lorsque l'usager appuie sur la touche de la caméra. Parce que dans ce moment sera l'utilisateur a besoin de cette trame pour envoyer à API Rest. –

Répondre

0

Définissez la valeur du délégué sur zéro.

@IBAction func takeThermalPicture(_ sender: Any) { 

     FLIROneSDKStreamManager.sharedInstance().addDelegate(nil) 
     cameraBussy = true 
     icnCancelPicture.isHidden = false 
     icnUploadPicture.isHidden = false 
     iconTakePicture.isHidden = true 

    }