i am able to implement buttonactions,tableview,textfields ,switch... all are working fine in ActionExtension
BUT
Scan Functionality doesn't work (no camera opening to scan ) in Action Extension . Below i shared my scanning code in swift and screenshot of my Extension
Declarations :
var scannedBarcode = NSString(string: "")
var scannedMetadataOutput = AVCaptureMetadataOutput()
var gCaptureMetadataOutput = AVCaptureMetadataOutput()
var _prevLayer = AVCaptureVideoPreviewLayer()
var _session = AVCaptureSession()
Scan Button Action Code :
@IBAction func scanExtenAction(sender: AnyObject) {
scanExtAction.enabled = false
var error:NSError? = nil
//let _input = (try! AVCaptureDeviceInput.deviceInputWithDevice(gCaptureDevice))
let _input = (try! AVCaptureDeviceInput.init(device: gCaptureDevice))
if _session.canAddInput(_input)
{
_session.addInput(_input)
}
var _output = AVCaptureMetadataOutput()
gCaptureMetadataOutput.setMetadataObjectsDelegate(self, queue: dispatch_get_main_queue())
if _session.canAddOutput(gCaptureMetadataOutput)
{
_session.addOutput(gCaptureMetadataOutput)
}
// gCaptureMetadataOutput.metadataObjectTypes = gCaptureMetadataOutput.availableMetadataObjectTypes
gCaptureMetadataOutput.metadataObjectTypes = gCaptureMetadataOutput.availableMetadataObjectTypes
_prevLayer = AVCaptureVideoPreviewLayer(layer: _session) as AVCaptureVideoPreviewLayer
//_prevLayer.frame = self.view.bounds
//_prevLayer.frame = CGRectMake( DEVICE_WIDTH * 0.10 , DEVICE_HEIGHT * 0.10, DEVICE_WIDTH * 0.8, DEVICE_HEIGHT * 0.4 )
_prevLayer.frame = CGRectMake(0 , 0, 280, 300 )
_prevLayer.cornerRadius = 10
_prevLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
self.view.layer.addSublayer(_prevLayer)
_session.startRunning()
}